Post on 27-Nov-2015
Universidade Federal de UberlândiaFaculdade de Engenharia Mecânica
Engenharia Mecatrônica
Banco de dadosProf. Hiran Nonato
Transformações entre modelos (ER Relacional)
Parte 1
Até agora na disciplina
• Introdução a Banco de Dados
• Arquitetura de Banco de Dados
• Modelo Entidade-Relacionamento
• Modelo Entidade-Relacionamento Estendido
• Modelo Relacional
2Banco de Dados - 2012-2
Até agora na disciplina
• Introdução a Banco de Dados
• Arquitetura de Banco de Dados
• Modelo Entidade-Relacionamento
• Modelo Entidade-Relacionamento Estendido
• Modelo Relacional
3Banco de Dados - 2012-2
7 Passos
Até agora na disciplina
• Introdução a Banco de Dados
• Arquitetura de Banco de Dados
• Modelo Entidade-Relacionamento
• Modelo Entidade-Relacionamento Estendido
• Modelo Relacional
Gerar relações a partir das entidades
4Banco de Dados - 2012-2
7 Passos
Passo 1: Tipo-entidade forte
• Modelo Entidade-Relacionamento– Tipo-entidade E
– Atributos a1, a2, a3, ..., na
• Modelo Relacional
– Tabela de n colunas distintas, correspondendo aos n atributos de E
5Banco de Dados - 2012-2
Empregado
cpf
nome
idade
Passo 1: Tipo-entidade forte
• Modelo Entidade-Relacionamento– Tipo-entidade E
– Atributos a1, a2, a3, ..., na
• Modelo Relacional
– Tabela de n colunas distintas, correspondendo aos n atributos de E
6Banco de Dados - 2012-2
Empregado
cpf
nome
idade
Empregado (cpf, nome, idade)
Passo 1: Tipo-entidade forte
• Modelo Entidade-Relacionamento– Tipo-entidade E
– Atributos a1, a2, a3, ..., na
• Modelo Relacional
– Tabela de n colunas distintas, correspondendo aos n atributos de E
7Banco de Dados - 2012-2
Empregado
cpf
Nome
Idade
Empregado (cpf, nome, idade)
Atributo Composto
Atributo derivado
Passo 2: Tipo-entidade fraca
• Modelo Entidade-Relacionamento– Tipo-entidade forte E
– Tipo-entidade fraca A
– Atributos a1, a2, a3, ..., na
• Modelo Relacional– Tabelas de n atributos de A e E, mais chave de E em A
8Banco de Dados - 2012-2
Empregado Tem Dependentes
cpf_emp
nome_emp
nome
sexo
Passo 2: Tipo-entidade fraca
• Modelo Entidade-Relacionamento– Tipo-entidade forte E
– Tipo-entidade fraca A
– Atributos a1, a2, a3, ..., na
• Modelo Relacional– Tabelas de n atributos de A e E, mais chave de E em A
9Banco de Dados - 2012-2
Empregado (cpf_emp, nome_emp)Dependentes(cpf_emp, nome, sexo)
Empregado Tem Dependentes
cpf_emp
nome_emp
nome
sexo
Passo 2: Tipo-entidade fraca
• Modelo Entidade-Relacionamento– Tipo-entidade forte E
– Tipo-entidade fraca A
– Atributos a1, a2, a3, ..., na
• Modelo Relacional– Tabelas de n atributos de A e E, mais chave de E em A
10Banco de Dados - 2012-2
Empregado (cpf_emp, nome_emp)Dependentes(cpf_emp, nome, sexo)
Empregado Tem Dependentes
cpf_emp
nome_emp
nome
sexo
Passo 3: Tipo-relacionamento (1:1)
• Modelo Entidade-Relacionamento– Tipo-relacionamento binário: E1 relacionando com E2
• Modelo Relacional (3 opções para a FK)– Repete-se a PK de E1 em E2 e vice-versa
– Repete-se a PK de E1 em E2
– Repete-se a PK de E2 em E1
11Banco de Dados - 2012-2
Passo 3: Tipo-relacionamento (1:1)
• Modelo Entidade-Relacionamento– Tipo-relacionamento binário: E1 relacionando com E2
• Modelo Relacional (3 opções para a FK)– Repete-se a PK de E1 em E2 e vice-versa
– Repete-se a PK de E1 em E2
– Repete-se a PK de E2 em E1
12Banco de Dados - 2012-2
Chave primária de uma relação que é inserida em outra
relação
Passo 3: Tipo-relacionamento (1:1)
13Banco de Dados - 2012-2
Empregado Gerencia Departamento
cpf_emp
nome_emp
cod_dep
nome_dep
1 1
Passo 3: Tipo-relacionamento (1:1)
14Banco de Dados - 2012-2
Empregado Gerencia Departamento
cpf_emp
nome_emp
cod_dep
nome_dep
1 1
Empregado (cpf_emp, nome_emp, cod_dep)Departamento(cod_dep, nome_dep, cpf_emp)
Passo 3: Tipo-relacionamento (1:1)
15Banco de Dados - 2012-2
Empregado Gerencia Departamento
cpf_emp
nome_emp
cod_dep
nome_dep
1 1
Empregado (cpf_emp, nome_emp, cod_dep)Departamento (cod_dep, nome_dep, cpf_emp)
Empregado (cpf_emp, nome_emp)Departamento (cod_dep, nome_dep, cpf_emp)
Passo 3: Tipo-relacionamento (1:1)
16Banco de Dados - 2012-2
Empregado Gerencia Departamento
cpf_emp
nome_emp
cod_dep
nome_dep
1 1
Empregado (cpf_emp, nome_emp, cod_dep)Departamento(cod_dep, nome_dep, cpf_emp)
Empregado (cpf_emp, nome_emp)Departamento (cod_dep, nome_dep, cpf_emp)
Empregado (cpf_emp, nome_emp,cod_dep)Departamento (cod_dep, nome_dep)
Passo 3: Tipo-relacionamento (1:1)
17Banco de Dados - 2012-2
Empregado Gerencia Departamento
cpf_emp
nome_emp
cod_dep
nome_dep
1 1
Empregado (cpf_emp, nome_emp)Departamento (cod_dep, nome_dep, cpf_emp)
Não pode existir Departamento sem gerentePode existir Empregado que não gerencia um Departamento
Passo 3: Tipo-relacionamento (1:1)
• Outra forma de mapeamento
18Banco de Dados - 2012-2
Homem Namora Mulher
nome
idade
nome
idadeTempo
Passo 3: Tipo-relacionamento (1:1)
• Outra forma de mapeamento
19Banco de Dados - 2012-2
Homem(nome, idade)Mulher(nome, idade, nomeH, Tempo)
Homem Namora Mulher
nome
idade
nome
idadeTempo
Homem(nome, idade)Mulher(nome, idade)
Namoro (nomeH, nomeM, tempo)
Passo 4: Tipo-relacionamento (1:N)
• Modelo Entidade-Relacionamento– Tipo-relacionamento binário: E1 relacionando com E2
• Modelo Relacional
– Repete-se a PK de E1 em E2
• A tabela de E1 terá somente os atributos de E1
• A tabela de E2 terá – os atributos de E2
– a chave de E1 (Chave estrangeira)
– Os atributos do relacionamento
20Banco de Dados - 2012-2
Passo 4: Tipo-relacionamento (1:N)
21Banco de Dados - 2012-2
Empregado Trabalha Departamento
cpf_emp
nome_emp
cod_dep
nome_dep
N 1
Passo 4: Tipo-relacionamento (1:N)
22Banco de Dados - 2012-2
Empregado Trabalha Departamento
cpf_emp
nome_emp
cod_dep
nome_dep
N 1
Empregado (cpf_emp, nome_emp, cod_dep)Departamento (cod_dep, nome_dep)
Passo 4: Tipo-relacionamento (1:N)
• Outra forma de mapeamento
23Banco de Dados - 2012-2
Empregado Trabalha Departamento
cpf_emp
nome_emp
cod_dep
nome_dep
N 1
Empregado (cpf_emp, nome_emp, cod_dep)Departamento (cod_dep, nome_dep)
Trabalha(cpf_emp, cod_dep)
A chave primária do lado N vai para a tabela Trabalha.
Passo 4: Tipo-relacionamento (1:N)
• Outra forma de mapeamento
24Banco de Dados - 2012-2
Empregado Trabalha Departamento
cpf_emp
nome_emp
cod_dep
nome_dep
N 1
Empregado (cpf_emp, nome_emp, cod_dep)Departamento (cod_dep, nome_dep)
Trabalha(cpf_emp, cod_dep)
A chave primária do lado N vai para a tabela Trabalha.
Evita valores null
Passo 5: Tipo-relacionamento (N:M)
• Modelo Entidade-Relacionamento– Tipo-relacionamento binário: E1 relacionando com E2
• Modelo Relacional
– A tabela de E1 terá somente os atributos de E1
– A tabela de E2 terá somente os atributos de E2
– A tabela R (relacionamento) terá:
• A chave primária de E1
• A chave primária de E2
• Os atributos do tipo-relacionamento
– Chave primária de R (PK de E1 + PK de E2)
25Banco de Dados - 2012-2
26Banco de Dados - 2012-2
Empregado Desenvolve Projeto
cpf_emp
nome_emp
cod_proj
nome_proj
N N
Passo 5: Tipo-relacionamento (N:M)
qtd_horas
27Banco de Dados - 2012-2
Empregado Desenvolve Projeto
cpf_emp
nome_emp
cod_proj
nome_proj
N N
Empregado (cpf_emp, nome_emp)Projeto (cod_proj, nome_proj)
Desenvolve (cpf_emp, cod_proj, qtd_horas)
Passo 5: Tipo-relacionamento (N:M)
qtd_horas
28Banco de Dados - 2012-2
Empregado
Supervisiona
cpf_emp
nome_emp
Tipo-relacionamento Unário
Supervisor
Supervisionado
1
N
29Banco de Dados - 2012-2
Empregado
Supervisiona
cpf_emp
nome_emp
1
Empregado (cpf_emp, nome_emp, supervisor)
Tipo-relacionamento Unário
Supervisor
SupervisionadoN
Passo 6: Atributos multivalorados
• Duas opções de mapeamento
– Para cada atributo multivalorado cria-se uma nova relação
– Para cada valor possível do atributo multivalorado cria-se um atributo monovalorado na mesma relação
30Banco de Dados - 2012-2
Empregado
cpf_emp
nome_emp
telefones
Passo 6: Atributos multivalorados
• Para cada atributo multivalorado cria-se uma nova relação
31Banco de Dados - 2012-2
Empregado
cpf_emp
nome_emp
telefones
Empregado (cpf_emp, nome_emp, supervisor)Telefones (cpf_emp, telefone)
Passo 6: Atributos multivalorados
• Para cada valor possível do atributo multivalorado cria-se um atributo monovalorado na mesma relação
32Banco de Dados - 2012-2
Empregado
cpf_emp
nome_emp
telefones
Empregado (cpf_emp, nome_emp, telefoneRes, telefoneCel)
Passo 7: Tipo-relacionamento ternário
• Modelo Entidade-Relacionamento– Tipo-relacionamento ternário: E1 relacionando com E2 e E3
• Modelo Relacional– A tabela de E1 terá somente os atributos de E1
– A tabela de E2 terá somente os atributos de E2
– A tabela de E3 terá somente os atributos de E3
– A tabela R (relacionamento) terá:• A chave primária de E1
• A chave primária de E2
• A chave primária de E3
• Os atributos do tipo-relacionamento
33Banco de Dados - 2012-2
Mapeamento MER MR
1. Mapear todos os tipos-entidade forte
2. Mapear todos os tipos-entidade fraca
3. Mapear todos os tipos-relacionamento 1:1
4. Mapear todos os tipos-relacionamento 1:N
5. Mapear todos os tipos-relacionamento N:M
6. Mapear todos os atributos multivalorados
7. Mapear todos os tipos-relacionamento de grau > 2
34Banco de Dados - 2012-2
Exemplo
• Empregado (cpf, nome, sigla, inicio, supervisor)
• Departamento (sigla, nome, cpf)
• Dependente (cpf, nome, sexo)
• Projeto (numero, nome)
• Desenvolve (cpf, numero, horas)
• Controla (sigla, numero)
36Banco de Dados - 2012-2