2.8 DER, demonstração prática
Até agora vimos muita teoria. Chegou a hora de uma demonstração prática do que foi ensinado até aqui, porém acredito que seja relevante citar que um DER pode ser desenhado de diversas formas diferentes e que todas podem estar corretas.
Além disso, os símbolos e níveis de detalhes podem variar um pouco dependendo do software utilizado e do capricho de quem elaborou o diagrama. Veja um exemplo prático:
Figura 23 - Demonstração prática de generalização e especialização
Qual a historinha desse DER? A empresa TI na Rede precisa de um banco de dados no qual os clientes possam ser cadastrados para que serviços possam ser ofertados a seus futuros consumidores.
O DER foi dividido em blocos coloridos e numerados de 01 a 03 para que seja possível conduzir uma explicação mais dinâmica. Então vamos analisar cada bloco separadamente:
Bloco 01: Temos uma entidade genérica chamada Cliente e três atributos genéricos.
Bloco 02: Temos a especialização exclusiva representada pela letra X, ou seja, toda e qualquer ocorrência da entidade Cliente deve obrigatoriamente se relacionar com ocorrências da entidade Pessoa física ou Pessoa jurídica. Isso significa que um Cliente será sempre uma Pessoa física ou uma Pessoa jurídica; é impossível ser os dois ao mesmo tempo ou não ser nenhum dos dois.
Bloco 03: Temos uma entidade de relacionamento chamada Contrato. Você lembra-se que foi mencionado que um DER pode ter um nível de detalhe maior ou menor dependendo de quem o desenhou? Pois é, nesse DER foi inserida uma seta dentro da entidade Contrato apontando para a direita. Qual minha intenção com isso? Deixar explícito que o relacionamento se dá em direção à entidade Serviço, ou seja, quando o DER for lido teremos o seguinte entendimento: uma Pessoa física ou Pessoa jurídica contrata um Serviço. Buscamos impedir, assim, a interpretação de que um Serviço pode contratar uma Pessoa física.
Acredito que os identificadores (chave primária) Id não passaram despercebidos aos olhos atentos de meus queridos leitores. Pois é, esse atributo chamado Id geralmente é utilizado quando queremos criar um código único e sequencial para representar as ocorrências dentro da entidade. Lembra que uma chave primária é um valor que não se repete e que serve para identificar e diferenciar uma ocorrência dentro de uma entidade? Em vez de ficar dando nomes diferentes ao identificador de cada nova entidade, o chamamos genericamente de Id — abreviação de identificador.
No bloco 03 temos as cardinalidades. Uma Pessoa física ou Pessoa jurídica pode estar relacionada a nenhuma ou a várias ocorrências da entidade Serviço; já as ocorrências da entidade Serviço podem se relacionar com nenhuma ou com várias ocorrências das entidades Pessoa física ou Pessoa jurídica. Como foi decidida essa cardinalidade? Bem, podemos ter em nosso banco de dados um serviço que ainda não foi contratado por ninguém, então se ele pode existir mesmo que não tenha relacionamento sua cardinalidade deve ser opcional, ou seja, igual a 0 (zero); uma Pessoa física ou Pessoa jurídica também pode existir sem que nenhum serviço tenha sido relacionado a ela e, sendo assim, sua cardinalidade mínima também pode ser opcional. Simples, não é!?
Abaixo represento de uma outra forma o mesmo DER da Figura 23:
Figura 24 - Outro exemplo de generalização e especialização
A mesma coisa, concorda? A única diferença é que agora gastei mais tinta para representar o mesmo DER da Figura 23, com níveis de detalhes e de semântica visual um pouco menores; ainda assim, esses dois DER são equivalentes em termos de significado.