banco de dados parte 4 profa. ana karina barbosa abril/2008
TRANSCRIPT
Banco de DadosParte 4
Profa. Ana Karina Barbosa
Abril/2008
Mapeamento E-R / Relacional
Modelo Conceitual Modelo Lógico
Mapeamento E-R / RelacionalEstas 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-RExistem algumas regras para realização desta tarefa que foram projetadas com dois objetivos:
Boa performanceDesenvolvimento simplificado
Mapeamento E-R/RelacionalImplementaçã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
PESSOA
Esquema relacional simplificado correspondente:
Pessoa (CodPessoa, Nome, Endereco, DataNasc)
Data nascimento
Endereço
Nome
Código
(0,1)
Mapeamento E-R/Relacional
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
Implementação de entidadesEsquema Relacional completo Especificando a tabela Pessoa
Mapeamento E-R/Relacional
Nomes de Atributos e Nomes de ColunasNã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/RelacionalImplementando 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.
HOMEM MULHERCASAMENTO1 1
Mulher (IdentM, Nome, IdentH, Data, Regime)
Homem (IdentH, Nome)
data regime
Identificador Identificador
nome nome
Mapeamento E-R/RelacionalImplementando Relacionamentos (1:1)
Especificação das tabelas Homem e Mulher
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
CAMPO TIPO NOT NULL DESCRIÇÂO
IdentH Integer Not Null Chave Primária.
Nome Varchar (50)
Not Null Nome do Homem
Mapeamento E-R/Relacional
CLIENTECARTÃO
MAGNÉTICOTEM
1 0,1códigocódigo
nome Data Exp.
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/RelacionalImplementando 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.
FINANCEIRA VENDAFINANCIA1 N
Financeira (Codigo, Nome)
Venda (Id, data, CodFinan, NumParcelas, Txjuros)
Num parcelas Taxa juros
codigo Id
nome data
Mapeamento E-R/RelacionalRelacionamento 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”.
EMPREGADO DEPENDENTEtem1 N
código
nome
NumeroSequencia
nome
Mapeamento E-R/Relacional
Entidade FracaEspecificaçã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/RelacionalImplementando 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.
ENGE-NHEIRO
codigo
titulocódigo
nomePROJETOATUAÇÃO
N N
Engenheiro (CodEng, Nome)
Projeto (CodProj, Titulo)
Atuação (CodEng, CodProj, Função)
função
Mapeamento E-R/RelacionalImplementando Relacionamentos - Quando existir dois ou mais relacionamentos entre as mesmas entidades
Utilizar as regras anteriores para cada relacionamento independente dos outros.
Engenheiro (CodEng, Nome)
Projeto (CodProj, Titulo, CodCoordenador)
Trabalha (CodEng, CodProj)
PROJETOENGENHEIROtrabalhaN N
coordena1 1
Código
Título
CódigoNome
Mapeamento E-R/Relacional
Implementando Relacionamentos - Auto-Relacionamento
Utilizar as mesmas regras descritas anteriormente.
EMPREGADO supervisão
supervisor
supervisionado
1
N
Empregado (CodEmp, Nome, CodSupervisor)
Código
Nome
Mapeamento E-R/Relacional
Implementando Relacionamentos - Auto-Relacionamento
PEÇA contém
compostaN
N
Peça (CodPeça, Nome)
Contém(CodPecaComposta, CodPecaComponente)
Código
Nomecomponente
Mapeamento E-R/Relacional
Exercício 5Fazer o Modelo Relacional correspondente ao Modelo Entidade-Relacionamento de um banco de dados de suporte a uma Biblioteca Escolar.
Mapeamento E-R/RelacionalPara 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/RelacionalPara cada relacionamento com grau maior que dois (n-ário, n>2):
CIDADEDISTRI-BUIDOR
códigonome
PRODUTOcódigonome
DISTRI-BUIÇÃO
N
N 1
códigonome
Data início
Mapeamento E-R/RelacionalPara 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/RelacionalPara 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.
CLIENTETelefones código
nome
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 / RelacionalUma tabela por hierarquia:
Todas as tabelas referentes às especializações de uma entidade genérica são fundidas em uma única tabelaEsta 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 / RelacionalUma 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 / RelacionalUma 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 / RelacionalComparaçã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 / RelacionalComparaçã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 6Fazer 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 7Fazer o Modelo Relacional correspondente ao modelo Entidade-Relacionamento do banco de dados de suporte a realização de Congressos.