O que é um banco de dados relacional? [fechadas]

9

Sou principalmente um administrador de sistema e não trabalho diretamente com bancos de dados além de instalá-los, configurar contas, conceder privilégios e assim por diante. Percebi que se o The Boss se aproximasse de mim e perguntasse: "O que é um banco de dados relacional?" Provavelmente eu não poderia dar uma resposta satisfatória ... Talvez eu murmure algo sobre os dados serem armazenados e organizados por categorias que você pode consultar com uma linguagem de programação especial (ou seja, SQL).

Então, alguém poderia dar uma boa "resposta do chefe" para o que é um banco de dados relacional? E talvez como seja diferente do que apenas armazenar dados em um servidor de arquivos? Pontos de bônus por analogias inteligentes, mas acessíveis, e tabelas, colunas, registros e campos de explicação. Eu definiria uma "Resposta do chefe" como uma explicação rápida (talvez dois) de parágrafos para pessoas não técnicas ... principalmente o seu chefe, nas raras ocasiões em que eles realmente perguntam o que você faz o dia todo.


fonte
2
Não tenho certeza se serverfault é o lugar certo para esta pergunta, por mais útil que seja. Talvez DBA.SE ou Programmers.SE .
Orbling 13/03/11
1
Por que seu chefe faria essa pergunta e, ainda mais importante, o que isso tem a ver com a administração do sistema?
John Gardeniers 13/03
1
@ John Gardeniers, pode pertencer aqui porque muitos 'administradores de sistemas' usam um chapéu de 'administração de banco de dados', o que significa que eles têm um bom entendimento de como o RDBMS funciona. Quanto ao motivo pelo qual os chefes fazem perguntas, quem sabe, mas saber comunicar claramente os conceitos é uma coisa boa da IMO.
Zoredache
1
@ Zoredache, no meu trabalho eu uso muitos chapéus. Isso não significa que eles estão todos no tópico para SF.
John Gardeniers
As respostas abaixo são muito boas, mas lembre-se de que você pode ter bancos de dados não relacionais (como o btrieve) e ainda manter relacionamentos entre os dados normalizados através da lógica apropriada do aplicativo.
Mark Henderson

Respostas:

16

Um banco de dados relacional não apenas armazena dados : ele armazena relacionamentos entre dados e facilita (bem, mais fácil) o uso desses relacionamentos. Nos primeiros dias da terminologia de banco de dados relacional, as tabelas eram chamadas de "relações" porque armazenavam bits de dados relacionados (campos, agora colunas), juntamente com os relacionamentos entre essa relação e outras relações.

Normalização é o ato de relações descomplicadas: "Torne tudo o mais simples possível, mas não mais simples". (Alan Perlis) Às vezes "... mas não mais simples" significa que não armazenamos as coisas totalmente normalizadas, porque "mais simples" acaba sendo mais complexo. (Você pode derivar o estado do CEP, mas por que se preocupar?)

geekosaur
fonte
10

Um banco de dados relacional é um método de estruturação de dados para que um único fato seja armazenado em um único local. Portanto, se John e Jane Doe trabalharem para a mesma empresa, você só armazenaria detalhes exclusivos da empresa em um só lugar (tabela). Você armazenaria dados exclusivos para John e Jane em outro local, e armazenaria o relacionamento de John e Jane com a empresa em um terceiro lugar. No mundo ideal, isso significa que eu só preciso modificar um único campo / linha se o número de fax da empresa for alterado.

Por favor, entenda que nem todos os bancos de dados hospedados em um RDBMS estão adequadamente normalizados. Compromissos são feitos por desempenho e outros motivos.

Veja o artigo sobre normalização do banco de dados. http://en.wikipedia.org/wiki/Database_normalization

Zoredache
fonte
4

Existem dois conceitos principais para distinguir os sistemas de banco de dados de relações. A primeira é que as relações entre os itens são armazenadas. Esse é o modelo de tabela de dados, explicado através da analogia da planilha. Os RDBMSs ficam mais complexos que as planilhas, porque é mais fácil e comum ter muitas referências entre tabelas ou planilhas (dependendo do lado da analogia que você está usando).

A segunda é que os RDBMSs implementam a ideia de uma transação, as propriedades ACID de

  • atomicidade,
  • consistência,
  • isolamento e
  • durabilidade

O modelo relacional permite que muitos relacionamentos complexos sejam incluídos, consultados, classificados, agrupados por e assim por diante. O modelo transacional garante que as transações ocorram completamente ou não sejam reais, mantendo o modelo de relacionamento consistente e preciso. Bem, pelo menos tornando possível a programação correta para mantê-lo assim.

mpez0
fonte
3

Um banco de dados relacional é como uma pasta de trabalho do Excel com muitas planilhas e um ambiente de software circundante para fazer otimizações de desempenho, como indexação e armazenamento em cache, reforçar o acesso seguro por muitos usuários ao mesmo tempo e permitir a visualização eficiente de dados que podem ser espalhados em muitas das diferentes planilhas.

Joel Coel
fonte
1

Uma base de dados relacionais é uma ferramenta para armazenar e recuperar dados armazenados em um modelo relacional.

Um modelo relacional de dados é construído de acordo com um número pequeno (dependendo do livro que você lê, 4 ou 5 regras) que garante que os dados possam ser acessados ​​de maneira consistente, o que permite a comprovação da correção do projeto e permite o sistema de gerenciamento de banco de dados (DBMS) para executar a maior parte do trabalho na recuperação dos dados rapidamente. Ele também fornece ferramentas para documentar formalmente a estrutura dos dados - a implementação de um banco de dados implementa intrinsecamente a maior parte da documentação.

A maioria das pessoas não entende por que a correção é importante - significa que é menos provável que os bugs sejam introduzidos no desenvolvimento de uma solução - e que (por exemplo, 2 programadores diferentes que trabalham em áreas semelhantes) têm menos probabilidade de duplicar esforços.

Como uma entidade separada do front-end do aplicativo e com uma visão consistente da estrutura dos dados, o uso de um sistema de gerenciamento de banco de dados permite que diferentes ferramentas sejam usadas no front-end para diferentes fins - para que você possa fazer muito mais uso componentes de prateleira ao criar uma solução.

Existem outros modelos além do relacional para armazenamento de dados - mas nenhum (na minha experiência) se aproxima tanto quanto à simplicidade, flexibilidade e disponibilidade de ferramentas para desenvolver e gerenciar seus dados.

symcbean
fonte
1

Uma resposta 100% não técnica:

Um banco de dados relacional é um local para armazenar dados de forma a minimizar a redundância e permitir que você os pesquise com facilidade.

Suponha um banco de dados para uma loja de animais. A loja tem itens, clientes e vendas. Se colocarmos isso no Excel, você pode ter isso para colunas:

Nome do cliente | Número de telefone do cliente | Endereço do cliente | Item comprado | Preço | Encontro

O primeiro cliente, a senhora Smith, compra comida de gato:

Nome do cliente | Número de telefone do cliente | Endereço do cliente | Item comprado | Preço | Encontro
Senhora Smith | 123-555-1234 10 Main St | Comida de gato | $ 15 | 11-03-2011

E então a Sra. Smith também gostaria de um brinquedo de gato:

Nome do cliente | Número de telefone do cliente | Endereço do cliente | Item comprado | Preço | Encontro
Senhora Smith | 123-555-1234 10 Main St | Comida de gato | $ 15 | 11-03-2011
Senhora Smith | 123-555-1234 10 Main St | Brinquedo de gato | $ 1 | 11-03-2011

E ela basicamente volta a cada 2 semanas mais ou menos e compra as mesmas coisas. Com esse método, você duplica muitas informações e isso pode levar a erros. Você também não pode armazenar um inventário nisso, ele deve ser uma outra folha do Excel e essa deverá ser atualizada a cada venda.

Com um banco de dados, poderíamos ter três entidades separadas: Clientes (com suas informações), Itens (com uma descrição e um preço) e Venda (um link entre clientes e itens, com data e quantidade).

MPelletier
fonte
Além disso, isso é muito importante mencionar: pinaldave.com/blogfolder/dilbert5.jpg
MPelletier
1

Algumas boas respostas técnicas aqui. Mas meu chefe não entenderia nenhum deles!

Eu começaria com uma explicação extremamente simples - 'Se você salvar seus dados em um arquivo, eles aparecerão como uma lista longa. Um banco de dados relacional salva os dados mais como um mapa ou gráfico, para que diferentes partes do mapa se vinculem .... '

E um exemplo - '.... por exemplo, seu nome está vinculado ao seu endereço, que por sua vez pode estar vinculado à sua cidade.'

Seguidos pelos benefícios comerciais de que ele se importa - 'A vantagem disso é que fica muito mais barato escrever código para obter dados complicados, por exemplo, "encontre todas as pessoas que moram em Seattle cujo sobrenome é Smith". Os bancos de dados relacionais também são muito confiáveis ​​e rápidos.

E termine com uma declaração de credibilidade - 'Os bancos de dados relacionais existem há muitos anos, são peças de tecnologia muito maduras. Nosso produto específico é [nome do produto aqui] '.

Jon White
fonte
0

Meu chefe é o DBA, mas em termos leigos:

Pense em duas tabelas no Excel e a função LOOKUP para referenciar itens de uma tabela para outra. Agora amplie isso em pelo menos um fator de 10.

Isso é sobre o nível do computador de algumas pessoas e do trabalho.

thing2k
fonte