Transformações entre Modelos
Maria Claudia Cavalcanti
IME
Base Bibliog.
Projeto de Banco de Dados – Carlos Heuser
Conceptual Database Design – Batini, Ceri, Navathe
Qual é o ponto de partida?
Esquema
Conceitual
Modelagem lógica
Engenharia reversa
Esquema
Lógico
Qual é o ponto de partida?
Esquema
ER
Mapeamento
ER-Relacional
Engenharia reversa
Esquema
Relacional
Mapeamento ER-Relacional
Diferentes esquemas relacionais podem ser gerados
Refinamentos do esquema relacional gerado são
oriundos do conhecimento maior sobre a aplicação,
inclusive sobre seu desempenho
conhecimento da
aplicação
Refinamento do
esquema
relacional
Esquema
ER
Mapeamento
ER-Relacional
Esquema
Relacional
Mapeamento do E-R para Relacional
Metodologia
–
Eliminação dos identificadores externos;
–
Eliminação de atributos compostos e multi-valorados;
Tradução de cada entidade em uma relação;
–
–
Tradução de cada relacionamento :
(a) relacionamentos n:m requerem uma relação separada
(b) relacionamentos 1:n, 1:1 podem ser modelados pela
adição de atributos às relações já existentes.
–
Tradução de Generalização/Especialização
Eliminação de Identificadores Externos
Transformá-los em identificadores internos no modelo relacional
Universidade
Código_Universidade
Nome
Cidade
Universidade
Código_Universidade
Nome
Cidade
Matrícula
Código_Universidade
Estudante
Número_Estudante
Nome_Estudante
Estudante
Número_Estudante
Nome_Estudante
Idade
Idade
A chave da entidade externa
foi importada para ESTUDANTE
Eliminação de Atributos Compostos
Pessoa
Nome
Idade
Endereço
Pessoa
Pessoa
Rua
CEP
Estado
Nome
Idade
Rua
CEP
Estado
Nome
Idade
Endereço
Eliminação do nível
intermediário
Detalhes são deixados para
a aplicação
Eliminação de Atributos Multivalorados
Entidades
Produto
Produto
Código_Produto
Códigos_de_Materiais (1,n)
Descrição
Preço
Código_Produto
Descrição
Preço
+
Produto__Material
Código_Produto
Código_de_Material
Introdução de nova entidade.
Uma para cada atributo
multi-valorado.
Eliminação de Atributos Multivalorados
Relacionamentos
Instrutor
Código_Instrutor
Departamento
Telefone
(0,m)
(0,m)
Oferece
Instrutor
Número_Max_Estudantes
Trimestre (1,n)
Oferece
Código_Instrutor
Departamento
Telefone
Número_Max_Estudantes
(1,m)
Curso
(1,n)
Curso
Número_Curso
Número_Curso
+
Oferta_de_Cursos
Tradução de Entidade
Empregado
CPF
Nome
Salário
Empregado (CPF, Nome, Salário)
Código_Instrutor
Número_Curso
Trimestre
Tradução de Relacionamentos 1:1
Cliente
(1,1)
(1,1)
tem
Nome
Código_Cliente
Carregamento
Endereço
Código_Cliente
Agrupando numa mesma relação
CLIENTE_CARREGAMENTO (Código_Cliente, Nome, Endereço)
Ambas as entidades têm o mesmo identificador
E se as entidades tiverem diferentes identificadores?
Tradução de Relacionamentos 1:1
CLIENTE
(0,1)
POSSUI
(1,1)
LIMITE_CRÉDITO
CARTÃO_DE_
NÚMERO_CARTÃO
CRÉDITO
TIPO_CARTÃO
NOME
CÓDIGO_CLIENTE
Agrupando em relações distintas
CLIENTE (CÓDIGO_CLIENTE, NOME)
*Uma
das entidades tem
participação opcional
CARTÃO_DE_CRÉDITO (TIPO_CARTÃO, NÚMERO_CARTÃO, LIMITE)
POSSUI (TIPO_CARTÃO, NÚMERO_CARTÃO, CÓDIGO_CLIENTE)
As entidades têm identificadores diferentes
(Qual seria ainda outra alternativa neste caso?)
Tradução de Relacionamentos 1:1
DATA
REGIME
(0,1)
HOMEM
HOM_CPF
CASAMENTO
(0,1)
MULHER
MLH_CPF
NOME
NOME
HOMEM (HOM_CPF, NOME)
*
Ambas as entidades têm
participação opcional
MULHER (MLH_CPF, NOME)
CASAMENTO (HOM_CPF, MLH_CPF, DATA, REGIME)
Que observação pode ser feita sobre a chave primária de CASAMENTO?
Tradução de Relacionamentos 1:n
CIDADE
NOME_CIDADE
POPULAÇÃO
(1,1)
PERTINÊNCIA
Ambas entidades têm
participação
obrigatória
(1,n)
ESTADO
NOME_ESTADO
GOVERNADOR
POPULAÇÃO
CIDADE (NOME_CIDADE, NOME_ESTADO, POPULAÇÃO)
ESTADO (NOME_ESTADO, GOVERNADOR, POPULAÇÃO)
Tradução de Relacionamentos 1:n
VENDEDOR
NOME
TELEFONE
(1,n)
DESCONTO
PREENCHE
participação opcional
(0,1)
PEDIDO
NÚMERO_PEDIDO
DATA
VENDEDOR (NOME_VEND, TELEFONE)
PEDIDO (NÚMERO_PEDIDO, DATA)
PREENCHE (NÚMERO_PEDIDO, NOME_VEND, DESCONTO)
Tradução de Relacionamentos n:m
ESTUDANTE
NÚMERO_ESTUDANTE
NOME_ESTUDANTE
(1,n)
SEMESTRE
MATRÍCULA
GRAU
Independe
das
!
cardinalidades
(1,m)
CURSO
NÚMERO_CURSO
NOME_CURSO
ESTUDANTE (NÚMERO_ESTUDANTE, NOME_ESTUDANTE)
CURSO (NÚMERO_CURSO, NOME_CURSO)
MATRÍCULA (NÚMERO_ESTUDANTE, NÚMERO_CURSO, SEMESTRE, GRAU)
Tradução de Relacionamentos n-ários
COD_PEÇA
PEÇA
DESCRIÇÃO
(1,n)
COD_FORN
NOME
ENDEREÇO
TELEFONE
FORNECEDOR
(1,n)
(1,n)
PROJETO
COD_PROJETO
NOME
DATA_ABERT
QTDE
PEÇA (COD_PEÇA, DESCRIÇÃO)
FORNECEDOR (COD_FORN, NOME, ENDEREÇO, TELEFONE)
PROJETO (COD_PROJETO, NOME, DATA_ABERT)
FORNECIMENTO (COD_PEÇA, COD_FORNECEDOR, COD_PROJETO, QTDE)
E se um dado par peça-projeto só pudesse ser fornecido por um único fornecedor?
Tradução de Auto Relacionamentos
REG_EMP
NOME
DATA_NASC
EMPREGADO
(0,n)
(0,n)
É_COORDENADO
É_COORDENADOR
COORDENA
EMPREGADO (REG_EMP, NOME, DATA_NASC)
COORDENA (REG_SUB, REG_COORDENADOR)
E se o relacionamento for 1:n?
Chaves Primárias
A princípio o atributo identificador da entidade é
considerado como chave primária. No entanto,
atualmente, há alternativas.
A escolha fica entre usar uma chave natural ou uma
chave artificial
–
–
Chave natural (Natural key): chave indicada a partir da análise do
domínio (atributo(s) identificadores da entidade)
Chave artificial (Surrogate key): chave que pode ser criada
artificialmente para identificar unicamente as tuplas de uma
relação, sem significado para o domínio em questão.
Wieringa and De Jonge (1991) definem Surrogate Key como
“ … an object in the database itself. The surrogate is internally generated
by the system and is invisible to the user or application.”
Chaves Primárias
Surrogate keys podem também ser chamadas de
–
–
–
–
–
–
–
Internal identifier,
system-generated key,
database sequence number,
synthetic key,
factless key,
technical key, or
arbitrary unique identifier.
SURROGATE
to put in the place of another: a : to appoint as successor,
deputy, or substitute for oneself b : SUBSTITUTE
Chaves Primárias
–
Chave natural (Natural key):
Vantagens:
identifica naturalmente a relação
Buscas normalmente com base em chaves naturais
– Evita a criação de algo extra
– Exemplos: CPF, código do título de eleitor
–
–
Desvantagens:
Sujeita a mudanças do negócio ou domínio em questão: ao mudarem os
valores da chave natural, todas as referências a cada valor da chave
primária (nas demais tabelas) vão precisar ser alteradas;
– Exemplos:
email - usuário pode querer mudar de email,
códigoEmpregado – uma empresa identifica seus empregados
unicamente por um código, mas ao fundir-se com outra empresa
passa a ter outra codificação que respeitar.
–
Chaves Primárias
–
Chave artificial (Surrogate key):
Vantagens:
–
Não está sujeita às mudanças de negócio: alterações na chave
natural ficam restritas a uma única tabela
Desvantagens:
–
–
–
–
Mais um atributo
Manutenção de valores únicos é uma preocupação do próprio
SGBD ao gerar os números novos a cada inclusão
Como não fazem parte do domínio as SK não são entendíveis
pelos humanos.
Tem-se que manter as chaves candidatas (alternativas) para
acesso direto: busca e visualização do usuário.
Qual usar?
Chaves Primárias
Implementações de Surrogate keys
•
•
•
•
•
•
•
•
•
Universally Unique Identifiers (UUIDs)
Globally Unique Identifiers (GUIDs)
Object Identifiers (OIDs)
Sybase or SQL Server identity column
Oracle SEQUENCE
PostgreSQL serial
MySQL AUTO_INCREMENT
AutoNumber data type in Microsoft Access
AS IDENTITY GENERATED BY DEFAULT in IBM DB2
Chaves Primárias
Ao optar por usar chaves artificiais (surrogate
keys) como chaves primárias, declarar chaves
candidatas
–
–
Estendendo a notação resumida de C. Heuser
Exemplo:
Empregado (IdEmp, matrícula, nome, idCargo, …),
idCargo referencia Cargo,
matricula é chave candidata (única e não nula);
Tradução de Hierarquias
Há duas alternativas principais:
–
Fusão:
–
Fundir todas as entidades em uma única relação
Distribuição:
Uma tabela para cada entidade específica
e uma tabela pra a entidade genérica
Tradução de Hierarquias
Fusão
–
–
–
–
–
Chave primária fica sendo a da entidade mais
genérica
Incluir uma coluna tipo para manter a informação
sobre a especialização
Passar todos os atributos das entidades
especializadas para entidade genérica
Fazer o mesmo para os relacionamentos
Aplicar as regras já conhecidas
Traduzindo Hierarquias
(0,n)
LOTACAO
(1,1)
Código
Descrição
nome
DEPTO
Codigo
nome
EMPREGADO
CREA
SECRETARIA
(1,1)
(1,n)
DOMINIO
Habilitacao
PERTENCE
(0,n)
PARTICIPACAO
(0,n)
(0,n)
Código
Descrição
nome
SW
(0,n)
ENGENHEIRO
MOTORISTA
RAMO
ENGENH
Código
Descrição
nome
PROJETO
Traduzindo Hierarquias - fusão
(0,n)
LOTACAO
CREA
Habilitacao
Codigo
nome
tipo
(1,1)
EMPREGADO
(1,n)
Código
Descrição
nome
(0,n)
(1,1)
DOMINIO
PERTENCE
(0,n)
SW
DEPTO
PARTICIPACAO
(0,n)
(0,n)
Código
Descrição
nome
RAMO
ENGENH
Código
Descrição
nome
PROJETO
Código
Descrição
nome
Código
Descrição
nome
Traduzindo Hierarquias – fusão
EMPREGADO(codEmp, nome, tipo, crea, habilitacao, codRamo, codDepto)
codRamo referencia RAMOENG
codDepto referencia DEPTO
DEPTO (codDepto, nome, desc)
SW (codSW, nome, desc)
Pergunta-se:
RAMOENG(codRamo, nome,desc)
Considerando que a especialização
PROJETO (codProj, nome, desc)
de Empregado é total e exclusiva,
DOMINIO(codSW, codEmp);
qual seria o domínio de tipo?
codSW referencia SW
codEmp referencia EMPREGADO
O que seria necessário verificar para
PARTICIPACAO (codEmp, codProj)
manter a integridade dos dados em
codProj referencia PROJETO
relação às regras de negócio?
codEmp referencia EMPREGADO
E se a especialização fosse inclusiva?
Tradução de Hierarquias - distribuição
Distribuição
–
–
–
–
Chave primária repete-se em cada relação
Nas relações específicas, a chave primária é também
chave estrangeira para a relação genérica
Incluir uma coluna tipo na relação genérica para
manter a informação sobre a especialização
Aplicar as regras já conhecidas
Traduzindo Hierarquias - distribuição
EMPREGADO(codEmp, nome, tipo, codDepto)
codDepto referencia DEPTO
MOTORISTA(codEmp, habilitacao)
codEmp referencia EMPREGADO
ENGENHEIRO (codEmp, CREA, codRamo)
codEmp referencia EMPREGADO
SECRETARIA (codEmp)
codEmp referencia EMPREGADO
DEPTO (codDepto, nome, desc)
SW (codSW, nome, desc)
RAMOENG(codRamo, nome,desc)
PROJETO (codProj, nome, desc)
DOMINIO(codSW, codEmp);
codSW referencia SW
codEmp referencia SECRETARIA
PARTICIPACAO (codEmp, codProj)
codProj referencia PROJETO
codEmp referencia ENGENHEIRO
Pergunta-se:
Porque codEmp, nas relações
específicas, deve ser chave
estrangeira para EMPREGADO?
Porque é importante manter o
atributo tipo na relação genérica?
O que seria necessário verificar
para manter a integridade dos
dados em relação às regras de
negócio?
O que ocorre quando a
especialização é total e inclusiva?
Traduzindo Hierarquias
Tabela única
–
–
Todos os dados em uma única tabela... Não há necessidade de
navegação por outras tabelas para se obter todos os dados a
respeito de um empregado
Economia de espaço por um lado pois a chave primária não é
duplicada, mas há desperdício por outro lado com os nulos que
os campos das tabelas especificas trazem
Várias tabelas
–
–
Conceitos explicitos em relações próprias
Redução de nulos
Há uma terceira alternativa?
Cada caso é um caso!
Nomes
Nomes simples e reduzidos
–
Ex data de nascimento ---> dataNasc
nao usar o nome da tabela
–
–
a não ser em campos parte de chaves primárias
Ex:codigo ----> codEmp
Exercício
nome
12 entidades
13 relacionamentos
dealer
(1,N)
nome
(1,1)
projetista
franchise
(1,N)
(1,1)
nome
(1,1)
(1,1)
(1,N)
(1,N)
(1,1)
(1,M)
(1,N)
(1,N)
(1,1)
(1,1)
(1,N)
entrega
mes
côr
côr
(1,N)
modelo
(1,N)
competidor
(1,1)
v_max
configuração
(1,N)
(1,1)
carro
carroceria
(1,1)
motor
(1,N)
mercado
(1,1)
preço
(1,N)
num
(1,1)
capacidade
(1,N)
nome
estilo
título
Exercício
nome
dealer
(1,N)
nome
(1,1)
projetista
franchise
(1,N)
(1,1)
(1,1)
(1,N)
modelo
(1,N)
nome
(1,1)
(1,N)
(1,N)
(1,1)
(1,M)
(1,N)
(1,N)
(1,1)
entrega
mes
côr
côr
competidor
(1,1) v_max
configuração
(1,1)
(1,N)
(1,1)
motor
(1,1)
(1,N)
carroceria
(1,1)
(1,N)
mercado
(1,1)
preço
(1,N)
num
carro
título
(1,N)
capacidade
nome
estilo
Exercício
nomedealer
mes
franchise
entrega
nomemodelo
mes
nomemodelo
nome
nomeprojetista
nomemodelo
configuração
motor
côr
nomemodelo
v_max
preço
nummotor
num
(M,N)
modelo
carro
nummotor
capacidade
competidor
nomemodelo
Nome
estilo
carroceria
nomeestilo
título
mercado
mercado
título
Exercício
ESQUEMA FINAL:
ENTREGA ( mes, modelo )
FRANCHISE ( dealer, mes, modelo )
MODELO ( modelo, projetista )
MODELO-CÔR ( modelo, cor )
CONFIGURAÇÃO ( modelo, motor, v_max )
CARROCERIA ( modelo, estilo, mercado )
MERCADO ( mercado, competidor )
MOTOR ( motor, capacidade )
CARRO ( modelo, estilo, motor, preço )
Download

Mapeamento ER-Relacional - Systems Biology and Computational