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.