Unidade C - Modelo Lógico

6.3 Transformar um Modelo Conceitual em Modelo Relacional (modelo lógico)

O esquema de um Banco de dados relacional (modelo lógico) deve ter no mínimo as relações que formam o Banco, os atributos que as relações possuem e as restrições do modelo.

1º REGRA - TRANSFORMAR ENTIDADE REGULAR EM UM RELAÇÃO

| PARA CADA TIPO DE ENTIDADE REGULAR TRANSFORMAR EM UMA RELAÇÃO QUE INCLUA TODOS OS ATRIBUTOS SIMPLES |

Em relação ao exemplo acima vamos fazer o primeiro regra para transformação, que é transformar toda entidade regular em uma relação que inclua todos os atributos simples, trata-se de uma tradução inicial que na seqüência poderá ser fundida com outra entidade.

Para representar o modelo lógico vamos utilizar as mesmas notações utilizadas na bibliografia do HEUSER que será explicado neste primeiro exemplo:

| Pessoa (Codigo, Sexo, Nome) |

Com isso a entidade PESSOA é transformada em uma tabela PESSOA e cada atributo da entidade é transformado em uma coluna da tabela sendo que o atributo chave primária será identificado com um sublinhado.

2º REGRA – TRANSFORMAR UMA ENTIDADE FRACA

| PARA CADA TIPO DE ENTIDADE FRACA TRANSFORMAR EM UMA RELAÇÃO QUE INCLUA TODOS OS ATRIBUTOS SIMPLES E MAIS A CHAVE PRIMÁRIA DA ENTIDADE DEPENDENTE. AMBAS PASSAM A SER A CHAVE PRIMÁRIA COMPOSTA DA RELAÇÃO DEPENDENTE. |
Dependente(Numero, Codigo, Data_Nascimento, Nome) |

3º REGRA – TRANSFORMAR RELACIONAMENTOS BINÁRIOS 1:1

Quando temos este tipo de relação, há algumas opções para a transformação:

1º Opção: Escolher uma das tabelas e inserir nela como chave estrangeira a chave primária do outra tabela.

No nosso exemplo acima, temos a relação entre uma entidade pessoa e departamento.

| Desta forma estamos apenas transformando as entidade regulares em tabelas: Pessoa(Codigo, Nome, Sexo) Departamento(Numero, Nome) |

O próximo passo é analisar a relação existente. Como o relacionamento é binário 1:1 vamos usar a 1º opção e inserir em uma das entidades a chave primária da outra. É melhor escolher, entre as duas entidades, aquela com participação total, ou seja, a entidade de departamento que preve a obrigatoriedade de ter um gerente. Ainda na entidade escolhida para receber a chave estrangeria também inserimos os atributos do relacionamento.

| Pessoa(Codigo, Nome, Sexo) Departamento(Numero, Codigo, Nome, Data_Inicio) Codigo referencia Pessoa |

Observação da notação

Para representar a chave estrangeira, após a definição da relação que contém chave estrangeira descrevemos:
<nome da coluna ch. Estrangeira> referencia <nome da relação>

2º Opção: Nesta opção, pode-se fazer uma fusão entre as entidades participantes. Normalmente ocorre quando as duas entidades têm participação total, ou seja, a cardinalidade mínima nas duas entidades é 1.

CongressoEquipe(Codigo, Nome, NomeEquipe, Data)

Neste exemplo, fizemos a fusão das duas entidades em uma única relação incluindo os atributos das duas entidades e do relacionamento. No exemplo acima tivemos que alterar o nome da equipe para NomeEquipe já que o atributo de congresso também estava identificado por Nome.

| Nos exemplos estamos colocando como nome de coluna os nomes dos atributos. Para os exercícios é importante que criemos uma nomenclatura para esta conversão. Por exemplo: Codigo = Cod Numero = No A recomendação é que se use sempre a mesma abreviatura em todas as relações do Banco de Dados.
Tabela Proposta por: HEUSER, Carlos Alberto. Projeto de Banco de Dados. Porto Alegre: Sagra Luzato, 1999.

4º REGRA – TRANSFORMAR RELACIONAMENTOS BINÁRIOS 1:N

Para cada tipo de relacionamento Binário 1:N identificar a entidade participante do lado N e inserir como chave estrangeira a chave primária do outra entidade. Isso é feito porque cada instância de entidade do lado N está relacionada a no máximo uma instância do lado 1.

> Pessoa (Codigo,Nome, Sexo, Numero)
> Numero referencia Departamento
> Departamento(Numero, Nome)

No exemplo acima, inserimos a chave primária de departamento como chave estrangeira na relação Pessoa.

Tabela Proposta por: HEUSER, Carlos Alberto. Projeto de Banco de Dados. Porto Alegre: Sagra Luzato, 1999.

5º REGRA – TRANSFORMAR RELACIONAMENTOS BINÁRIOS N:M

Neste caso, para cada tipo de relacionamento cria-se uma tabela nova. Inserir como chave estrangeira as chaves primárias das duas tabelas que fazem parte e as duas chaves irão representar a chave primária da nova tabela.

Também devemos incluir todo tipo de atributo que tiver na relação entre as entidades.

> Pessoa(Codigo, Nome, Sexo)
> Projeto(Numero, Nome)
> Trabalha(Codigo, Numero, horas)
> Código referencia Pessoa
> Numero referencia Projeto

O Diagrama acima gerou 3 relações, uma para entidade pessoa outra para entidade projeto e outra para a relação trabalha.

A relação trabalha ficou composta de duas chaves primárias, código da entidade Pessoa e Numero da entidade Projeto. E ainda faz parte desta relação o atributo horas do relacionamento trabalha.

6º REGRA – TRANSFORMAR RELACIONAMENTOS N-ário:

Para transformar relacionamentos n-ários deve seguir os seguir os seguintes passos:

1. Transformar o relacionamento em uma entidade e esta entidade fica ligado através de um relacionamento binário com 1. as outras entidades.
2. Aplicar as regras para os relacionamentos binários.2. Exemplo:

Seguindo os passos para a transformação acima, temos o seguinte modelo relacional:

> Produto(CodProd, Nome)
> Cidade(CodCid, Nome)
> Distribuidor(CodDistr, Nome)
> Distribuição(CodProd, CodCid,CodDistr, DataInicio)
> CodProd referencia Produto
> CodCid Referencia Cidade
> CodDistr Referencia Distribuidor

7º REGRA – TRANSFORMAR GENERALIÇÕES / ESPECIALIZAÇÕES

Existem duas opções no caso de Generalização / Especialização:

> 1º) Utilizar uma tabela para cada entidade
> 2º) Utilizar uma tabela para toda Generalização / Especialização

1º caso – Uma relação para cada entidade

Acrescentar à chave primária da tabela correspondente a entidade genérica, em cada tabela correspondente a uma entidade especializada.

> Carro (Placa, Ano, Modelo, Marca)
> Placa referencia Veiculo
> Caminhao(Placa, Capacidade, Marca)
> Placa referencia Veiculo

2º caso – Fusão em um única relação

Veiculo (Placa, Ano, Modelo, MarcaCarro, Capacidade, MarcaCaminhao)

No exemplo de modelo relacional acima temos a chave primária Placa que foi derivada da entidade Generalizada e todos os atributos das entidades especializadas se tornaram colunas na tabela.