Prévia do material em texto
Introdução a Banco de Dados Professor Danilo Abreu Modelagem Lógica • Vamos entrar neste momento na terceira etapa do projeto de um banco de dados: a modelagem lógica. • Nesta etapa, iremos transformar o DER – diagrama de entidade e relacionamento – em uma estrutura que será muito próxima a modelagem física (programação em SQL). • Esta estrutura a chamamos de mapeamento do banco de dados. UEPB - Introdução a Banco de Dados 2 Modelagem Lógica • Antes de começarmos a trabalhar com o mapeamento propriamente dito, vamos inserir o conceito de chave estrangeira. • Uma chave estrangeira é uma chave-primária que não pertence a originalmente a entidade. • É uma chave que vem de outra entidade, ou seja, estrangeira. • De onde vêm? • Da entidade ao qual se há um relacionamento UEPB - Introdução a Banco de Dados 3 Modelagem Lógica • O conceito de chave estrangeira será mais claro nos slides seguintes, quando começarmos a fazer o mapeamento de um DER. • Mapear um DER será transcrever as suas entidades, seus atributos e seus relacionamentos. • Estrutura: • Nome_Da_Entidade(atributo_Chave, atributo1, ..., atributoN, #chave estrangeira); UEPB - Introdução a Banco de Dados 4 Modelagem Lógica • Note que a chave-primária deve vir no início do mapeamento e deve estar sublinhada. • Os demais atributos, não possuem destaque. • Caso a entidade tenha chave estrangeira, esta deve ser representada com o símbolo # (sharp, jogo da velha, tralha,). • O final do mapeamento da entidade deve ter um ; (ponto-e-vírgula) UEPB - Introdução a Banco de Dados 5 Modelagem Lógica • Suponha o seguinte DER: UEPB - Introdução a Banco de Dados 6 Modelagem Lógica • Mapear o exemplo dado anteriormente será transcrever as suas entidades, os seus atributos e os seus relacionamentos, além de apontar as suas chaves. • Primeiro Passo: • Mapear as entidades, ou seja, colocar o nome das entidades: • Empregado(); • Departamento(); UEPB - Introdução a Banco de Dados 7 Modelagem Lógica • Segundo Passo: • Colocar as chaves-primárias de cada entidade: • Empregado(idempregado); • Departamento(iddepartamento); • Note que os atributos que são chaves-primárias devem está sublinhados. • Terceiro Passo: • Colocar os demais atributos das entidades UEPB - Introdução a Banco de Dados 8 Modelagem Lógica • Terceiro Passo: • Empregado(idempregado, nome, cidade, cpf); • Departamento(iddepartamento, nome); • Os atributos são separados por vírgulas. • Quarto Passo: • Caso exista, colocaremos as chaves estrangeiras. • Já sabemos que uma chave estrangeira vêm de fora. • Contudo, para que possamos inserir uma chave estrangeira, vamos usar o conceito de cardinalidade UEPB - Introdução a Banco de Dados 9 Modelagem Lógica • Quarto Passo: • A chave estrangeira irá representar os relacionamentos entre entidades. • No DER representamos os relacionamentos usando um losango. Contudo, nesta etapa não usaremos mais formas geométricas. • Relembrando as principais cardinalidades que usamos serão: • 1..1 (um para um) • 1..N (um para muitos) • N..N (muitos para muitos) UEPB - Introdução a Banco de Dados 10 Modelagem Lógica • Mas que entidade irá receber a chave estrangeira? • Será a entidade mais “forte” do relacionamento. • E como saber quem é a mais forte? A entidade que possuir o N na cardinalidade. Vejamos o exemplo: UEPB - Introdução a Banco de Dados 11 Modelagem Lógica • No exemplo anterior, a entidade que possui o N na relação é a entidade empregado. Na entidade departamento, a cardinalidade é 1. • Portanto, empregado é tida como entidade forte. • Mas quem é a chave estrangeira? • É a chave-primária da entidade fraca que está se relacionando com a entidade forte. UEPB - Introdução a Banco de Dados 12 Modelagem Lógica • Voltando ao Quarto Passo: • Colocar as chaves estrangeiras • Empregado(idempregado, nome, cidade, cpf, #iddepartamento); • Departamento(iddepartamento, nome); • Com isto, terminamos o mapeamento do DER exemplo, pois não á mais relacionamentos e nem atributos para serem descritos. UEPB - Introdução a Banco de Dados 13 Modelagem Lógica • Outras cardinalidades • No exemplo dado, a cardinalidade era apenas de 1..N, contudo, nem sempre nos deparamos com esta situação. • Observe o exemplo no slide seguinte UEPB - Introdução a Banco de Dados 14 Modelagem Lógica UEPB - Introdução a Banco de Dados 15 Modelagem Lógica • Neste exemplo temos algumas situações diferentes: • Um duplo relacionamento entre Empregado e Departamento • Um relacionamento 1..1 • Um relacionamento N..N • Vamos mapear este exemplo da mesma forma que fizemos no primeiro exemplo dado UEPB - Introdução a Banco de Dados 16 Modelagem Lógica • Mapeando: • Empregado(idempregado, nome, cpf); • Departamento(iddepartamento, nome); • Projeto(idprojeto, nome, data_inicio); • Note que até este momento não foi posto nenhuma chave estrangeira. • Vamos fazer neste momento! UEPB - Introdução a Banco de Dados 17 Modelagem Lógica • A primeira, a mais simples, colocamos a da cardinalidade 1..N • Empregado(idempregado, nome, cpf, #iddepartamento); • Departamento(iddepartamento, nome); • Projeto(idprojeto, nome, data_inicio); • A próxima a ser colocada, será a do segundo relacionamento entre empregado e departamento, a que possui cardinalidade 1..1. UEPB - Introdução a Banco de Dados 18 Modelagem Lógica • Veja que ambas tem cardinalidade 1. Ou seja, não há uma entidade “forte”. • Para resolver isto, deveremos fazer uma análise da situação: • Colocaremos a chave estrangeira na entidade que fará mais sentido ter a informação! • Mas como assim?? UEPB - Introdução a Banco de Dados 19 Modelagem Lógica • Vejamos: • TODO departamento terá um empregado que o chefiará. • Porém, NEM TODO empregado chefiará um departamento. • Ou seja, a informação de quem irá chefiar será mais adequada ser colocada na entidade departamento. • Continuando com o mapeamento • Empregado(idempregado, nome, cpf, #iddepartamento); • Departamento(iddepartamento, nome, #empregadochefe); • Projeto(idprojeto, nome, data_inicio); UEPB - Introdução a Banco de Dados 20 Modelagem Lógica • Mas de onde veio esta chave #empregadochefe?? • Quando usamos a chave estrangeira, podemos renomear o atributo que é chave-primária na entidade de origem. • Portanto, #empregadochefe é a mesma coisa que a chave-primária idempregado. • O nome foi modificado apenas para facilitar o entendimento do mapeamento • Ainda falta terminar um relacionamento: • Relação de N..N UEPB - Introdução a Banco de Dados 21 Modelagem Lógica • Este é um caso especial, porém mais simples de se resolver. • Toda vez que tivermos uma relação de N..N, deveremos criar uma nova entidade com o nome das duas entidades, pois como ambas são fortes, não temos como escolher qual irá receber a chave estrangeira. • Nesta nova entidade teremos os atributos chaves-primárias das entidades que se relacionam. • No exemplo, a uma relação de N..N entre empregado e projeto. UEPB - Introdução a Banco de Dados 22 Modelagem Lógica • Mapeando esta situação, teremos: • Empregado(idempregado, nome, cpf, #iddepartamento); • Departamento(iddepartamento, nome, #empregadochefe); • Projeto(idprojeto, nome, data_inicio); • Empregado_Projeto(#idempregado, #idprojeto); • Note que as duas chaves-primárias vão para nova entidade como chave estrangeiras. • Contudo, quando se cria uma entidade de um relacionamento N..N, as duas chaves estrangeiras também serão primárias. Por istoestão sublinhadas. Esta é a única situação que temos duas chaves-primárias em uma entidade. UEPB - Introdução a Banco de Dados 23 Modelagem Lógica • Revisão: • Mapeamento é apenas a transcrição do DER, onde colocamos as entidade, atributos e relacionamentos. • A sua estrutura é: • Nome_Da_Entidade(atributo_Chave, atributosN, ..., #chave estrangeira); • Chave-primária deve ser sublinhada • Chave estrangeira vem acompanhada com o símbolo # UEPB - Introdução a Banco de Dados 24 Modelagem Lógica • Revisão • Em relacionamento 1..1 escolhemos a entidade que faz mais sentido receber a chave estrangeira. • Em relacionamentos 1..N escolhemos a entidade mais forte para receber a chave estrangeira. Que é a entidade que possui o N da cardinalidade. • Em relacionamentos N..N criamos uma nova entidade com o nome das duas entidades e usamos as duas chaves-primárias como chaves estrangeiras. Nesta nova entidade elas serão chaves-primárias UEPB - Introdução a Banco de Dados 25