Modelo de banco de dados - Database model

Um modelo de banco de dados é um tipo de modelo de dados que determina a estrutura lógica de um banco de dados . Ele basicamente determina de que maneira os dados podem ser armazenados, organizados e manipulados. O exemplo mais popular de um modelo de banco de dados é o modelo relacional , que usa um formato baseado em tabela.

Tipos

Modelos de dados lógicos comuns para bancos de dados incluem:

É a forma mais antiga de modelo de banco de dados. Foi desenvolvido pela IBM para IMS (Information Management System). É um conjunto de dados organizados em estrutura de árvore. O registro do banco de dados é uma árvore que consiste em muitos grupos chamados segmentos. Ele usa um para muitos relacionamentos. O acesso aos dados também é previsível.

Um banco de dados objeto-relacional combina as duas estruturas relacionadas.

Os modelos de dados físicos incluem:

Outros modelos incluem:

Relacionamentos e funções

Um determinado sistema de gerenciamento de banco de dados pode fornecer um ou mais modelos. A estrutura ideal depende da organização natural dos dados do aplicativo e dos requisitos do aplicativo, que incluem taxa de transação (velocidade), confiabilidade, capacidade de manutenção, escalabilidade e custo. A maioria dos sistemas de gerenciamento de banco de dados é construída em torno de um modelo de dados específico, embora seja possível que os produtos ofereçam suporte para mais de um modelo.

Vários modelos de dados físicos podem implementar qualquer modelo lógico fornecido. A maioria dos softwares de banco de dados oferece ao usuário algum nível de controle no ajuste da implementação física, uma vez que as escolhas feitas têm um efeito significativo no desempenho.

Um modelo não é apenas uma forma de estruturar dados: ele também define um conjunto de operações que podem ser executadas nos dados. O modelo relacional, por exemplo, define operações como selecionar ( projeto ) e juntar . Embora essas operações possam não ser explícitas em uma linguagem de consulta específica , elas fornecem a base sobre a qual uma linguagem de consulta é construída.

Modelo plano

Modelo de arquivo plano

O modelo simples (ou de tabela) consiste em uma única matriz bidimensional de elementos de dados , em que todos os membros de uma determinada coluna são considerados valores semelhantes e todos os membros de uma linha são considerados relacionados entre si. Por exemplo, colunas para nome e senha que podem ser usados ​​como parte de um banco de dados de segurança do sistema. Cada linha teria a senha específica associada a um usuário individual. As colunas da tabela geralmente têm um tipo associado a elas, definindo-as como dados de caracteres, informações de data ou hora, inteiros ou números de ponto flutuante. Este formato tabular é um precursor do modelo relacional.

Modelos de dados iniciais

Esses modelos eram populares nas décadas de 1960 e 1970, mas hoje em dia podem ser encontrados principalmente em sistemas legados antigos . Eles são caracterizados principalmente por serem navegacionais com fortes conexões entre suas representações lógicas e físicas e deficiências na independência de dados .

Modelo hierárquico

Modelo Hierárquico

Em um modelo hierárquico , os dados são organizados em uma estrutura semelhante a uma árvore , implicando em um único pai para cada registro. Um campo de classificação mantém os registros irmãos em uma ordem específica. Estruturas hierárquicas eram amplamente utilizadas nos primeiros sistemas de gerenciamento de banco de dados de mainframe, como o Information Management System (IMS) da IBM , e agora descrevem a estrutura de documentos XML . Essa estrutura permite o relacionamento um-para-muitos entre dois tipos de dados. Essa estrutura é muito eficiente para descrever muitos relacionamentos no mundo real; receitas, índice, ordenação de parágrafos / versos, qualquer informação aninhada e classificada.

Essa hierarquia é usada como a ordem física dos registros no armazenamento. O acesso ao registro é feito navegando para baixo pela estrutura de dados usando ponteiros combinados com acesso sequencial. Por causa disso, a estrutura hierárquica é ineficiente para certas operações de banco de dados quando um caminho completo (em oposição ao link ascendente e campo de classificação) também não está incluído para cada registro. Essas limitações foram compensadas em versões posteriores do IMS por hierarquias lógicas adicionais impostas na hierarquia física de base.

Modelo de rede

Modelo de rede

O modelo de rede expande a estrutura hierárquica, permitindo relacionamentos muitos-para-muitos em uma estrutura semelhante a uma árvore que permite vários pais. Era mais popular antes de ser substituído pelo modelo relacional e é definido pela especificação CODASYL .

O modelo de rede organiza os dados usando dois conceitos fundamentais, chamados registros e conjuntos . Os registros contêm campos (que podem ser organizados hierarquicamente, como na linguagem de programação COBOL ). Conjuntos (não devem ser confundidos com conjuntos matemáticos) definem relacionamentos um-para-muitos entre os registros: um proprietário, muitos membros. Um registro pode ser um proprietário em qualquer número de conjuntos e um membro em qualquer número de conjuntos.

Um conjunto consiste em listas circulares vinculadas em que um tipo de registro, o proprietário ou pai do conjunto, aparece uma vez em cada círculo, e um segundo tipo de registro, o subordinado ou filho, pode aparecer várias vezes em cada círculo. Desta forma, uma hierarquia pode ser estabelecida entre quaisquer dois tipos de registro, por exemplo, o tipo A é o proprietário de B. Ao mesmo tempo, outro conjunto pode ser definido onde B é o proprietário de A. Assim, todos os conjuntos compreendem um gráfico direcionado geral (propriedade define uma direção), ou construção de rede . O acesso aos registros é sequencial (geralmente em cada tipo de registro) ou por navegação nas listas circulares vinculadas.

O modelo de rede é capaz de representar redundância em dados de forma mais eficiente do que no modelo hierárquico, e pode haver mais de um caminho de um nó ancestral para um descendente. As operações do modelo de rede têm um estilo de navegação: um programa mantém uma posição atual e navega de um registro para outro seguindo os relacionamentos dos quais o registro participa. Os registros também podem ser localizados fornecendo valores-chave.

Embora não seja uma característica essencial do modelo, os bancos de dados de rede geralmente implementam os relacionamentos do conjunto por meio de ponteiros que direcionam diretamente a localização de um registro no disco. Isso oferece excelente desempenho de recuperação, às custas de operações como carregamento e reorganização do banco de dados.

Os produtos populares de DBMS que o utilizaram foram o Total da Cincom Systems e o IDMS da Cullinet . IDMS ganhou uma base de clientes considerável; na década de 1980, adota o modelo relacional e o SQL além de suas ferramentas e linguagens originais.

A maioria dos bancos de dados de objetos (inventados na década de 1990) usa o conceito de navegação para fornecer navegação rápida em redes de objetos, geralmente usando identificadores de objeto como ponteiros "inteligentes" para objetos relacionados. Objetividade / BD , por exemplo, implementa relacionamentos nomeados de um para um, um para muitos, muitos para um e muitos para muitos que podem cruzar bancos de dados. Muitos bancos de dados de objetos também oferecem suporte a SQL , combinando os pontos fortes de ambos os modelos.

Modelo de arquivo invertido

Em um arquivo invertido ou índice invertido , o conteúdo dos dados é usado como chave em uma tabela de pesquisa e os valores na tabela são indicadores para a localização de cada instância de um determinado item de conteúdo. Essa também é a estrutura lógica dos índices de banco de dados contemporâneos , que podem usar apenas o conteúdo de uma coluna específica na tabela de pesquisa. O modelo de dados de arquivo invertido pode colocar índices em um conjunto de arquivos ao lado de arquivos de banco de dados planos existentes, a fim de acessar diretamente de forma eficiente os registros necessários nesses arquivos.

Notável por usar este modelo de dados é o ADABAS DBMS da Software AG , introduzido em 1970. ADABAS ganhou uma base de clientes considerável e existe e é suportado até hoje. Na década de 1980, ele adotou o modelo relacional e SQL, além de suas ferramentas e linguagens originais.

Banco de dados orientado a documentos Clusterpoint usa invertido modelo de indexação para fornecer rápida pesquisa de texto completo para XML ou JSON dados objetos, por exemplo.

Modelo relacional

Duas mesas com um relacionamento

O modelo relacional foi introduzido por EF Codd em 1970 como uma forma de tornar os sistemas de gerenciamento de banco de dados mais independentes de qualquer aplicativo específico. É um modelo matemático definido em termos de lógica de predicados e teoria de conjuntos , e suas implementações têm sido usadas por sistemas mainframe, midrange e microcomputador.

Os produtos geralmente chamados de bancos de dados relacionais, na verdade, implementam um modelo que é apenas uma aproximação do modelo matemático definido por Codd. Três termos-chave são usados ​​extensivamente em modelos de banco de dados relacionais : relações , atributos e domínios . Uma relação é uma tabela com colunas e linhas. As colunas nomeadas da relação são chamadas de atributos, e o domínio é o conjunto de valores que os atributos podem assumir.

A estrutura de dados básica do modelo relacional é a tabela, onde as informações sobre uma entidade específica (digamos, um funcionário) são representadas em linhas (também chamadas de tuplas ) e colunas. Assim, a " relação " em "banco de dados relacional" refere-se às várias tabelas do banco de dados; uma relação é um conjunto de tuplas. As colunas enumeram os vários atributos da entidade (o nome do funcionário, endereço ou número de telefone, por exemplo), e uma linha é uma instância real da entidade (um funcionário específico) que é representada pela relação. Como resultado, cada tupla da tabela de funcionários representa vários atributos de um único funcionário.

Todas as relações (e, portanto, as tabelas) em um banco de dados relacional devem aderir a algumas regras básicas para serem qualificadas como relações. Primeiro, a ordem das colunas é irrelevante em uma tabela. Em segundo lugar, não pode haver tuplas ou linhas idênticas em uma tabela. E em terceiro lugar, cada tupla conterá um único valor para cada um de seus atributos.

Um banco de dados relacional contém várias tabelas, cada uma semelhante à do modelo de banco de dados "simples". Um dos pontos fortes do modelo relacional é que, em princípio, qualquer valor ocorrendo em dois registros diferentes (pertencentes à mesma tabela ou a tabelas diferentes), implica uma relação entre esses dois registros. No entanto, a fim de impor restrições de integridade explícitas , as relações entre os registros nas tabelas também podem ser definidas explicitamente, identificando ou não as relações pai-filho caracterizadas pela atribuição de cardinalidade (1: 1, (0) 1: M, M: M ) As tabelas também podem ter um único atributo designado ou um conjunto de atributos que podem atuar como uma "chave", que pode ser usado para identificar exclusivamente cada tupla na tabela.

Uma chave que pode ser usada para identificar exclusivamente uma linha em uma tabela é chamada de chave primária. As chaves são comumente usadas para unir ou combinar dados de duas ou mais tabelas. Por exemplo, uma tabela Employee pode conter uma coluna chamada Location que contém um valor que corresponde à chave de uma tabela Location . As chaves também são críticas na criação de índices, que facilitam a recuperação rápida de dados de grandes tabelas. Qualquer coluna pode ser uma chave ou várias colunas podem ser agrupadas em uma chave composta. Não é necessário definir todas as chaves com antecedência; uma coluna pode ser usada como uma chave, mesmo que não tenha sido originalmente criada para ser uma.

Uma chave que tem um significado externo do mundo real (como o nome de uma pessoa, o ISBN de um livro ou o número de série de um carro) às vezes é chamada de chave "natural". Se nenhuma chave natural for adequada (pense nas muitas pessoas chamadas Brown ), uma chave arbitrária ou substituta pode ser atribuída (por exemplo, fornecendo números de ID aos funcionários). Na prática, a maioria dos bancos de dados tem chaves geradas e naturais, porque as chaves geradas podem ser usadas internamente para criar links entre linhas que não podem ser quebradas, enquanto as chaves naturais podem ser usadas, de forma menos confiável, para pesquisas e integração com outros bancos de dados. (Por exemplo, os registros em dois bancos de dados desenvolvidos de forma independente podem ser comparados por número de previdência social , exceto quando os números de previdência social estão incorretos, ausentes ou foram alterados.)

A linguagem de consulta mais comum usada com o modelo relacional é a Structured Query Language ( SQL ).

Modelo dimensional

O modelo dimensional é uma adaptação especializada do modelo relacional usado para representar dados em data warehouses de forma que os dados possam ser facilmente resumidos usando processamento analítico online ou consultas OLAP . No modelo dimensional, um esquema de banco de dados consiste em uma única grande tabela de fatos que são descritos usando dimensões e medidas. Uma dimensão fornece o contexto de um fato (como quem participou, quando e onde aconteceu e seu tipo) e é usada em consultas para agrupar fatos relacionados. As dimensões tendem a ser discretas e geralmente hierárquicas; por exemplo, o local pode incluir o prédio, o estado e o país. Uma medida é uma quantidade que descreve o fato, como receita. É importante que as medidas possam ser agregadas de forma significativa - por exemplo, a receita de diferentes locais pode ser adicionada.

Em uma consulta OLAP, as dimensões são escolhidas e os fatos são agrupados e agregados para criar um resumo.

O modelo dimensional é frequentemente implementado em cima do modelo relacional usando um esquema em estrela , consistindo em uma tabela altamente normalizada contendo os fatos e em torno de tabelas desnormalizadas contendo cada dimensão. Uma implementação física alternativa, chamada de esquema em floco de neve , normaliza hierarquias de vários níveis dentro de uma dimensão em várias tabelas.

Um data warehouse pode conter vários esquemas dimensionais que compartilham tabelas de dimensão, permitindo que sejam usados ​​juntos. Criar um conjunto padrão de dimensões é uma parte importante da modelagem dimensional .

Seu alto desempenho fez do modelo dimensional a estrutura de banco de dados mais popular para OLAP.

Modelos de banco de dados pós-relacional

Produtos que oferecem um modelo de dados mais geral do que o modelo relacional às vezes são classificados como pós-relacionais . Os termos alternativos incluem "banco de dados híbrido", "RDBMS aprimorado por objeto" e outros. O modelo de dados em tais produtos incorpora relações, mas não é limitado pelo Princípio de Informação de EF Codd , que exige que

todas as informações do banco de dados devem ser expressas explicitamente em termos de valores nas relações e de nenhuma outra forma

- 

Algumas dessas extensões do modelo relacional integram conceitos de tecnologias anteriores ao modelo relacional. Por exemplo, eles permitem a representação de um grafo direcionado com árvores nos nós. A empresa alemã sones implementa este conceito em seu GraphDB .

Alguns produtos pós-relacionais estendem os sistemas relacionais com recursos não relacionais. Outros chegaram praticamente ao mesmo lugar, adicionando recursos relacionais a sistemas pré-relacionais. Paradoxalmente, isso permite que produtos que são historicamente pré-relacionais, como PICK e MUMPS , façam uma afirmação plausível de serem pós-relacionais.

O modelo de espaço de recursos (RSM) é um modelo de dados não relacional baseado em classificação multidimensional.

Modelo gráfico

Os bancos de dados gráficos permitem uma estrutura ainda mais geral do que um banco de dados de rede; qualquer nó pode ser conectado a qualquer outro nó.

Modelo de valores múltiplos

Bancos de dados de valores múltiplos são dados "irregulares", pois podem armazenar exatamente da mesma maneira que bancos de dados relacionais, mas também permitem um nível de profundidade que o modelo relacional só pode aproximar usando subtabelas. Isso é quase idêntico ao modo como o XML expressa os dados, em que um determinado campo / atributo pode ter várias respostas certas ao mesmo tempo. Valores múltiplos podem ser considerados uma forma compactada de XML.

Um exemplo é uma fatura, que em dados de vários valores ou relacionais pode ser vista como (A) Tabela de Cabeçalho da Fatura - uma entrada por fatura e (B) Tabela de Detalhe da Fatura - uma entrada por item de linha. No modelo multivalor, temos a opção de armazenar os dados como na tabela, com uma tabela embutida para representar o detalhe: (A) Tabela de Faturas - uma entrada por fatura, nenhuma outra tabela necessária.

A vantagem é que a atomicidade da Fatura (conceitual) e da Fatura (representação de dados) são um a um. Isso também resulta em menos leituras, menos problemas de integridade referencial e uma redução drástica no hardware necessário para suportar um determinado volume de transação.

Modelos de banco de dados orientados a objetos

Modelo Orientado a Objetos

Na década de 1990, o paradigma da programação orientada a objetos foi aplicado à tecnologia de banco de dados, criando um novo modelo de banco de dados conhecido como bancos de dados de objetos . Isso visa evitar a incompatibilidade de impedância relacional de objeto - a sobrecarga de conversão de informações entre sua representação no banco de dados (por exemplo, como linhas em tabelas) e sua representação no programa aplicativo (normalmente como objetos). Além disso, o sistema de tipos usado em um aplicativo específico pode ser definido diretamente no banco de dados, permitindo que o banco de dados imponha as mesmas invariáveis ​​de integridade de dados. Os bancos de dados de objetos também introduzem as idéias-chave da programação de objetos, como encapsulamento e polimorfismo , no mundo dos bancos de dados.

Várias dessas maneiras foram experimentadas para armazenar objetos em um banco de dados. Alguns produtos abordaram o problema desde a programação da aplicação, tornando persistentes os objetos manipulados pelo programa . Isso normalmente requer a adição de algum tipo de linguagem de consulta, uma vez que as linguagens de programação convencionais não têm a capacidade de localizar objetos com base em seu conteúdo de informação. Outros atacaram o problema do lado do banco de dados, definindo um modelo de dados orientado a objetos para o banco de dados e definindo uma linguagem de programação de banco de dados que permite recursos de programação completos, bem como recursos de consulta tradicionais.

Os bancos de dados de objetos sofreram devido à falta de padronização: embora os padrões tenham sido definidos pelo ODMG , eles nunca foram implementados bem o suficiente para garantir a interoperabilidade entre os produtos. No entanto, os bancos de dados de objetos têm sido usados ​​com sucesso em muitas aplicações: geralmente aplicativos especializados, como bancos de dados de engenharia ou bancos de dados de biologia molecular, em vez de processamento de dados comerciais convencionais. No entanto, as idéias de banco de dados de objetos foram escolhidas pelos fornecedores relacionais e influenciaram as extensões feitas para esses produtos e, de fato, para a linguagem SQL .

Uma alternativa para traduzir entre objetos e bancos de dados relacionais é usar uma biblioteca de mapeamento objeto-relacional (ORM).

Veja também

Referências