O modelo de dados de relacionamento entidade (ER) existe há mais de 35 anos. Ele é bem adequado para modelagem de dados para uso com bancos de dados porque é bastante abstrato e fácil de discutir e explicar. Os modelos ER são prontamente traduzidos para relações. Modelos ER, também chamados de esquema ER, são representados por diagramas ER.
A modelagem ER é baseada em dois conceitos:
- Entidades, definidas como tabelas que contêm informações específicas (dados)
- Relações, definidas como as associações ou interações entre entidades
Aqui está um exemplo de como esses dois conceitos podem ser combinados em um modelo de dados ER: Ba (entidade) ensina (relacionamento) o curso Sistemas de Banco de Dados (entidade).
Para o resto deste capítulo, usaremos um banco de dados modelo chamado banco de dados da COMPANHIA para ilustrar os conceitos do modelo ER. Esta base de dados contém informações sobre funcionários, departamentos e projetos. Os pontos importantes a salientar são:
- Existem vários departamentos na empresa. Cada departamento tem uma identificação única, um nome, localização do escritório e um determinado funcionário que administra o departamento.
- Um departamento controla um número de projetos, cada um deles com um nome único, um número único e um orçamento.
- Cada funcionário tem um nome, número de identificação, endereço, salário e data de nascimento. Um funcionário é atribuído a um departamento, mas pode participar de vários projetos. É necessário registrar a data de início do funcionário em cada projeto. Também precisamos conhecer o supervisor direto de cada funcionário.
- Queremos manter um registro dos dependentes de cada funcionário. Cada dependente tem um nome, data de nascimento e relacionamento com o funcionário.
- Entidade, Conjunto de Entidades e Tipo de Entidade
- Dependência de existência
- Tipos de Entidades
- Entidades independentes
- Entidades dependentes
- Entidades características
- Atributos
- Tipos de Atributos
- Atributos simples
- Atributos compostos
- Atributos multivalorizados
- Atributos derivados
- Keys
- Tipos de Chaves
- Chave candidata
- Chave Composta
- Chave Primária
- Secondary key
- Alternate key
- Foreign key
- Nulls
- Exemplo de como nulo pode ser usado
- Relações
- Tipos de Relacionamentos
- Uma a muitas (1:M) relações
- Uma relação de um para um (1:1)
- Muitas a muitas relações (M:N)
- Relação unária (recursiva)
- Relações ternárias
- Attribuição
Entidade, Conjunto de Entidades e Tipo de Entidade
Uma entidade é um objeto no mundo real com uma existência independente que pode ser diferenciada de outros objetos. Uma entidade pode ser
Entidades podem ser classificadas com base na sua força. Uma entidade é considerada fraca se suas tabelas são dependentes da existência.
- Ou seja, ela não pode existir sem uma relação com outra entidade
- A chave primária da Its é derivada da chave primária da entidade matriz
- A tabela Cônjuge, no banco de dados da COMPANHIA, é uma entidade fraca porque sua chave primária é dependente da tabela Empregado. Sem um registro de empregado correspondente, o registro de cônjuge não existiria.
Uma entidade é considerada forte se ela puder existir além de todas as suas entidades relacionadas.
- Os núcleos são entidades fortes.
- Uma tabela sem chave estrangeira ou uma tabela que contém uma chave estrangeira que pode conter nulos é uma entidade forte
Um outro termo a conhecer é tipo de entidade que define uma coleção de entidades similares.
Um conjunto de entidades é uma coleção de entidades de um tipo de entidade em um determinado momento. Em um diagrama de relações de entidades (ERD), um tipo de entidade é representado por um nome em uma caixa. Por exemplo, na Figura 8.1, o tipo de entidade é EMPLOYEE.
Dependência de existência
A existência de uma entidade depende da existência da entidade relacionada. É dependente da existência se tiver uma chave estrangeira obrigatória (ou seja, um atributo de chave estrangeira que não pode ser nulo). Por exemplo, na base de dados da COMPANHIA, uma entidade Cônjuge é dependente da existência da entidade Empregado.
Tipos de Entidades
Você também deve estar familiarizado com diferentes tipos de entidades, incluindo entidades independentes, entidades dependentes e entidades características. Estas estão descritas abaixo.
Entidades independentes
As entidades independentes, também chamadas de kernels, são a espinha dorsal do banco de dados. Elas são baseadas em outras tabelas. Os kernels têm as seguintes características:
- São os blocos de construção de uma base de dados.
- A chave primária pode ser simples ou composta.
- A chave primária não é uma chave estrangeira.
- Não dependem de outra entidade para a sua existência.
Se nos referirmos à nossa base de dados de EMPRESA, exemplos de uma entidade independente incluem a tabela de Clientes, Tabela de Empregados ou Tabela de Produtos.
Entidades dependentes
Entidades dependentes, também referidas como entidades derivadas, dependem de outras tabelas para o seu significado. Estas entidades têm as seguintes características:
- As entidades dependentes são usadas para conectar dois núcleos juntos.
- Diz-se que elas são dependentes de duas ou mais tabelas.
- Muitas a muitas relações tornam-se tabelas associativas com pelo menos duas chaves estrangeiras.
- Pode conter outros atributos.
- A chave estrangeira identifica cada tabela associada.
- Existem três opções para a chave primária:
- Utilizar um composto de chaves estrangeiras de tabelas associadas se for único
- Utilizar um composto de chaves estrangeiras e uma coluna de qualificação
- Criar uma nova chave primária simples
Entidades características
As entidades características fornecem mais informações sobre outra tabela. Estas entidades têm as seguintes características:
- Representam atributos multivalorizados.
- Descrevem outras entidades.
- Têm tipicamente uma a muitas relações.
- A chave estrangeira é usada para identificar melhor a tabela caracterizada.
- Opções para chave primária são as seguintes:
- Utilizar um composto de chave estrangeira mais uma coluna de qualificação
- Criar uma nova chave primária simples. No banco de dados da COMPANY, estas podem incluir:
- Employee (EID, Nome, Endereço, Idade, Salário) – EID é a chave primária simples.
- EmployeePhone (EID, Telefone) – EID é parte de uma chave primária composta. Aqui, o EID também é uma chave estrangeira.
Atributos
Cada entidade é descrita por um conjunto de atributos (por exemplo, Empregado = (Nome, Endereço, Data de Nascimento (Idade), Salário).
Cada atributo tem um nome, e está associado a uma entidade e a um domínio de valores legais. No entanto, a informação sobre o domínio do atributo não é apresentada na ERD.
No diagrama de relações entre entidades, mostrado na Figura 8.2, cada atributo é representado por um oval com um nome dentro.
Tipos de Atributos
Existem alguns tipos de atributos que você precisa conhecer. Alguns deles devem ser deixados como estão, mas alguns precisam ser ajustados para facilitar a representação no modelo relacional. Esta primeira secção irá discutir os tipos de atributos. Mais tarde discutiremos a fixação dos atributos para se encaixarem corretamente no modelo relacional.
Atributos simples
Atributos simples são aqueles extraídos dos domínios de valor atômico; eles também são chamados de atributos de valor único. Na base de dados da COMPANY, um exemplo disso seria: Name = {John} ; Age = {23}
Atributos compostos
Atributos compostos são aqueles que consistem em uma hierarquia de atributos. Usando nosso exemplo de banco de dados, e mostrado na Figura 8.3, Endereço pode consistir em Número, Rua e Subúrbio. Então isto seria escrito como → Address = {59 + ‘Meek Street’ + ‘Kingsford’}
Atributos multivalorizados
Atributos multivalorizados são atributos que têm um conjunto de valores para cada entidade. Um exemplo de um atributo multivalorizado do banco de dados da COMPANY, como mostrado na Figura 8.4, são os graus de um funcionário: BSc, MIT, PhD.
Atributos derivados
Atributos derivados são atributos que contêm valores calculados a partir de outros atributos. Um exemplo disso pode ser visto na Figura 8.5. A idade pode ser derivada do atributo Data de nascimento. Nesta situação, Data de Nascimento é chamado de atributo armazenado, que é fisicamente salvo na base de dados.
Keys
Uma restrição importante em uma entidade é a chave. A chave é um atributo ou grupo de atributos cujos valores podem ser utilizados para identificar de forma única uma entidade individual em um conjunto de entidades.
Tipos de Chaves
Existem vários tipos de chaves. Estes são descritos abaixo.
Chave candidata
Uma chave candidata é uma chave simples ou composta que é única e mínima. É única porque não há duas linhas em uma tabela que possam ter o mesmo valor a qualquer momento. É mínima porque cada coluna é necessária para atingir a singularidade.
De nosso banco de dados exemplo, se a entidade é Empregado(EID, Nome, Sobrenome, SIN, Endereço, Telefone, Data de Nascimento, Salário, DepartmentID), são possíveis chaves candidatas:
- EID, SIN
- Primeiro Nome e Sobrenome – supondo que não haja mais ninguém na empresa com o mesmo nome
- Primeiro Nome e Sobrenome de Departamento – supondo que duas pessoas com o mesmo sobrenome não trabalhem no mesmo departamento
Chave Composta
Uma chave composta é composta de dois ou mais atributos, mas deve ser mínima.
Utilizando o exemplo da secção de chaves candidatas, são possíveis chaves compostas:
- Primeiro Nome e Sobrenome – assumindo que não há mais ninguém na empresa com o mesmo nome
- Primeiro Nome e Sobrenome do Departamento – assumindo que duas pessoas com o mesmo sobrenome não trabalham no mesmo departamento
Chave Primária
A chave primária é uma chave candidata que é selecionada pelo designer da base de dados para ser usada como mecanismo de identificação para todo o conjunto de entidades. Ela deve identificar de forma única os tuplos em uma tabela e não ser nula. A chave primária é indicada no modelo ER, sublinhando o atributo.
- Uma chave candidata é selecionada pelo designer para identificar de forma única os tuplos em uma tabela. Ela não deve ser nula.
- Uma chave é escolhida pelo designer da base de dados para ser usada como mecanismo de identificação para todo o conjunto da entidade. Isto é referido como a chave primária. Esta chave é indicada sublinhando o atributo no modelo ER.
No exemplo seguinte, EID é a chave primária:
Employee(EID, First Name, Last Name, SIN, Address, Phone, BirthDate, Salary, DepartmentID)
Secondary key
Uma chave secundária é um atributo utilizado estritamente para fins de recuperação (pode ser composta), por exemplo: Phone and Last Name.
Alternate key
Alternate keys are all candidate keys not chosen as the primary key.
Foreign key
A foreign key (FK) is an attribute in a table that references the primary key in another table OR it can be null. Tanto a chave estrangeira como a primária devem ser do mesmo tipo de dados.
Na base de dados da COMPANY exemplo abaixo, DepartmentID é a chave estrangeira:
Employee(EID, First Name, Last Name, SIN, Address, Phone, BirthDate, Salary, DepartmentID)
Nulls
A null é um símbolo especial, independente do tipo de dados, o que significa desconhecido ou inaplicável. Não significa zero ou em branco. As características do nulo incluem:
- Sem entrada de dados
- Não permitido na chave primária
- Deve ser evitado em outros atributos
- Pode representar
- Um valor de atributo desconhecido
- Conhecido, mas em falta, valor do atributo
- Uma condição “não aplicável”
- Pode criar problemas quando funções como CONTA, MÉDIA e SUM são usadas
- Pode criar problemas lógicos quando tabelas relacionais são ligadas
NOTE: O resultado de uma operação de comparação é nulo quando qualquer dos argumentos é nulo. O resultado de uma operação aritmética é nulo quando qualquer dos argumentos é nulo (exceto funções que ignoram nulos).
Exemplo de como nulo pode ser usado
Utilizar a tabela Salary (Salary_tbl) na Figura 8.6 para seguir um exemplo de como nulo pode ser usado.
Para começar, encontre todos os empregados (emp#) em Vendas (sob a coluna jobName) cujo salário mais comissão são superiores a 30.000.
- SELECT emp# FROM Salary_tbl
- WHERE jobName = Vendas E
- (comissão + salário) > 30.000 -> E10 e E12
Este resultado não inclui o E13 por causa do valor nulo na coluna comissão. Para garantir que a linha com o valor nulo seja incluída, precisamos olhar para os campos individuais. Ao adicionar comissão e salário para o empregado E13, o resultado será um valor nulo. A solução é apresentada abaixo.
Relações
Relações são a cola que mantém as tabelas juntas. Elas são usadas para conectar informações relacionadas entre as tabelas.
Força da relação é baseada em como a chave primária de uma entidade relacionada é definida. Uma relação fraca, ou não-identificadora, existe se a chave primária da entidade relacionada não contém um componente da chave primária da entidade matriz. Exemplos de bancos de dados de empresas incluem:
- Cliente(CustID, CustName)
- Ordem(OrderID, CustID, Data)
Uma relação forte, ou identificadora, existe quando a chave primária da entidade relacionada contém o componente chave primária da entidade controladora. Exemplos incluem:
- Curso(CrsCode, DeptCode, Description)
- Class(CrsCode, Section, ClassTime…)
Tipos de Relacionamentos
Below são descrições dos vários tipos de relacionamentos.
Uma a muitas (1:M) relações
Uma a muitas (1:M) relações deve ser a norma em qualquer projeto de banco de dados relacional e é encontrada em todos os ambientes de bancos de dados relacionais. Por exemplo, um departamento tem muitos funcionários. A Figura 8.7 mostra a relação de um desses funcionários com o departamento.
Uma relação de um para um (1:1)
Uma relação de um para um (1:1) é a relação de uma entidade para apenas uma outra entidade, e vice-versa. Deve ser raro em qualquer desenho de base de dados relacional. Na verdade, poderia indicar que duas entidades realmente pertencem à mesma tabela.
Um exemplo da base de dados da EMPRESA é um empregado associado a um cônjuge, e um cônjuge associado a um empregado.
Muitas a muitas relações (M:N)
Para muitas a muitas relações, considere os seguintes pontos:
- Não pode ser implementado como tal no modelo relacional.
- Pode ser alterado para duas relações de 1:M.
- Pode ser implementado quebrando para produzir um conjunto de relações 1:M.
- Envolve a implementação de uma entidade composta.
- Cria duas ou mais relações 1:M.
- A tabela de entidades compostas deve conter pelo menos as chaves primárias das tabelas originais.
- A tabela de ligações contém múltiplas ocorrências dos valores de chaves estrangeiras.
- Atributos adicionais podem ser atribuídos conforme necessário.
- Pode evitar problemas inerentes a uma relação M:N criando uma entidade composta ou entidade bridge. Por exemplo, um funcionário pode trabalhar em muitos projetos OU um projeto pode ter muitos funcionários trabalhando nele, dependendo das regras de negócio. Ou, um aluno pode ter muitas aulas e uma aula pode ter muitos alunos.
Figure 8.8 mostra outro aspecto do relacionamento M:N onde um funcionário tem datas de início diferentes para projetos diferentes. Portanto, precisamos de uma tabela JOIN que contenha o EID, Código e StartDate.
Exemplo de mapeamento de uma relação binária M:N tipo
- Para cada relação binária M:N, identificar duas relações.
- A e B representam dois tipos de entidades participantes no R.
- Criar uma nova relação S para representar R.
- S precisa conter os PKs de A e B. Estes juntos podem ser o PK na tabela S OU estes juntos com outro atributo simples na nova tabela R pode ser o PK.
- A combinação das chaves primárias (A e B) fará a chave primária de S.
Relação unária (recursiva)
Uma relação unária, também chamada recursiva, é aquela em que existe uma relação entre ocorrências do mesmo conjunto de entidades. Nessa relação, as chaves primária e externa são as mesmas, mas representam duas entidades com papéis diferentes. Veja a Figura 8.9 para um exemplo.
Para algumas entidades numa relação unária, uma coluna separada pode ser criada que se refere à chave primária do mesmo conjunto de entidades.
Relações ternárias
Uma relação ternária é um tipo de relação que envolve muitas a muitas relações entre três tabelas.
Refer à Figura 8.10 para um exemplo de mapeamento de um tipo de relação ternária. Nota n-ary significa múltiplas tabelas em uma relação. (Lembre-se, N = muitas.)
- Para cada relação n-ary (> 2), criar uma nova relação para representar a relação.
- A chave primária da nova relação é uma combinação das chaves primárias das entidades participantes que possuem o lado N (muitas).
- Na maioria dos casos de uma relação n-ary, todas as entidades participantes têm um lado muitos.
entidades características: entidades que fornecem mais informações sobre outra tabela
atributos compostos: atributos que consistem em uma hierarquia de atributos
chave composta: composta de dois ou mais atributos, mas deve ser mínima
entidades dependentes: essas entidades dependem de outras tabelas para o seu significado
atributos derivados: atributos que contêm valores calculados a partir de outros atributos
entidades derivadas: ver entidades dependentes
EID: identificação de empregados (ID)
entidade: uma coisa ou objeto no mundo real com uma existência independente que pode ser diferenciada de outros objetos
modelo de dados de relação de entidade (ER): também chamado de esquema ER, são representados por diagramas ER. Estes são bem adequados à modelagem de dados para uso com bancos de dados.
esquema de relação de entidade: ver modelo de dados de relação de entidade
conjunto de entidades: uma coleção de entidades de um tipo de entidade em um ponto de tempo
tipo de entidade: uma coleção de entidades similares
chave externa (FK): um atributo em uma tabela que faz referência à chave primária em outra tabela OU pode ser nulo
entidade independente: como os blocos de construção de uma base de dados, estas entidades são o que outras tabelas são baseadas em
kernel: veja entidade independente
key: um atributo ou grupo de atributos cujos valores podem ser utilizados para identificar de forma única uma entidade individual em um conjunto de entidades
multivalued attributes: atributos que têm um conjunto de valores para cada entidade
n-ary: múltiplas tabelas em uma relação
null: um símbolo especial, independente do tipo de dado, que significa desconhecido ou inaplicável; não significa zero ou branco
relação recursiva: ver relação unária
relações: as associações ou interações entre entidades; usado para conectar informações relacionadas entre tabelas
força da relação: baseado em como a chave primária de uma entidade relacionada é definida
chave secundária um atributo usado estritamente para fins de recuperação
atributos simples: extraído dos domínios de valor atômico
SIN: número do seguro social
atributos de valor único: ver atributos simples
atributo armazenado: gravado fisicamente na base de dados
relação interna: um tipo de relação que envolve muitas a muitas relações entre três tabelas.
relação unitária: uma em que existe uma relação entre ocorrências do mesmo conjunto de entidades.
- Em que dois conceitos são modelagem ER baseada?
- A base de dados da Figura 8.11 é composta de duas tabelas. Use esta figura para responder as questões 2.1 a 2.5.
- Identificar a chave primária para cada tabela.
- Identificar a chave estrangeira na tabela PLAY.
- Identificar as chaves candidatas em ambas as tabelas.
- Desenhar o modelo ER.
- A tabela PLAY exibe integridade referencial? Por que ou por que não?
- Definir os seguintes termos (você pode precisar usar a Internet para alguns deles):
esquema
língua do hospedeiro
língua dos dados
língua da definição dos dados
relação unária
ligação externa
ligação virtual
conectividade
ligação com a chave composta
tabela de ligação - A base de dados da RRE Trucking Company inclui as três tabelas da Figura 8.12. Use a Figura 8.12 para responder as questões 4.1 a 4.5.
- Identificar a(s) chave(s) primária(s) e estrangeira(s) para cada tabela.
- A tabela TRUCK exibe entidade e integridade referencial? Por que ou por que não? Explique sua resposta.
- Que tipo de relação existe entre as tabelas TRUCK e BASE?
- Quantas entidades a tabela TRUCK contém ?
- Identificar a(s) chave(s) candidata(s) à tabela TRUCK.
- Suponha que você está usando a base de dados da Figura 8.13, composta das duas tabelas. Use a Figura 8.13 para responder as questões 5.1 a 5.6.
- Identificar a chave primária em cada tabela.
- Identificar a chave estrangeira na tabela BookOrders.
- Há alguma chave candidata em qualquer uma das tabelas?
- Desenhar o modelo ER.
- A tabela BookOrders exibe integridade referencial? Porquê ou porque não?
- As tabelas contêm dados redundantes? Se sim, que tabela(s) e quais são os dados redundantes?
- Locando a tabela do aluno na Figura 8.14, liste todas as possíveis chaves candidatas. Por que você selecionou estas?
Utilizar a ERD de uma base de dados escolar na Figura 8.15 para responder às questões 7 a 10.
- Identidade de todos os núcleos e entidades dependentes e características na ERD.
- Qual das tabelas contribui para relações fracas? Relacionamentos fortes?
- Olhando para cada uma das tabelas da base de dados da escola na Figura 8.15, qual atributo poderia ter um valor NULL? Porquê?
- Qual das tabelas foi criado como resultado de muitos a muitos relacionamentos?
Veja também o Apêndice B: Exemplo de Exercícios ERD
Attribuição
Este capítulo de Desenho de Banco de Dados (incluindo imagens, exceto como outroswisse notou) é uma cópia derivada do Data Modeling Using Entity-Relationship Model de Nguyen Kim Anh licenciado sob a Creative Commons Attribution License 3.0 licença
O seguinte material foi escrito por Adrienne Watt:
- Secção Nulls e exemplo
- Termos Chave
- Exercícios