Você está na página 1de 49

Bancos de Dados I

Junho/2004

Mapeamento do Modelo ER para o


Modelo Relacional

Marcelino Teófilo Hiyelekwa


Mapeamento entre Modelos

 As formas de modelagem ER e Relacional permitem


estabelecer dois níveis de abstração:
 Conceitual
 Lógico

 Projeto Lógico (Modelo Lógico):


 Obtido a partir da transformação do modelo ER para o
Relacional.
Mapeamento entre Modelos
 Conteúdo:
 Modelagem de uma Empresa
 Passo 1 : Mapear Conjuntos de Entidades Regulares
Passo 2: Mapear Conjuntos de Entidades Fracas
 Passo 3: Mapear Conjuntos de Relacionamento
Binário 1:1
 Passo 4: Mapear Conjuntos de Relacionamento
Binário Regular 1:N
 Passo 5: Mapear Conjuntos de Relacionamento
Binário M:N
 Passo 6: Mapear Conjuntos de Relacionamentos n-
ário, n>2
 Passo 7: Mapear Atributos Multi-valorados
TRANSFORMAÇÃO DE DIAGRAMAS EM
TABELAS

 A regra geral é criar uma tabela para cada


entidade e outra para a relação;
 No entanto, há situações em que se pode
evitar a criação da tabela representativa da
relação.
- A questão prende-se com o facto de haver a
possibilidade de existirem valores nulos nos atributos
das tabelas, possibilidade essa que deve ser reduzida
ou mesmo eliminada, por forma a aumentar a
integridade dos dados
Transformação ER para Relacional

Modelo ER Modelo Relacional


Classe de Entidades Tabela (Relação)
Entidade Linha (Tupla)
Atributo Coluna (Atributo)
Atributo Multivalorado Tabela Auxiliar
Atributo Identificador Chave
Atributo Composto Várias Colunas
Relacionamento Ligações
1. Mapear Conjunto de Entidades
Regulares

 Cada entidade é traduzida para uma tabela.


 Cada atributo (simples) da entidade define uma coluna da
tabela.
 Caso exista atributo composto, inclua todos os atributos
elementares que compõem o atributo composto
 A coluna correspondente ao atributo identificador é chave
primária
Cliente(codigocli, nome, endereco, datanasc)
Cliente

data de nascimento
endereço
nome
código
Mapear Conjunto de Entidades
Regulares (Cont.)

 Relações de 1-1
 Ambas as entidades são obrigatórias:
- as duas entidades e a relação entre elas podem ser
transformadas numa única tabela.
 Apenas uma das entidades é obrigatória:
- a transformação do modelo origina a necessidade
de criar duas tabelas, uma para cada uma das
entidades.
A tabela da entidade obrigatória deve incluir a
chave da tabela da entidade não obrigatória
Mapear Conjunto de Entidades
Regulares (Cont.)

 Relações 1-1 (Cont.)


 Nenhuma das entidades é obrigatória:
- a decisão passa por permitir ou não a existência de nulos nas
tabelas;
- se usarmos a transformação referida no ponto anterior, a
ocorrência de nulos verifica-se inevitavelmente se forem
criadas apenas duas tabelas.

- Se não for permitido, terão de ser criadas 3 tabelas: uma


para cada uma das entidades e outra para a relação.
Mapear Conjunto de Entidades
Regulares (Cont.)

 Relação de 1-N
 Ambas as entidades são obrigatórias:
- não é necessário criar uma tabela para
representar a relação;

- No entanto, dependendo da natureza da


informação armazenada, pode eventualmente ser
necessário criar uma tabela para a relação
( caso de querermos preservar o histórico das
alterações).
Mapear Conjunto de Entidades
Regulares (Cont.)

 Relação de 1-N (Cont.)


 Apenas uma entidade é obrigatória
- Entidade do lado do 1
- pode ser necessário criar 3 tabelas para evitar ocorrência
na tabela do lado do N;
- torna-se possível registar na tabela da relação os atributos
próprios desta relação;
 Entidade do lado do N
- Não é necessário criar uma tabela para a relação;
- Cria-se uma tabela para cada entidade, e coloca-se a chave
da entidade do lado do 1 na tabela da entidade do lado do N
Mapear Conjunto de Entidades
Regulares (Cont.)

 Relações de 1-N (Cont.)


 Nenhuma das entidades é obrigatória
- Se criarmos uma tabela para a relação, garantimos
a não ocorrência de nulos e a possibilidade de registar
atributos próprios da relação;

- Se criarmos apenas as tabelas das entidades,


colocando a chave de uma na tabela da outra,
poderemos ter ocorrência de nulos
Mapear Conjunto de Entidades
Regulares (Cont.)

 Relação de N-N
 O carácter obrigatório das entidades não é relevante;

 Temos sempre a necessidade de criar tabelas próprias


para a relação;

 A tabela da relação contém as chaves de cada uma


das entidades bem como os atributos próprios da
relação
Mapear Conjunto de Entidades
Regulares (Exemplo)
Mapear Conjunto de Entidades
Regulares (Exemplo)

 Primeiro Passo:
Funcionário = {FNúmero, FNome, Endereço, Salário}
Departamento = {DNúmero, DNome}
Projeto = {PNúmero, PNome}
 OBSERVAÇÕES:
1) O atributo "Localização" não foi representado na relação
"Departamento" pois é um atributo multi-valorado e será
tratado no passo 7.

2) O conjunto de entidade "Dependente", é um conjunto de


entidade fraco e será tratado no seguinte, o passo 2.
Mapear Conjuntos de Entidades Fracas

 Para cada conjunto de entidade fraca F no esquema


ER cria-se uma relação R formada por todos os
atributos do conjunto de entidade fraca, mais os
atributos que são chave das relações que mapeiam os
conjuntos de entidades envolvidos pelo conjunto de
relacionamento total que torna esse conjunto de
entidade fraca.
 A chave da relação que mapeia o conjunto de
entidade fraca é a chave desse conjunto de entidade
concatenada com as chaves das relações que
mapeiam os demais conjuntos de entidades
envolvidos no conjunto de relacionamento total que
torna esse conjunto de entidade fraca.
Mapear Conjuntos de Entidades Fracas

 É importante notar que um conjunto de entidade


fraca só pode ser mapeado quando os demais
conjuntos de entidades envolvidos no conjunto de
relacionamento total, que torna esse conjunto de
entidade fraca, já estiverem mapeados.
Mapear Conjuntos de Entidades Fracas

1 n
Empregado Atuação Dependente

código nome num nome


seq

 Mapeando para o Modelo Relacional:


 Empregado(cod_empregado, nome)
 Dependente(cod_empregado, num_seq, nome)

 Chave primária da entidade fraca:


 Composta
Mapear Conjuntos de Entidades Fracas
(Exemplo)
Mapear Conjuntos de Entidades Fracas
(Exemplo)

 Primeiro Passo:
Funcionário = {FNúmero, FNome, Endereço, Salário}
Departamento = {DNúmero, DNome}
Projeto = {PNúmero, Pnome}
 
 Segundo Passo:
Dependente = {DependNome, FNúmero, DataNiver,
Parentesco}
Mapear Relacionamentos

 A tradução do relacionamento depende da


cardinalidade das entidades que participam do
relacionamento.

 Formas básicas de tradução:


 Tabela própria
 Colunas adicionais dentro da tabela de entidade
Mapear Conjuntos de Relacionamentos
Binário 1:1

 O mapeamento de conjuntos de relacionamentos nem


sempre resultam em uma nova relação, como é o
caso dos conjuntos de relacionamento binário 1:1.

 Deve-se identificar os conjuntos de entidades E1 e E2


que participam do relacionamento. Um dos conjuntos
de entidades deve ser escolhido, por exemplo E1, e
acrescenta-se a ele os atributos do conjunto de
relacionamento e ainda os atributos chave da relação
que mapeia o outro conjunto de entidade. Deve-se
ressaltar que os atributos chave do conjunto de
entidade E2 são incluídos como atributos não chave
no conjunto de entidade E2
Mapear Conjuntos de Relacionamentos
Binário 1:1
Mapear Conjuntos de Relacionamentos
Binário 1:1

 Primeiro Passo:
Funcionário = {FNúmero, FNome, Endereço, Salário}
Departamento = {DNúmero, Dnome, FNúmero, DataIni}
Projeto = {PNúmero, Pnome}
 
 Segundo Passo:
Dependente = {DependNome, FNúmero, DataNiver,
Parentesco}
 
 Terceiro Passo:
Os atributos FNúmero e DataIni são adicionados à relação
"Departamento", definida no primeiro passo. Note que o
atributo Fnúmero é adicionado como um atributo não chave
na relação "Departamento".
Mapear Conjuntos de Relacionamento
Binário Regular 1:N

 Os conjuntos de relacionamento binário regular (não


fraco) 1:N também não são representados como
novas relações. Primeiro identifica-se o conjunto de
entidade que participa da relação com cardinalidade N
que será chamada de B1 e o outro conjunto de
entidade chamada de B2.
 Os atributos do conjunto de relacionamento são
acrescentados no conjunto de entidade B1, ou seja, o
conjunto de entidade com cardinalidade N. Os
atributos chave da relação que mapeia o conjunto de
entidade que participa com cardinalidade 1,
representado por B2, são também acrescentados no
conjunto de entidade B1 como atributos não chave.
Mapear Conjuntos de Relacionamento
Binário Regular 1:N
Mapear Conjuntos de Relacionamento
Binário Regular 1:N

 Primeiro Passo:
Funcionário = {FNúmero, FNome, Endereço, Salário,
SuperNúmero, DNum}
Departamento = {DNúmero, Dnome, FNúmero, DataIni}
Projeto = {PNúmero, Pnome, DNro}
 
 Segundo Passo:
Dependente = {DependNome, FNúmero, DataNiver, Parentesco}
 
Terceiro Passo:
Os atributos FNúmero e DataIni são adicionados à relação
"Departamento", definida no primeiro passo. Note que o atributo
Fnúmero é adicionado como um atributo não chave na relação
"Departamento".
 
Mapear Conjuntos de Relacionamento
Binário Regular 1:N

 Quarto Passo:
Neste passo são mapeados os relacionamentos:
supervisionar, trabalhar e controlar.

 Avaliando o relacionamento supervisionar, nota-se que


este relacionamento não possui atributos, logo, apenas o
atributo SuperNúmero foi adicionado a relação
"Funcionário", definida no primeiro passo.
 O mesmo acontece com o relacionamento trabalhar;
apenas o atributo DNum foi adicionado a relação
"Funcionário".
 No relacionamento controlar, que também não possui
atributos, foi adicionado o atributo DNro na relação Projeto
que já havia sido definida no primeiro passo.
Relacionamentos 1:N ou N:1

n 1
Empregado colocado Departamento

datacolocacao
código nome código nome

 Esquema relacional correspondente:


 Departamento(coddepto, nome)
 Empregado(codemp, nome, coddepto, datacolocacao)
Relacionamentos 1:N ou N:1

 Empregado:
codemp nome coddepto datacolocacao
101 João 1 30/12/1976
102 José 2 12/06/2001
103 Maria 1 21/03/1987

 Departamento:
coddepto nome
1 Gerência
2 Vendas
3 Compras
Mapear Relacionamento Binário M:N

 Para cada relacionamento binário M:N cria-se uma


nova relação.

 Os atributos da relação são os atributos do conjunto


de relacionamento juntamente com os atributos
chave das relações que mapeiam os conjuntos de
entidades envolvidos.

 A chave da relação é a concatenação dos atributos


chave das relações que mapeiam os conjuntos de
entidades envolvidos
Mapear Relacionamento Binário M:N
Mapear Relacionamento Binário M:N

 Primeiro Passo:
Funcionário = {FNúmero, FNome, Endereço, Salário,
SuperNúmero, DNum}
Departamento = {DNúmero, Dnome, FNúmero, DataIni}
Projeto = {PNúmero, Pnome, DNro}
 
 Segundo Passo:
Dependente = {DependNome, FNúmero, DataNiver,
Parentesco}
 
 Terceiro Passo:
Os atributos FNúmero e DataIni são adicionados à relação
"Departamento", definida no primeiro passo. Note que o
atributo Fnúmero é adicionado como um atributo não
chave na relação "Departamento".
 
Mapear Relacionamento Binário M:N

 Quarto Passo:
 Neste passo são mapeados os relacionamentos:
supervisionar, trabalhar e controlar.
 Avaliando o relacionamento supervisionar, nota-se que
este relacionamento não possui atributos, logo, apenas o
atributo SuperNúmero foi adicionado a relação
"Funcionário", definida no primeiro passo.
 O mesmo acontece com o relacionamento trabalhar;
apenas o atributo DNum foi adicionado a relação
"Funcionário".
 No relacionamento controlar, que também não possui
atributos, foi adicionado o atributo DNro na relação Projeto
que já havia sido definida no primeiro passo.
Mapear Relacionamento Binário M:N

 Quinto Passo:
 O relacionamento participar que envolve os
conjuntos de entidades "Funcionário" e "Projeto", é
avaliado neste passo.

Cria-se uma nova relação:


 Participar = {FNum, PNum, horas}
Mapear Relacionamento Binário M:N

n n
Engenheiro Atuação Projeto

código nome função código título

 Esquema relacional correspondente:


 Engenheiro(codeng, nome)
 Projeto(codproj, titulo)
 Atuacao(codeng, codproj, funcao)
Auto-Relacionamento
 Além das relações das entidades, cria-se uma para o
relacionamento.
N N
PEÇA

COMPOSIÇÕES

Relações: quantidade
•Peca(cod_peca, descricao, peso, cor)
•Composioes(cod_peca, cod_peca_compoe, quantidade)
Mapear Conjuntos de Relacionamentos
n-ário, n>2

 Para conjuntos de relacionamentos n-ário, n>2 sempre


considera-se que possuam cardinalidade
vários:vários:vários. Para cada conjunto de
relacionamento será criada uma nova relação cujos
atributos próprios são os do (se existirem) e cuja chave é
formada pelos atributos chave das relações que mapeiam
os conjuntos de entidades envolvidos.

 Os Conjuntos relacionamentos de rede ordem maior que


três são tratados da mesma maneira que os ternários. Seu
mapeamento cria uma relação para cada Conjuntos
relacionamentos e esta relação possui: os atributos do
Conjuntos relacionamentos como atributos próprios e,
como chave, os atributos concatenados de cada relação
que mapeia os Conjuntos relacionamentos envolvidos.
Mapear Conjuntos de Relacionamentos
n-ário, n>2
Mapear Conjuntos de Relacionamentos
n-ário, n>2

 Oferecer = {OCod, CCod, FNum, Horário}


Mapear Atributos Multi-valorados

 Existem duas maneiras de mapear atributos multi-


valorados.

 A primeira maneira não leva-se em conta


conhecimento adicional sobre o atributo que está
sendo mapeado. Para cada atributo multi-valorado
cria-se uma nova relação que tem como chave os
atributos chave da relação a qual pertencia
juntamente com o atributo multi-valorado tomado
como um atributo mono-valorado.
Mapear Atributos Multi-valorados

 A segunda forma de mapear atibutos multi-valorados


leva-se em conta o conhecimento adicional sobre o
atributo que está sendo mapeado.

 Em alguns casos é possível determinar a quantidade


de ocorrências de valores nos atributos.

 Quando isso acontece e essa quantidade é pequena,


pode-se instanciar essa quantidade de atributos como
mono-valorados na mesma relação que mapeia o
conjunto de entidade ou conjunto de relacionamento
ao qual o atributo multi-valorado está associado.
Mapear Atributos Multi-valorados

 Esta segunda forma de mapeamento impede a


automação do procedimento de mapeamento do ME-
RX para o modelo Relacional
Mapear Atributos Multi-valorados
Mapear Atributos Multi-valorados
 Primeiro Passo:
Funcionário = {FNúmero, FNome, Endereço, Salário,
SuperNúmero, DNum}
Departamento = {DNúmero, Dnome, FNúmero, DataIni}
Projeto = {PNúmero, Pnome, DNro}
 
 Segundo Passo:
Dependente = {DependNome, FNúmero, DataNiver, Parentesco}
 
 Terceiro Passo:
Os atributos FNúmero e DataIni são adicionados à relação
"Departamento", definida no primeiro passo. Note que o atributo
Fnúmero é adicionado como um atributo não chave na relação
"Departamento".
Mapear Atributos Multi-valorados

 Quarto Passo:
 Neste passo são mapeados os relacionamentos:
supervisionar, trabalhar e controlar.
 Avaliando o relacionamento supervisionar, nota-se que
este relacionamento não possui atributos, logo, apenas o
atributo SuperNúmero foi adicionado a relação
"Funcionário", definida no primeiro passo.
 O mesmo acontece com o relacionamento trabalhar;
apenas o atributo DNum foi adicionado a relação
"Funcionário".
 No relacionamento controlar, que também não possui
atributos, foi adicionado o atributo DNro na relação Projeto
que já havia sido definida no primeiro passo.
Mapear Atributos Multi-valorados
 Quinto Passo:
 O relacionamento participar que envolve os conjuntos de
entidades "Funcionário" e "Projeto", é avaliado neste
passo.
Cria-se uma nova relação:
Participar = {FNum, PNum, horas}

 Sexto Passo:
 Nesta modelagem não há relacionamento n-ário, n>2
 

Sétimo Passo:
 LocalDep = {DNúmero, Localização}
Relacionamentos Múltiplos

 Uma relação para cada classe de entidades.


 Uma relação para correspondente ao relacionamento, contendo as chaves de
cada conjunto de entidades e dos atributos se estes existirem.

N N
PROFESSOR P_D_A DISCIPLINA

N
Relações: ALUNO
•Professor(cod_professor, nome, area_atuacao)
•Disciplina(cod_disciplina, nome, descrição)
•Aluno(matricula, nome, endereco, data_nascimento)
•P_D_A(cod_professor, cod_disciplina, matricula)
Generalização e Especialização

 Solução 1:
 Uma relação para entidade principal.
 Uma relação para cada uma das entidades especializadas, todas elas contendo a
chave da entidade principal.
Número
Limite_Especial

Saldo

Taxa_Rendimento
CONTA

É UMA

Relações: CORRENTE POUPANÇA


•Conta(numero, saldo)
•Conta_Corrente(numero, limite)
•Conta_Poupanca(numero, taxa_rendimento)
Generalização e Especialização

 Solução 2:
 Cria-se somente as relações correspondente a cada uma das classes de
entidades especializadas.

Número
Limite_Especial

Saldo

Taxa_Rendimento
CONTA

É UMA

Relações: CORRENTE POUPANÇA


•Conta_Corrente(numero, saldo, limite)
•Conta_Poupanca(numero, saldo, taxa_rendimento)

Você também pode gostar