Banco de Dados
Parte 4
Profa. Ana Karina Barbosa
Abril/2008
Mapeamento E-R / Relacional
Modelo Conceitual
Modelo Lógico
Mapeamento E-R / Relacional
Estas abordagens propõem modelar os dados em
diferentes níveis de abstração
Abordagem E-R (Modelo Conceitual)
• Independente do SGBD considerado
Abordagem Relacional (Modelo Lógico)
• Modela os dados a nível de SGBD relacional
Um esquema relacional pode ser facilmente obtido
a partir de um esquema conceitual E-R
Existem algumas regras para realização desta
tarefa que foram projetadas com dois objetivos:
Boa performance
Desenvolvimento simplificado
Mapeamento E-R/Relacional
Implementação de entidades
Para cada entidade no esquema E-R, criar uma tabela
correspondente.
Cada atributo da entidade define uma coluna desta
tabela.
Os atributos identificadores correspondem às colunas
que compõem a chave primária da tabela
Código
Endereço
PESSOA
(0,1) Data nascimento
Nome
Esquema relacional simplificado correspondente:
Pessoa (CodPessoa, Nome, Endereco, DataNasc)
Mapeamento E-R/Relacional
Implementação de entidades
Esquema Relacional completo
Especificando a tabela Pessoa
CAMPO
TIPO
NOT
NULL
DESCRIÇÂO
Codigo
Integer
Not Null
Chave Primária
Nome
Varchar(20)
Not Null
Nome do pessoa
Endereço
Varchar(50)
Not Null
Endereço da pessoa
DataNasc
Date
Null
Data de Nascimento
Mapeamento E-R/Relacional
Nomes de Atributos e Nomes de Colunas
Não é aconselhável transcrever diretamente os
nomes dos atributos para nomes de colunas.
Nomes de colunas são referenciados em
programas, por isso:
• Devem ser curtos.
• Não podem conter brancos.
A recomendação é que se use sempre a
mesma abreviatura em todo o Banco de
Dados.
Mapeamento E-R/Relacional
Implementando Relacionamentos (1:1)
Identificar as tabelas das entidades participando do
relacionamento R.
Escolher uma das tabelas e incluir como chave
estrangeira, a chave primária da outra tabela.
Incluir todos os atributos do relacionamento na relação
escolhida.
data
Identificador
regime
1
HOMEM
1
CASAMENTO
Identificador
MULHER
nome
Mulher (IdentM, Nome, IdentH, Data, Regime)
Homem (IdentH, Nome)
nome
Mapeamento E-R/Relacional
Implementando Relacionamentos (1:1)
Especificação das tabelas Homem e Mulher
CAMPO
TIPO
NOT NULL
DESCRIÇÂO
IdentH
Integer
Not Null
Chave Primária.
Nome
Varchar (50)
Not Null
Nome do Homem
CAMPO
TIPO
NOT NULL
DESCRIÇÂO
IdentM
Integer
Not Null
Chave Primária.
Nome
Varchar(50)
Not Null
Nome da Mulher
IdentH
Integer
Null
Iden. do marido. FK tabela
Homem
Data
Date
Null
Data do casamento
Regime
Varchar (50)
Null
Regime: parcial, separação
total, comunhão total
Mapeamento E-R/Relacional
Implementando Relacionamentos (1:1)
1
código
CLIENTE
0,1
TEM
nome
CARTÃO
MAGNÉTICO
código
Data Exp.
Tabela Cliente
CAMPO
TIPO
NOT NULL
DESCRIÇÂO
CodCliente
Integer
Not Null
Chave Primária
Nome
Varchar (50)
Not Null
Nome
CodCartao
Integer
Null
Codigo do Cartao
DataExp
Date
Null
Data de Expiração
Mapeamento E-R/Relacional
Implementando Relacionamentos (1:N)
Identificar a tabela S que representa a entidade do lado
N.
Incluir como chave estrangeira a chave primária da tabela
que representa a entidade do lado 1.
Incluir todos os atributos do relacionamento em S.
Num parcelas
codigo
Taxa juros
1
FINANCEIRA
N
FINANCIA
Id
VENDA
nome
Financeira (Codigo, Nome)
Venda (Id, data, CodFinan, NumParcelas, Txjuros)
data
Mapeamento E-R/Relacional
Relacionamento com Entidade Fraca
Cria-se uma tabela para a entidade fraca e inclui os
seus atributos como campos.
Acrescenta na tabela o identificador da entidade “forte”.
A chave primária da tabela será o identificador da
entidade “fraca” + o identificador da entidade “forte”.
Numero
Sequencia
código
EMPREGADO
1
tem
N
DEPENDENTE
nome
nome
Mapeamento E-R/Relacional
Entidade Fraca
Especificação da Tabela Dependente
CAMPO
TIPO
NOT NULL
DESCRIÇÂO
CodEmp
Integer
Not Null
Chave Primária. FK da
Tabela Empregado
NumSeq
Integer
Not Null
Chave primária
Nome
Varchar (50)
Not Null
Nome do dependente
Mapeamento E-R/Relacional
Implementando Relacionamentos (N:N)
Criar uma nova tabela para representar relacionamento
R.
Incluir como chave estrangeira as chaves primárias das
tabelas que participam em R, estas chaves combinadas
formarão a chave primária da relação.
Incluir também eventuais atributos de R.
código
nome
ENGENHEIRO
N
N
ATUAÇÃO
codigo
PROJETO
função
Engenheiro (CodEng, Nome)
Projeto (CodProj, Titulo)
Atuação (CodEng, CodProj, Função)
titulo
Mapeamento E-R/Relacional
Implementando Relacionamentos - Quando existir
dois ou mais relacionamentos entre as mesmas
entidades
Utilizar as regras anteriores para cada relacionamento
independente dos outros.
N
trabalha
Código
N
ENGENHEIRO
PROJETO
Título
Nome
1
coordena
1
Código
Engenheiro (CodEng, Nome)
Projeto (CodProj, Titulo, CodCoordenador)
Trabalha (CodEng, CodProj)
Mapeamento E-R/Relacional
Implementando Relacionamentos - AutoRelacionamento
Utilizar as mesmas regras descritas anteriormente.
Código
Nome
supervisor
1
supervisão
EMPREGADO
N
supervisionado
Empregado (CodEmp, Nome, CodSupervisor)
Mapeamento E-R/Relacional
Implementando Relacionamentos Auto-Relacionamento
composta
Código
PEÇA
Nome
N
contém
N
componente
Peça (CodPeça, Nome)
Contém(CodPecaComposta, CodPecaComponente)
Mapeamento E-R/Relacional
Exercício 5
Fazer o Modelo Relacional correspondente
ao Modelo Entidade-Relacionamento de um
banco de dados de suporte a uma
Biblioteca Escolar.
Mapeamento E-R/Relacional
Para cada relacionamento com grau maior
que dois (n-ário, n>2):
Criar uma nova tabela para representar o
relacionamento n-ário R.
Incluir como chaves estrangeiras as chaves
primárias das tabelas que representam as
entidades participantes.
Incluir os eventuais atributos de R.
A chave primária da nova tabela é normalmente a
combinação das chaves estrangeiras.
Mapeamento E-R/Relacional
Para cada relacionamento com grau maior que
dois (n-ário, n>2):
código
nome
DISTRIBUIDOR
CIDADE
N
Data início
1
DISTRIBUIÇÃO
N
PRODUTO
código
nome
código
nome
Mapeamento E-R/Relacional
Para cada relacionamento com grau maior
que dois (n-ário, n>2): (cont.)
Produto (CodProd, Nome)
Cidade (CodCid, Nome)
Distribuidor (CodDistr, Nome)
Distribuição (CodPod, CodCid, CodDistr, DataInicio)
Mapeamento E-R/Relacional
Para cada atributo multivalorado
Criar uma nova tabela.
Incluir nesta tabela um atributo correspondente a A.
Incluir a chave primária R da tabela que tem A como
atributo.
A chave primária da nova tabela é a combinação de A e R.
código
nome
CLIENTE
Telefones
Cliente (CodCli, Nome)
Telefone (CodCli, NumTelefone)
(1,N)
Mapeamento E-R / Relacional
Implementação de
generalização/especialização:
Há três alternativas a considerar:
• Uso de uma única tabela para toda hierarquia de
generalização/especialização.
• Uso de uma tabela para cada entidade.
• Uso de uma tabela para cada entidade especializada.
Mapeamento E-R / Relacional
Uma tabela por hierarquia:
Todas as tabelas referentes às especializações de uma
entidade genérica são fundidas em uma única tabela
Esta tabela terá:
• Chave primária correspondente ao identificador da entidade
mais genérica.
• Uma coluna Tipo, que identifica que tipo de entidade
especializada está sendo representada por cada linha da tabela.
• Uma coluna para cada atributo da entidade genérica.
• Colunas referentes aos relacionamentos dos quais participa a
entidade genérica e que sejam implementados pela alternativa
de adicionar colunas à tabela da entidade genérica.
Mapeamento E-R / Relacional
Uma tabela por hierarquia:
Esta tabela terá (Cont.):
• Uma coluna para cada atributo de cada entidade
especializada (que devem ser definidas como
opcionais, já que somente terão valores quando a
linha for referente à entidade especializada em
questão).
• Colunas referentes aos relacionamentos dos quais
participa cada entidade especializada e que sejam
implementados através da adição de colunas à
tabela da entidade.
Mapeamento E-R / Relacional
Uma tabela para cada entidade da hierarquia:
Cria-se uma tabela para cada entidade que
compõe a hierarquia.
Acrescentar o atributo TIPO à tabela referente à
entidade genérica.
Inclui-se a chave primária da tabela
correspondente à entidade genérica, em cada
tabela correspondente a uma entidade
especializada .
Mapeamento E-R / Relacional
Uma tabela para cada entidade especializada:
Cria-se uma tabela para cada entidade
especializada que não possua outra
especialização.
Esta tabela contém tanto os dados da entidade
especializada, quanto os de suas entidades
genéricas.
Esta alternativa pode ser utilizada quando a
especialização for total.
Mapeamento E-R / Relacional
Comparação entre as alternativas:
Vantagem da implementação com tabela única:
• Todos os dados referentes a um ocorrência de entidade
genérica, bem como os dados eferentes a ocorrência de sua
especialização estão em uma única linha.
• A chave primária é armazenada uma única vez.
Vantagem da implementação com uma tabela por
entidade:
• As colunas opcionais que aparecem são aquelas referentes a
atributos que podem ser vazios do ponto de vista da aplicação.
• O controle de colunas opcionais passa a ser feito pelo SGBD e
não só pela aplicação como acontece na abordagem anterior
utilizando o atributo TIPO.
Mapeamento E-R / Relacional
Comparação entre as alternativas:
Vantagem da implementação com uma tabela
por entidade especializada:
• As colunas opcionais que aparecem são aquelas
referentes a atributos que podem ser vazios do
ponto de vista da aplicação.
• Não possui chaves primárias redundantes.
• A chave primária não é também chave estrangeira,
como na solução anterior.
OBS: O projetista deve ponderar os prós e
contras de ambas soluções e optar por aquela
que seja mais adequada ao problema.
Mapeamento E-R/Relacional
Exercício 6
Fazer o Modelo Relacional correspondente
ao modelo Entidade-Relacionamento do
banco de dados de suporte a uma empresa
de engenharia.
Mapeamento E-R/Relacional
Exercício 7
Fazer o Modelo Relacional correspondente
ao modelo Entidade-Relacionamento do
banco de dados de suporte a realização de
Congressos.
Download

Um Modelo de Aplicação Distribuída baseada em