Buscar

Mapeamento ER de banco de dados relacional

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Transformações entre modelos
Engenharia 
reversa de BD 
relacional
Projeto lógico 
de BD 
relacional
Modelo ER
(nível conceitual)
Modelo relacional
(nível lógico)
Projeto Lógico
• Transformação de um modelo ER (mais abstrato) para o modelo 
relacional (de mais detalhes).
• Não existe uma única forma correta: um DER pode gerar 
diferentes modelos relacionais.
Diferentes modelos do mesmo DER:
• Performances distintas.
• Facilidade ou dificuldade no desenvolvimento e manutenção.
Princípios das regras de tradução
Principais objetivos:
• Boa performance.
• Desenvolvimento e manutenção facilitado.
Principais princípios:
• Evitar junções.
• Diminuir o número de chaves.
• Evitar campos opcionais.
Junções
• Junção: Busca de dados de diversas linhas associadas por 
igualdades de campos.
• Acessos a disco consomem a maior parte do tempo na execução 
de uma instrução.
• Dados de uma linha: geralmente armazenados juntos físicamente.
• Dados necessários em uma única tabela: apenas um acesso a 
disco será necessário.
• Consultas em tabelas diferentes: junções necessárias e com isso 
vários acessos a disco.
Índices
• Estrutura auxiliar que permite ao SGBD checar rapidamente a 
existência de um valor de uma chave.
• Para cada chave é necessário definir um índice.
Permite de forma eficiente controlar:
• A unicidade de chaves primária e alternativa.
• Integridade referêncial para chaves estrangeiras.
• Ocupam espaço considerável em disco.
• Inserções ou remoções podem exigir vários acessos a disco.
Passos de transformação ER para relacional
• Conversão inicial de entidades e seus atributos
• Conversão de relacionamentos e seus atributos
• Conversão de generalização\especialização e seus atributos
Conversão inicial de entidades
• Cada entidade é traduzida em uma tabela.
• Cada atributo define uma coluna da tabela.
• Atributos identificadores definem a chave primária.
PESSOA
Codigo
Nome
Endereço
Pessoa (CodigoPess, Nome, Endereço, DataNasc, DataAdm)
DataNasc
DataAdm
Entidades com relacionamento identificador
Para cada entidade fraca cria-se uma tabela com:
• Chave estrangeira que faz referência à chave primária da entidade 
forte.
• Seus próprios atributos.
• Chave primária composta de: chave estrangeira da entidade forte 
e seus próprios atributos identificadores.
EMPREGADO
(1, 1) (0, n)
nomecodigo nomen° sequência
DEPENDENTE
Dependente(CodigoEmp, NumSeq, Nome)
Entidades com relacionamento identificador
• Exemplo: entidade forte em um relacionamento também tem um 
relacionamento identificador.
FILIAL
(1,1)
(0,n)
(0,n)
(1,1)
codigo
n° empresa
n° filial
EMPRESA
GRUPO
nome
nome
nome
Grupo (CodGrup, Nome)
Empresa (CodGrup, NoEmpresa, Nome)
CodGrup referencia Grupo(CodGrup)
Filial (CodGrup, NoEmpresa, NoFilial, Nome)
CodGrup referencia Grupo(CodGrup)
NoEmpresa referencia Empresa(NoEmpresa)
Implementação de relacionamentos
Três alternativas básicas:
• Fusão de tabelas de entidades
• Adição de colunas
• Tabela própria
Fusão de tabelas de entidades
• Consta em implementar uma única tabela com os atributos do 
relacionamento e as entidades participantes.
• Possível apenas em relacionamentos 1:1.
CONFERÊNCIA ORGANIZAÇÃO
(1, 1) (1, 1)
Conferencia (CodConf, Nome, DataInstOrg, Ender)
CONFERÊNCIA
Código Nome Data Instação Ender
Adição de colunas
• Consta em adicionar em uma tabela uma chave estrangeira que 
faz referência à chave da outra entidade do relacionamento.
• Possível se uma das entidades tem cardinalidade máxima 1.
DEPARTAMENTO LOTAÇÃO
(1, 1) (0, 1)
Departamento(Codigo, Nome)
Empregado (CodEmp, Nome, CodDept, DataLota)
CodDept referencia Departamento(Codigo)
EMPREGADO
Código Nome Data lotação NomeCódigo
Tabela própria
• Implementação de uma tabela para o relacionamento contendo 
chaves estrangeiras referenciando as chaves primárias das 
entidades do relacionamento.
ENGENHEIRO ALOCAÇÃO
(0, n) (0, n)
PROJETO
Código Nome Função TituloCódigo
Engenheiro (CodEng, Nome)
Projeto (CodProj, Título)
Atuação (CodEng, CodProj, Função)
CodEng referencia Engenheiro
CodProj referencia Projeto
Vantagens 
Fusão de tabelas:
• Diminui o número de chaves além da necessidade de realizar 
junções.
• Melhor alternativa quando possível.
Adição de colunas:
• Alternativa preferida quando for inviável fusão de tabelas.
• Menor número de junções necessárias e chaves se comparado 
com a implementação por tabela própria.
Vantagens
Tabela própria:
• Possível independente da cardinalidade.
• Única alternativa para relacionamentos n:n.
Relacionamentos 1:1
• Alternativa preferida é a fusão de tabelas (quando possível).
• Adição de colunas é recomendada quando não for possível a 
fusão de tabelas.
• Implementação por tabela prórpia não é indicada.
Dois casos:
I. Ambas as entidades tem cardinalidade mínima opcional.
II. Demais combinações.
Relacionamentos 1:1 (ambas opcionais)
• Fusão de tabelas inviável.
• Alternativa preferida é adição de colunas.
MARIDO CASAMENTO
(1, 1) (1, 1)
ESPOSA
Identidade Nome Data NomeIdentidadeRegime
Mulher (IdM, Nome, IdM, Data, Regime)
IdM referencia Homem
Homem (IdH, Nome)
Se tentássemos por fusão de tabelas:
Casamento (IdM, IdH, NomeM, nomeH, Data, Regime)
Qual seria a chave primária?
Relacionamentos 1:1 (demais casos)
• Alternativa preferida: fusão de colunas
CORRENTISTA
(1, 1) (0, 1)
CARTÃO 
MAGNETICO
Codigo Nome Data Exp.Codigo
Correntista (CodCorrent, Nome, CodCartao, DataExp)
Relacionamentos 1:1
(0,1) (0,1)
Tabela 
Própria
Adição de 
coluna
Fusão de 
tabelas
3 1 X
3 2 1
3 2 1
(0,1) (1,1)
(1,1) (1,1)
1 - Melhor alternativa
2 - Intermediária
3 - Pior alternativa
X - Inviável
Relacionamentos 1:n
• Alternativa preferida é a adição de colunas.
• Não é possível por fusão de tabelas.
• Tabela própria é possível (não indicada).
EDIFICIO
(1, 1) (1, n)
Edificio (CodEd, Endereço)
Apartamento (CodEd, Num, Area)
CodEd referencia Edificio
APARTAMENTO
Código Endereço AreaNumero
Relacionamentos 1:n
(0,1) (0,n)
Tabela 
Própria
Adição de 
coluna
Fusão de 
tabelas
2 1 X
2 1 X
3 1 X
3 1 X
(0,1) (1,n)
(1,1) (0,n)
(1,1) (1,n)
1 - Melhor alternativa
2 - Intermediária
3 - Pior alternativa
X - Inviável
Relacionamentos n:n
• Implementados unicamente por tabela própria.
• Não é possível por fusão de tabelas.
• Para ser possível de implementar por adição de colunas seria 
necessária uma coluna multivalorada.
MEDICO CONSULTA
(0, n) (0, n)
PACIENTE
CRM Nome Data/hora NomeRG
Medico (CRM, Nome)
Paciente (RG, Nome)
Consulta (CRM, RG, Data/hora)
CRM referencia Medico
RG referencia Paciente
Relacionamentos n:n
(0,n) (0,n)
Tabela 
Própria
Adição de 
coluna
Fusão de 
tabelas
1 X X
1 X X
1 X X
(0,n) (1,n)
(1,n) (1,n)
1 - Melhor alternativa
2 - Intermediária
3 - Pior alternativa
X - Inviável
Relacionamentos de grau maior que 2
• Sem regras específicas.
Pode se fazer da seguinte forma:
• Transformar o relacionamento em uma entidade.
• Ligar por um relacionamento binário as entidades que 
participavam do relacionamento original.
Relacionamentos de grau maior que 2
CIDADE DISTRIBUIDOR
DISTRIBUIÇÃO
PRODUTO
Codigo Nome Codigo Nome
Codigo Nome
(0, n) (0, 1)
(0, n)
Relacionamentos de grau maior que 2
CIDADE DISTRIBUIDOR
PRODUTO
Codigo Nome Codigo Nome
Codigo Nome
DISTRIBUIÇÃO
(1, 1) (1, 1)
(1, 1)
(0, n)
(0, n)(0, n)
Produto (CodProd, Nome)
Cidade (CodCid, Nome)
Distribuidor (CodDistr, Nome)
Distribuição (CodProd, CodCid, CodDistr)
CodProd referencia Produto
CodCid referencia Cidade
CodDistr referencia Distribuidor
Generalização/especialização
Duas alternativas principais:
• Uma tabela para toda hierarquia.
• Uma tabela para cada entidade.
Uma tabela por hierarquia
• É criada uma única tabela para a entidade genérica e entidades 
especializadas.
A tabela irá conter:
I. A chave primária e atributos da entidade genérica.
II. Um atributo tipo (da especialização).
III. Atributos das entidades especializadas.
IV. Atributos de relacionamentosda entidade genérica e das 
especializadas.
Exemplo
DEPARTAMENTOEMPREGADO
SECRETARIA MOTORISTA ENGENHEIRO
PROCESSADOR 
DE TEXTOS PROJETO
RAMO DA 
ENGENHARIA
LOTAÇÃO
Codigo Nome Codigo Nome Codigo Nome
Carteira de
habilitação
CREA
DOMINIO
PARTICIPAÇÃO
Codigo NomeCodigo px
Nome
Tipo
(1,1)(0,n)
(1,n)
(0,n)
(0,n)
(1,1)
(0,n)
(0,n)
Uma tabela por hierarquia
DEPARTAMENTOEMPREGADO LOTAÇÃO
Codigo NomeCodigo
Nome
Tipo
Atributos da entidade genérica: Empregado (CodEmp, Nome, Tipo)
Atributos da referentes a relacionamentos: Empregado (CodEmp, Nome, Tipo, CodDept)
CodDept referencia Departamento
Departamento (CodDept, Nome)
Uma tabela por hierarquia
Atributos das entidades especializadas: 
Empregado (CodEmp, Nome, Tipo, CodDept, CarteiraHab, CREA)
SECRETARIA MOTORISTA ENGENHEIRO
Carteira de
habilitação
CREA
px
Uma tabela por hierarquia
Atributos de relacionamentos das 
entidades especializadas: 
Empregado (CodEmp, Nome, Tipo, 
CodDept, CarteiraHab, CREA, CodRamo)
CodRamo referencia RamoEng
RamoEng (CodRamo, Nome)
SECRETARIA ENGENHEIRO
PROCESSADOR 
DE TEXTOS PROJETO
RAMO DA 
ENGENHARIA
Codigo Nome Codigo Nome Codigo Nome
CREA
DOMINIO
PARTICIPAÇÃO
px
(1,n)
(0,n)
(0,n)
(1,1)
(0,n)
(0,n)
Uma tabela por hierarquia
Esquema completo: 
Departamento (CodDept, Nome)
ProcessText (CodProc, Nome)
RamoEng (CodRamo, Nome)
Projeto (CodProj, Nome)
Empregado (CodEmp, Nome, Tipo, CodDept, Carteira, CREA, CodRamo)
CodDept referencia Departamento
CodRamo referencia RamoEng
Domínio (CodEmp, CodProc)
CodEmp referencia Empregado
CodProc referencia ProcessText
Participa (CodEmp, CodProj)
CodEmp referencia Empregado
CodProj referencia Projeto
Uma tabela por entidade
• Consiste de criar uma tabela para cada entidade da hierarquia.
• A chave primária de cada entidade especializada será também 
uma chave estrangeira para a entidade genérica.
I. Criar para cada entidade uma tabela com seus atributos e 
respectivos relacionamentos além da coluna tipo.
II. Para cada entidade especializada a chave primária será uma 
chave estrangeira referenciando a entidade genérica.
Exemplo
DEPARTAMENTOEMPREGADO
SECRETARIA MOTORISTA ENGENHEIRO
PROCESSADOR 
DE TEXTOS PROJETO
RAMO DA 
ENGENHARIA
LOTAÇÃO
Codigo Nome Codigo Nome Codigo Nome
Carteira de
habilitação
CREA
DOMINIO
PARTICIPAÇÃO
Codigo NomeCodigo px
Nome
Tipo
(1,1)(0,n)
(1,n)
(0,n)
(0,n)
(1,1)
(0,n)
(0,n)
Uma tabela por entidade
Esquema completo: 
Empregado (CodEmp, Nome, Tipo, CodDept)
CodDept referencia Departamento
Motorista (CodEmp, CarteiraHab)
CodEmp referencia Empregado
Engenheiro (CodEmp, CREA, CodRamo)
CodEmp referencia Empregado
CodRamo referencia RamoEng
Departamento (CodDept, Nome)
RamoEng (CodRamo, Nome)
ProcessText (CodProc, Nome)
Projeto (CodProj, Nome)
Dominio (CodEmp, CodProc)
CodEmp referencia Empregado
CodProc referencia ProcessText
Participa (CodEmp, CodProj)
CodEmp referencia Empregado
CodProj referencia Projeto
Vantagens
Uma tabela por hierarquia:
• Todos os dados em uma única linha (sem necessidade de 
junções).
• Chave primária armazenada uma única vez.
Uma tabela por entidade:
• Colunas opcionais que occorem devido atributos que podem ser 
vazios do ponto de vista da aplicação, na outra alternativa as 
colunas opcionais dependem também do tipo de especialização.
Referências
• Sistemas de Banco de Dados, Elmasri, Ranmez e Navathe, 
Shamkant B., Pearson, 6ª edição.
• Projeto de Banco de Dados, Carlos Alberto Heuser, Bookman - 6. 
ed

Continue navegando