Depois de criado o modelo Conceitual, o próximo passo é a criação do modelo lógico. Existe um processo conhecido como mapeamento que nos auxilia na passagem do modelo conceitual para o modelo lógico relacional de dados. Os conceitos servem para mapear, ou seja, mudar as representações do modelo de Entidade e Relacionamento para representações equivalentes no modelo relacional.
Regras gerais para mapeamentos de entidades
- Toda entidade vira uma relação.
- Atributo identificador se torna chave primária na relação.
- Atributos simples se tornam colunas (campos).
- Atributos compostos tornam-se atributos simples, mapeados em colunas, uma coluna para cada atributo.
- Atributos derivados não são mapeados.
- Atributos multi-valorados podem ser mapeados de duas formas:
- Como n colunas, onde n é o número máximo de valores do atributo.
- Criando-se uma nova relação
1° Exemplo (Atributo identificador e atributo composto):
Seguindo as regras, o mapeamento do exemplo acima fica assim:
► Cliente (cpf, nome, rua, bairro, cidade, estado)
O atributo identificador cpf, virou a chave primária na relação; o atributo composto endereco foi mapeado de maneira que os seus componentes se tornaram campos na relação, mas o atributo mais abstrato endereço não foi mapeado.
2° Exemplo (Atributo multi-valorado):
1° opção:
► Pessoa (identidade, nome, peso)
► Telefone (identidade, numero)
Nessa primeira alternativa, o atributo multi-valorado telefone foi mapeado em uma nova relação, que recebe a chave primária de pessoa identidade e o numero que é o número de telefone. A chave primária dessa nova relação Telefone, é uma chave composta, formada pela junção de identidade e numero.
2° opção:
► Pessoa (identidade, nome, peso, tel1, tel2, tel3)
Nessa segunda alternativa foram criados três campos na relação pessoa para receber os valores correspondentes a três telefones. Essa alternativa é adequada quando se estabelece um número fixo da quantidade de números de atributos. No entanto, quando não se sabe esse número, a 1° opção se torna mais adequada.
Mapeamento de entidades Fracas:
No exemplo acima, linha mais grossa que liga Dependente representa que Dependente é uma entidade fraca, ou seja, não existe se Sócio não existir. O seu mapeamento para o modelo lógico relacional de dados fica assim:
► Socio (id, nome, idade)
► Dependente (idSocio, codigo, nome)
A chave primária da relação Dependente é composta da chave primária de Socio mais a chave primaria de Dependente, que nesse caso é o codigo. Portanto, a chave primaria de entidades fracas será sempre chave composta.
Mapeando relacionamentos
Para determinar o tipo de relacionamento em relação a cardinalidade, observa-se os máximos da mesma. Veja o link a seguir com mais detalhes para compreender o conceito de cardinalidade/multiplicidade.
Relacionamentos binários 1:1
► Moto (placa, cor, modelo)
► Motor (codigo, tipo, placaMoto)
Em um relacionamento 1:1, de acordo com os passos acima, escolhe-se uma das relações para receber a chave estrangeira, essa que é a chave primária da relação que ocorre o relacionamento. Obs: Não é regra, mas geralmente, nesses casos, escolhe-se a relação que possui participação total no relacionamento. Nesse exemplo é o motor, pois é (1,1), ou seja irá sempre existir, enquanto moto (0,1) pode ou não existir.
Relacionamentos binários 1:N
► Pessoa (cpf, nome, idade)
► Moto (placa, modelo, cpfPessoa, data, preco)
Em um relacionamento 1:N, escolhe-se a relação “N” (no caso Moto) e inclui como chave estrangeira a chave primária da outra relação. Inclui também os atributos do relacionamento.
Relacionamentos binários N:N
► Funcionario (id, remuneracao, nome)
► Projeto (codigo, nome)
► Trabalha (idFuncionario, codigoProjeto, cargaHoraria)
Em um relacionamento N:N, cria-se uma nova relação e inclui como chave estrangeira, as chaves primarias das relações em que ocorre o relacionamento. A chave primaria dessa nova relação (no caso Trabalha) será uma chave composta. Por fim, carrega também os atributos do relacionamento.
Relacionamento n-ário
► Fornecedor (codigo, nome)
► Produto (codigo, nome)
► Salao (endereco, nome)
► Fornecimento (codigoFornecedor, codigoProduto, enderecoSalao, data, quantidade)
Auto-relacionamento
► Pessoa (cpf, nome, idade, idConjuge)
Generalização / especialização
► Atendente (id, nome, idioma)
► Tecnico (id, nome, curso)
► Analista (id, nome, tipo)
Neste post foram vistos os conceitos necessários para se fazer o correto mapeamento dos diagramas do modelo conceitual para as relações do modelo lógico relacional.
Se teve dúvida em alguns dos conceitos abordados veja o post anterior, que introduz os conceitos de chave primaria, estrangeira e outros: spaceprogrammer.com/bd/introducao-ao-modelo-logico-relacional
2 comentários
Joaquim Manhica · 05/11/2019 às 01:36
Valeu pela explicacao!
vai me ajudadar muito no teste…
Ifafe · 16/04/2020 às 18:49
Foi ótimo. Obrigado!