Escolar Documentos
Profissional Documentos
Cultura Documentos
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Transformações ER para Relacional
§ Regras gerais
§ Aplicáveis à maioria dos casos
§ Há situações excepcionais
§ Por exigências da aplicação, outros mapeamentos são usados
§ Implementadas em ferramentas CASE
§ Objetivos básicos
§ Bom desempenho
§ Simplificar o desenvolvimento
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Regras gerais de tradução
A. Evitar junções
B. Diminuir o número de chaves
C. Evitar campos opcionais
A. Evitar junções
§ Junções
§ Operação para buscar dados de diversas linhas
associadas pela igualdade de campos
§ Dados de empregados e seus respectivos
departamentos
§ SGBD relacional normalmente armazena os
dados de uma linha contiguamente em disco
§ Junção envolve diversos acessos a disco
§ Preferível ter os dados necessários a uma consulta
em uma única linha
B. Chave e Índice
§ Implementação eficiente do controle de
chaves: SGBD usa um índice
§ Índices tendem a ocupar espaço considerável em
disco
§ Inserção e remoção de entradas em um índice
§ Podem exigir diversos acesso a disco
C. Campos opcionais
§ Campo opcional = campo que pode assumir o
valor vazio (NULL em SQL)
§ SGBD relacional não desperdiça espaço pelo
fato de campos de uma linha estarem vazios
§ Campo opcional não tem influência no
desempenho
§ EVITAR porque controle de campo opcional
pode complicar programação
§ Verifica quais campos podem estar vazios
2. Algoritmo de Mapeamento
Elmasri & Navathe
§ a. Entidades regulares
§ b. Atributos multivalorados
§ c. Entidades fracas
§ d. Relacionamentos
§ d.1 Relacionamentos binários 1:1
§ d.2 Relacionamentos binários 1:N
§ d.3 Relacionamentos binários N:M
§ d.4 Relacionamentos N-ários
§ e. Hierarquias (especialização/generalização)
Exemplo de um Diagrama ER
NEmp NomeEmp Salário NDept Ramal
NomeDept
Trabalha-para 1
N
Empregado Departamento
1 1 1 1
Gerencia
Possui M Controla
N N
Participa-de N
Dependente Projeto
NEmp
Empregado NomeEmp
Salário
Departamento NomeDept
Ramal
Empregado (NEmp,...)
Dependente (NEmp,NomeDep, DataNasc)
NEmp referencia Empregado, por propagação
d. Relacionamentos
§ Tabela própria
§ Adição de colunas a uma das tabelas
§ Fusão de tabelas
§ Alternativa depende da cardinalidade
(máxima e mínima) do relacionamento
d.1 Relacionamentos binários 1:1
d.2 Relacionamentos binários 1:N
d.3 Relacionamentos binários N:M
d.4 Relacionamentos N-ários
d.1. Relacionamento binário
(1:1)
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Relacionamentos binários
(0,1) – (0,1) – ambas opcionais
Adição de Colunas
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Relacionamentos binários
(0,1) – (0,1) – ambas opcionais
Tabela Própria
Mulher (IdentM, Nome)
Homem (IdentH, Nome)
Casamento (IdentM, IdentH, Data, Regime)
IdentM referencia Mulher
IdentH referencia Homem
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Relacionamentos binários
(0,1) – (0,1) – ambas opcionais
Fusão de Tabelas
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Relacionamentos binários
(0,1) – (0,1) – ambas opcionais
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Relacionamentos binários
(0,1) – (1,1) – opcional e obrigatória
Fusão de Tabelas
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Relacionamentos binários
(0,1) – (1,1) – opcional e obrigatória
Adição de Colunas
Correntista (CodCorrent, Nome)
Cartao (CodCartao, DataExp, CodCorrent)
CodCorrent referencia Correntista
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Relacionamentos binários
(0,1) – (1,1) – opcional e obrigatória
Tabela Própria
Correntista (CodCorrent, Nome)
Cartao (CodCartao, DataExp)
CartaoCorrentista (CodCartao, CodCorrent)
CodCorrent referencia Correntista
CodCartao referencia Cartao
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Relacionamentos binários
(0,1) – (1,1) – opcional e obrigatória
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
d.1. Relacionamento binário
(1:1)
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Relacionamentos binários
(1,1) – (1,1) – ambas obrigatórias
Fusão de Tabelas
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Relacionamentos binários
(1,1) – (1,1) – ambas obrigatórias
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
d.2. Relacionamentos binários
(1:N)
“1”
opc.
“1”
obr.
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Relacionamentos binários
(0,1) – (0,N) – ambas opcionais
Adição de Colunas
Financeira (CodFin, Nome)
Venda (IdVenda, Data, CodFin, NoParc, TxJuros)
CodFin referencia Financeira
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Relacionamentos binários
(0,1) – (0,N) – ambas opcionais
Tabela Própria
Financeira (CodFin, Nome)
Venda (IdVenda, Data)
Financiam (IdVenda, CodFin, NoParc, TxJuros)
IdVenda referencia Venda
CodFin referencia Financeira
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Relacionamentos binários
(0,1) – (0,N) – ambas opcionais
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
d.2. Relacionamentos binários
(1:N)
“1”
opc.
“1”
obr.
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Relacionamentos binários
(1,1) – (0,N) – obrigatória e opcional
Adição de Colunas
Departamento (CodDept, Nome)
Empregado (CodEmp, Nome, CodDept, DataLota)
CodDept referencia Departamento
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Relacionamentos binários
(1,1) – (0,N) – obrigatória e opcional
Tabela Própria
Departamento (CodDept, Nome)
Empregado (CodEmp, Nome)
Lotacao (CodEmp, CodDept, DataLota)
CodDept referencia Departamento
CodEmp referencia Empregado
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
Relacionamentos binários
(1,1) – (0,N) – obrigatória e opcional
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
d.3 Relacionamento binário
(N:M)
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
d.3 Relacionamento binário
(N:M)
Tabela Própria
Engenheiro (CodEng, Nome)
Projeto (CodProj, Titulo)
Atuacao (CodEng, CodProj, Funcao)
CodEng referencia Engenheiro
CodProj referencia Projeto
© Carlos A. Heuser
Projeto de Banco de Dados Ed. Sgra & Luzzatto
d.4. Relacionamento N-ario
§ Não são definidas regras específicas
§ O relacionamento é transformado em uma
entidade
§ São aplicadas regras de implementação de
relacionamentos binários
§ Nova entidade Rel
§ Colunas = chaves primárias das tabelas
relacionadas
Relacionamento N-ario
e. Hierarquias
§ Geralmente quatro opções
e.1. Relações : superclasse e subclasses
e.2. Relações : subclasses
e.3. Relação única
e.4. Relação única : atributos tipo
Hierarquias
Empregado
Empregado = Gerente∪Técnico
d Gerente ∩ Técnico = Ø
Gerente Técnico
SalAd Formação
e.1. Relações superclasse+subclasses
NEmp
Empregado (NEmp, ...)
Empregado
Gerente (NEmp, SalAd)
Técnico (NEmp, Formação)
Gerente [NEmp] pà Empregado [NEmp]
d Técnico [NEmp] pà Empregado [NEmp]
πNEmp(Gerente) ∩ πNEmp(Tecnico) = Ø
Gerente Técnico
πNEmp(Gerente)∪πNEmp(Tecnico) =
πNEmp(Empregado)
SalAd Formação
e.1. Relações
superclasse
+
subclasses
d
e.2. Relações subclasses
NEmp
Empregado
Gerente (NEmp, ..., SalAd)
Técnico (NEmp, ..., Formação)
d
d
πNEmp(Gerente) ∩ πNEmp(Tecnico) = Ø
Gerente Técnico
πNEmp(Gerente)∪πNEmp(Tecnico) =
πNEmp(Empregado)
SalAd Formação
d
e.3. Relação única
NEmp
Empregado (NEmp, ..., SalAd, Formação)
Empregado
πNEmp(σSalAd ≠ nulo (Empregado)) ∩
πNEmp(σFormação ≠ nulo (Empregado)) = Ø
d
πNEmp(σSalAd ≠ nulo (Empregado)) ∪
πNEmp(σFormação ≠ nulo (Empregado)) =
Gerente Técnico
πNEmp(Empregado)
SalAd Formação
d
e.4. Relação única: atributos tipo
o
Recomendações
§ e.1. Relações : superclasse e subclasses
§ Funciona para total/partial + disjoint/overlapping
§ e.2. Relações : subclasses
§ Funciona somente para total + disjoint
§ Precisa de OUTER UNION (ou FULL OUTER JOIN)
para obter todas as instâncias da superclasse
§ e.3. Relação única (disjoint)
e.4. Relação única + tipos (overlapping)
§ Trade-off esparsidade vs. eficiência