Modelagem ER: identificação de relacionamentos, generalização e entidade associativa
Revisão de modelagem entidade-relacionamento com identificação de relacionamentos, generalização/especialização (total, parcial, exclusiva, compartilhada e em múltiplos níveis) e entidades associativas.
1. Visão geral
Este material mostra uma breve revisão sobre os principais conceitos da modelagem de dados baseada na abordagem entidade-relacionamento, completando a revisão iniciada com entidades, relacionamentos, cardinalidades, atributos e identificadores.
O que você vai aprender
- Quando um relacionamento precisa de um atributo identificador
- O princípio da minimalidade na escolha de identificadores
- O que é generalização/especialização e como ela se parece com a herança da orientação a objetos
- A diferença entre generalização/especialização total e parcial, exclusiva e compartilhada
- Como montar hierarquias de múltiplos níveis, inclusive com herança múltipla
- O que é uma entidade associativa e quando usá-la
O que você vai precisar
- Conhecer entidades, relacionamentos, cardinalidades, atributos e identificadores
- Papel e lápis (ou uma ferramenta de desenho de diagramas) para os exercícios
2. Identificação de relacionamentos
Ocorrências de relacionamentos também devem ser diferenciadas umas das demais. Muitas vezes, isso se dá por meio das ocorrências de entidades envolvidas no relacionamento. Entretanto, há casos em que as ocorrências de entidades não são suficientes para essa diferenciação. Exemplos clássicos no mundo real são aqueles que envolvem datas, períodos etc. Veja a figura a seguir. Ela mostra o relacionamento "consulta" entre médico e paciente.

Figura 2.1: relacionamento consulta entre médico e paciente.
Obviamente, uma pessoa pode ser atendida pelo mesmo médico diversas vezes. Assim, utilizar seu CPF em conjunto com o CRM do médico para diferenciar uma ocorrência de consulta das demais não é suficiente. Neste caso, é natural utilizar a data/hora da consulta, como ilustra a figura a seguir.

Figura 2.2: a data/hora identifica cada consulta.
Exercícios
Identifique um relacionamento entre entidades do mundo real que demande um atributo identificador e faça seu DER.
3. Generalização/especialização
Também é possível atribuir propriedades a entidades por meio da generalização/especialização. A ideia é simples: descrevemos uma entidade A mais genérica cujos atributos são comuns a outra entidade B, esta mais específica. Ao especificarmos que B é especialização de A, B passa a ter, também, os atributos de A. Trata-se de um conceito semelhante àquele denominado herança da orientação a objetos. A figura a seguir mostra um exemplo, no qual:
- Cliente é generalização de Pessoa Física e de Pessoa Jurídica.
- Pessoa Física e Pessoa Jurídica são especializações de Cliente.
- Tanto Pessoa Física quanto Pessoa Jurídica possuem os atributos nome e código, muito embora eles não sejam apresentados explicitamente.

Figura 2.3: generalização/especialização de Cliente em Pessoa Física e Pessoa Jurídica.
4. Total ou parcial
Uma pergunta natural é a seguinte: é verdade que toda ocorrência da entidade mais geral está associada a pelo menos uma ocorrência de alguma entidade mais específica? Para responder a essa pergunta, classificamos uma generalização/especialização como parcial ou total. Ela é parcial quando há instâncias da entidade mais geral não associadas a quaisquer instâncias de entidades mais específicas. E é total quando isso não acontece. A figura a seguir mostra um exemplo de generalização/especialização total.

Figura 2.4: generalização/especialização total (t): toda ocorrência de Cliente é Pessoa Física ou Pessoa Jurídica.
A figura a seguir mostra um exemplo de generalização/especialização parcial.

Figura 2.5: generalização/especialização parcial (p): podem existir funcionários que não são nem motoristas nem secretárias.
5. Exclusiva ou compartilhada
Numa generalização/especialização exclusiva, a seguinte propriedade é verdadeira: dada uma ocorrência da entidade mais geral, ela é especializada somente uma vez. Quando a generalização/especialização é compartilhada, por outro lado, é possível que uma ocorrência da entidade mais geral seja especializada por mais de uma entidade na hierarquia. A figura a seguir mostra um exemplo de generalização/especialização compartilhada.

Figura 2.6: generalização/especialização compartilhada (c): uma pessoa pode ser professor e funcionário ao mesmo tempo, por exemplo.
A figura a seguir mostra um exemplo de generalização/especialização exclusiva.

Figura 2.7: generalização/especialização exclusiva (x): um funcionário é motorista ou secretária, nunca ambos.
A tabela a seguir mostra as quatro possíveis combinações.
| Total (t) | Parcial (p) | |
|---|---|---|
| Exclusiva (x) | xt | xp |
| Compartilhada (c) | ct | cp |
Tabela 2.1: combinações de generalização/especialização.
Exercícios
Identifique no mundo real algo que possa ser modelado como uma hierarquia de generalização/especialização do tipo cp e faça seu DER.
Identifique no mundo real algo que possa ser modelado como uma hierarquia de generalização/especialização do tipo xt e faça seu DER.
6. Hierarquias de múltiplos níveis
Uma hierarquia de generalização/especialização pode ter múltiplos níveis, como mostra a figura a seguir. Ela também ilustra um conceito semelhante àquele conhecido por herança múltipla, que é caracterizado quando uma entidade especializa duas entidades simultaneamente.

Figura 2.8: hierarquia de múltiplos níveis com herança múltipla (Tanque Anfíbio).
Exercícios
Construa um DER que retrate algo que pode ser observado no mundo real utilizando uma hierarquia de generalização/especialização com três níveis e que utilize a herança múltipla.
7. Entidade associativa
Lembre-se que um relacionamento é uma associação entre entidades. Não existe a possibilidade de estabelecer relacionamentos entre relacionamentos e entidades ou entre dois ou mais relacionamentos. O recurso denominado entidade associativa costuma ser empregado quando a realidade modelada parece demandar esse tipo de relacionamento.
Considere a figura a seguir.

Figura 2.9: o relacionamento consulta.
Suponha que desejamos incluir uma nova entidade à realidade modelada: medicamento. Medicamentos possuem diversos atributos. Um medicamento pode estar associado a múltiplas consultas. Uma consulta pode ter a ela associados múltiplos medicamentos. É tentador resolver esse problema como a figura a seguir sugere. Entretanto, esse tipo de construção não está previsto na modelagem ER. Utilizá-lo é semelhante a tentar utilizar a palavra se no lugar da palavra reservada if em linguagens de programação como Java, por exemplo. Está errado, pois sequer faz parte da especificação.

Figura 2.10: construção inválida: relacionamento entre um relacionamento e uma entidade.
Para resolver esse problema, podemos fazer uma espécie de redefinição do relacionamento consulta, fazendo com que ele passe a ser tratado como entidade também. Graficamente, isso é feito como mostra a figura a seguir.

Figura 2.11: consulta como entidade associativa.
A realidade em questão pode também ser modelada sem o uso de uma entidade associativa: o relacionamento consulta pode ser uma entidade de fato. Veja a figura a seguir.

Figura 2.12: consulta modelada como entidade.
8. Exercícios finais e encerramento
Exercício 1
Faça um DER condizente com as seguintes restrições.
Uma farmácia comercializa diversos produtos, os quais podem ser de dois tipos: medicamentos ou cosméticos. Uma venda pode envolver múltiplos produtos, de quaisquer tipos. Vendas de medicamentos, entretanto, podem demandar a apresentação de uma receita médica. Cada produto tem um único fabricante. Os produtos de um fabricante podem ser distribuídos por múltiplos fornecedores.
Dê bastante atenção à construção envolvendo as entidades e relacionamentos. Escolha alguns atributos para cada entidade que lhe pareçam apropriados.
Exercício 2
Faça um DER condizente com as seguintes restrições.
Uma empresa tem três tipos de empregados: gerente, secretária e engenheiro. Cada empregado pertence a um único departamento. Um gerente é responsável por múltiplos empregados, inclusive potencialmente outros gerentes. Uma secretária tem domínio sobre diversos aplicativos que utiliza no dia a dia. Engenheiros participam de diversos projetos ao longo de sua carreira.
Dê bastante atenção à construção envolvendo as entidades e relacionamentos. Escolha alguns atributos para cada entidade que lhe pareçam apropriados.
Parabéns!
Você concluiu a revisão da abordagem entidade-relacionamento. O próximo passo é o modelo relacional, que leva esses conceitos para tabelas.
Bibliografia
- HEUSER, Carlos Alberto. Projeto de Banco de Dados. 6ª ed. Bookman, 2008.