Universidade do Vale do Paraíba Faculdade de Engenharias, Arquitetura e Urbanismo – FEAU Graduação em Engenharia de Computação 10 Semestre de 2008 Disciplina: Banco de Dados II Prof. Lineu Mialaret Aula 8: Modelo Entidade Relacionamento (4) Banco de Dados I Aula 8 - 1 ©Prof. Lineu Mialaret Recursos de Extensão do MER Apesar de ser possível modelar os domínios de conhecimento com os conceitos básicos do Modelo Entidade Relacionamento – MER já apresentados, alguns aspectos semânticos desses domínios podem ser expressos de modo mais adequado por meio de extensões do MER. Há recursos de modelagem que estendem o MER, possibilitando modelos mais precisos e adequados desses domínios. Tais recursos podem ser caracterizados como: Especialização e Generalização. Agregação. Banco de Dados I Aula 8 - 2 ©Prof. Lineu Mialaret Especialização (1) Um conjunto de entidades pode conter subgrupos de entidades, que são, de alguma forma, diferentes das outras entidades do grupo. Ou seja, um subconjunto de entidades pode possuir atributos específicos que não são compartilhados pelas demais entidades. Considere o conjunto de entidades conta, com os atributos numero_conta e saldo. Uma entidade conta pode ser classificada como sendo de um dos seguintes subgrupos de entidades: conta_poupança conta_movimento Cada um destes tipos de conta é descrito por um conjunto de atributos, que além de conter todos os atributos da entidade conta, possui outros atributos adicionais. Exemplo: a entidade conta_poupança pode conter o atributo adicional taxa_juros, enquanto que a entidade conta_movimento pode conter o atributo adicional limite_cheque_especial. Denomina-se de especialização esse processo de projetar subgrupos específicos dentro de um conjunto de entidades. Banco de Dados I Aula 8 - 3 ©Prof. Lineu Mialaret Especialização (2) A entidade conta pode ser especializada em outras entidades Banco de Dados I Aula 8 - 4 ©Prof. Lineu Mialaret Especialização (3) O processo de especialização pode ser aplicado repetidamente, para se refinar o MER. Por exemplo, um banco pode oferecer ainda três tipos de contas movimento: Uma conta movimento do tipo padrão, com uma taxa de 3 reais mensais e 25 folhas de cheque gratuitas por mês. Uma conta movimento do tipo especial, que exige um saldo mínimo de 1000 reais, paga taxa de juros de 2% e sem limite de emissão de folhas de cheques. Uma conta movimento do tipo sênior, para clientes com mais de 65 anos de vida e sem limite de emissão de folhas de cheques. A especialização do conjunto de entidades conta_movimento cria os seguintes subconjuntos de entidades: padrão, com o atributo numero_cheques. especial, com os atributos saldo_minimo e taxa_juros. sênior, com o atributo data_aniversario. Banco de Dados I Aula 8 - 5 ©Prof. Lineu Mialaret Especialização (4) A entidade conta_movimento pode ainda ser especializada em outras entidades Exemplo de Especialização no MER. Banco de Dados I Aula 8 - 6 ©Prof. Lineu Mialaret Especialização (5) Em termos de MER, a especialização é representada pelo triângulo rotulado de ISA. Esse rótulo padrão ISA (do inglês “is a” – é um) indica que uma conta poupança é uma conta ou que uma conta movimento também é uma conta. Esse relacionamento ISA também pode ser entendido como um relacionamento de superclasse e subclasse (lembrar da orientação a objetos). Os conjunto de entidades em nível superior (a entidade mais genérica) e em nível inferior (a entidade mais especializada) são representados de mesmo modo que os conjunto de entidades normais, ou seja, com o uso de retângulos simples. Banco de Dados I Aula 8 - 7 ©Prof. Lineu Mialaret Especialização (6) código entidade de nível superior CLIENTE nome ISA entidade de nível inferior PESSOA FÍSICA cpf PESSOA JURÍDICA sexo cgc Outro Exemplo de Especialização no MER. Banco de Dados I Aula 8 - 8 ©Prof. Lineu Mialaret Generalização (1) O refinamento do conjunto de entidades em níveis sucessivos de subgrupos de entidades indica que ocorre um processo de refinamento top-down (de cima para baixo), no qual as diferenciações entre as entidades são realizadas de modo explícito. Um outro modo de determinar subgrupos de entidades é realizar esse processo de maneira bottom-up (de baixo para cima), ou seja, no qual vários subgrupos de entidades são sintetizados em um conjunto de entidades de mais alto nível, com base em atributos comuns. Baseado no exemplo anterior da especialização, poderia ser identificado numa primeira abordagem, a existência de um conjunto de entidades conta_movimento, com os atributos numero_conta, saldo e limite_cheque_especial e o conjunto de entidades conta_poupança, com os atributos numero_conta, saldo e taxa_juros. Há similaridades entre o conjunto de entidades conta_movimento e o conjunto de entidades conta_poupança, já que ambos possuem atributos comuns. Banco de Dados I Aula 8 - 9 ©Prof. Lineu Mialaret Generalização (2) Esse compartilhamento de atributos pode ser expresso pela generalização, a qual exprime o relacionamento existente entre os conjuntos de entidades de nível superior e um ou mais conjunto de entidades de nível inferior. No exemplo apresentado, conta é um conjunto de entidades de nível superior e conta_poupança e conta_movimento são conjuntos de entidades de nível inferior. Na prática, a generalização é o inverso da especialização, e ambos os processos são aplicáveis no desenvolvimento de um MER. A especialização parte de um único conjunto de entidades e enfatiza as diferenças entre as entidades pertencentes ao conjunto por meio do estabelecimento das diferenças expressas nos conjuntos de entidades de nível inferior. A generalização reconhece a existência de um número de conjuntos de entidades que compartilham características comuns, e procede a sintetização dessas entidades num conjunto de entidades de nível superior. Banco de Dados I Aula 8 - 10 ©Prof. Lineu Mialaret Exemplo de Especialização/Generalização Generalização Especialização Banco de Dados I Aula 8 - 11 ©Prof. Lineu Mialaret Herança de Atributos (1) Um propriedade importante das entidades de nível superior e inferior criadas pelos processos de especialização e generalização é a herança de atributos. Ou seja, os atributos dos conjuntos de entidades de nível superior são herdados pelos conjuntos de nível inferior. Exemplo: os conjuntos de entidades conta_poupança e conta_movimento herdam os atributos do conjunto de entidades conta. Assim a entidade conta_poupança é identificada por seus atributos numero_conta, saldo e taxa_juros. A entidade conta_movimento é identificada pelos atributos numero_conta, saldo e limite_cheque_especial. Os conjuntos de entidades de nível inferior também herdam a participação em conjuntos de relacionamentos. Exemplo: supondo que o conjunto de entidades conta participa (tem) de um conjunto de relacionamentos depositante, os conjuntos de entidades conta_poupança e conta_movimento também participam desse conjunto de relacionamentos. Banco de Dados I Aula 8 - 12 ©Prof. Lineu Mialaret Herança de Atributos (2) A entidade genérica Funcionario tem um relacionamento lotado com Departamento Funcionario Veiculo dirige lotado Projeto ISA Motorista Secretaria Departamento Engenheiro participa A entidade especializada Motorista herda atributos e relacionamentos da entidade Funcionario e ainda tem um relacionamento dirige com Veiculo Banco de Dados I Aula 8 - 13 ©Prof. Lineu Mialaret Restrições de Herança (1) Para a modelagem mais apurada da realidade, o projetista de Banco de Dados pode optar por definir algumas restrições em uma generalização/especialização em particular. O primeiro tipo de restrição envolve a determinação das entidades que podem participar de um dado conjunto de entidades de nível inferior. Tais escolhas podem ser: Definida por condição - um conjunto de entidades de nível inferior definido por condição é selecionado com base na satisfação ou não de condições ou predicados preestabelecidos. Exemplo - todos os clientes com idade acima de 65 anos são membros do conjunto de entidades cliente_senior, e cliente_senior ISA pessoa. Definida pelo usuário - um conjunto de entidades de nível inferior definido pelo usuário não tem seus membros classificados por uma condição, ou seja, as entidades são designadas a um determinado conjunto de entidades especializado por usuários ou projetistas de BD. Banco de Dados I Aula 8 - 14 ©Prof. Lineu Mialaret Restrições de Herança (2) O segundo tipo de restrição determina se uma entidade pode ou não pertencer a mais de um conjunto de entidades de nível inferior dentro de uma generalização/especialização simples. Os conjuntos de entidades de nível inferior podem ser um dos seguintes: Mutuamente exclusivos (disjunção) - restrições mutuamente exclusivas exigem que uma entidade pertença a apenas um conjunto de entidades de nível inferior. Usa-se a palavra-chave disjunto (disjoint) próximo ao triângulo ISA para caracterizar esse tipo de herança. Exemplo - numa hierarquia de membro da universidade, estudante, professor e técnico de laboratório, cada membro da universidade deve ser estudante, professor ou funcionário de laboratório. Sobrepostos (sobreposição) - uma mesma entidade pode pertencer a mais de um conjunto de entidades de nível inferior. Exemplo - numa hierarquia de aluno, este pode ser aluno de graduação e de aluno de pós-graduação ao mesmo tempo. Banco de Dados I Aula 8 - 15 ©Prof. Lineu Mialaret Restrições de Herança (3) Na herança com disjunção, cada Membro da Universidade da da universidade deve ser Estudante, Professor ou Técnico. Membro da Universidade disjunto ISA Estudante Professor Aluno Na herança com sobreposição, um Aluno pode ser Aluno de Graduação e de Aluno de Pós-graduação ao mesmo tempo ISA Graduação Banco de Dados I Técnico Pós-Graduação Aula 8 - 16 ©Prof. Lineu Mialaret Restrições de Herança (3) O terceiro tipo de restrição, a restrição de totalidade, determina se uma entidade de nível superior pertence ou não, a no mínimo, um dos conjuntos de entidades de nível inferior. Essa restrição pode ser uma das seguintes: Total - cada entidade do conjunto de entidades de nível superior deve pertencer a um conjunto de entidades de nível inferior (representada pelo símbolo ||). Exemplo: numa hierarquia de automóvel, automóvel de passeio e automóvel de trabalho, só há instâncias das entidades automóvel de passeio ou automóvel de trabalho (uma instância de automóvel é mapeada para automóvel de passeio ou automóvel de trabalho). Parcial - uma entidade de nível superior pode não pertencer a nenhum dos conjuntos de entidades de nível inferior. Exemplo: numa hierarquia de automóvel, automóvel de passeio e automóvel de trabalho, pode-se ter instâncias das entidades automóvel de passeio e automóvel de trabalho, e instâncias de automóvel. Banco de Dados I Aula 8 - 17 ©Prof. Lineu Mialaret Restrições de Herança (4) Automóvel Na herança total, só há instâncias das entidades Automóvel de Passeio ou Automóvel de Trabalho ISA Automóvel de Passeio Automóvel de Trabalho Automóvel Na herança parcial, há instâncias das entidades Automóvel, Automóvel de Passeio ou Automóvel de Trabalho ISA Automóvel de Passeio Banco de Dados I Automóvel de Trabalho Aula 8 - 18 ©Prof. Lineu Mialaret Agregação (1) Uma das limitações do MER é que não é possível expressar diretamente relacionamentos de relacionamentos. Seja um BD que descreve informações sobre clientes e seus empréstimos. Suponha que cada par cliente e empréstimo (caracterizando o relacionamento devedor) deve possuir um empregado, que vai ser o responsável pelo acompanhamento de determinado empréstimo. Banco de Dados I Aula 8 - 19 ©Prof. Lineu Mialaret Agregação (3) O melhor modo de se modelar a situação descrita anteriormente é usar o conceito de agregação, que se constitui numa abstração por meio da qual relacionamentos são tratados como entidades. A agregação permite: Tratar o relacionamento como uma entidade. Relacionamentos entre relacionamentos Abstrair o relacionamento em nova entidade. No exemplo apresentado, simboliza-se o conjunto de relacionamentos devedor como um conjunto de entidades denominado devedor. Banco de Dados I Aula 8 - 20 ©Prof. Lineu Mialaret Agregação (4) Na agregação, o relacionamento devedor se transforma numa entidade. Exemplo do Uso de Agregação. Banco de Dados I Aula 8 - 21 ©Prof. Lineu Mialaret Agregação (5) consulta Médico Paciente prescreve Medicamento Médico aplica Na agregação, o relacionamento consulta se transforma na entidade Consulta. Consulta recebe Paciente prescreve Medicamento Banco de Dados I Aula 8 - 22 ©Prof. Lineu Mialaret Atributo ou Entidade Uma questão que surge no desenvolvimento de um MER é entre modelar algo como um atributo de uma entidade ou como uma entidade autônoma. Critérios: Se o objeto da modelagem está vinculado a outras entidades ou possui atributos importantes - modelar como entidade. Se há transações que alteram os valores do objeto - modelar como entidade. Exemplo: Carro Carro tem Cor dada cor Banco de Dados I Neste contexto há um vínculo do atributo com uma entidade. Aula 8 - 23 Fabricante ©Prof. Lineu Mialaret Atributo ou Generalização/Especialização Outra questão que surge no desenvolvimento de um MER é entre modelar algo como um atributo de uma entidade ou como uma especialização. Critério: Só utilizar especialização quando as entidades especializadas possuem propriedades particulares (atributos e relacionamentos com outras entidades, por exemplo). Exemplo: Empregado Veiculo categoria funcional ISA Motorista Banco de Dados I Empregado Aula 8 - 24 Engenheiro Técnico ©Prof. Lineu Mialaret Atributo Multivalorados Uma questão que surge no desenvolvimento de um MER é quanto a modelagem de atributos multivalorados. Critério: Depende do contexto. Exemplo: Neste contexto só há necessidade do(s) nome(s) do(s) dependentes Empregado tem Empregado nome Dependente data de nascimento dependente Neste contexto há a necessidade da(s) data(s) de nascimento do(s) dependentes, além dos nome(s) Banco de Dados I Aula 8 - 25 ©Prof. Lineu Mialaret Atributo de Relacionamentos M:M (1) Um atributo pertence a um relacionamento de cardinalidade M:M sempre que: Fixa-se um elemento da 1a entidade, e observa-se o valor do atributo para cada mudança de elemento na 2a entidade. Se o valor do atributo mudar, então o atributo não pertence a 1a entidade. Fixa-se um elemento da 2a entidade, e observa-se o valor do atributo para cada mudança de elemento na 1a entidade. Se o valor do atributo mudar, então ele não pertence a 1ª entidade. Se o atributo não pertence as entidades envolvidas, e é relevante no contexto do relacionamento, então ele é atributo do relacionamento M:M. Banco de Dados I Aula 8 - 26 ©Prof. Lineu Mialaret Atributo de Relacionamentos M:M (2) A quem pertence os atributos preco, quantidade e prazo? Produto preco Banco de Dados I Vende quantidade Aula 8 - 27 Fornecedor prazo ©Prof. Lineu Mialaret Atributo de Relacionamentos M:M (3) Os atributos preco, quantidade e prazo, não podem pertencer a entidade Produto, pois se fosse assim todos os fornecedores deveriam praticar o mesmo preço. Produto Y Produto Vende Fornecedor Fornecedor X Fornecedor Z preco Fornecedor W quantidade prazo Banco de Dados I Aula 8 - 28 ©Prof. Lineu Mialaret Atributo de Relacionamentos M:M (4) Os atributos preco, quantidade e prazo, não podem pertencer a entidade Fornecedor, pois se fosse assim todos os produtos de um fornecedor teriam o mesmo preço. Fornecedor X Produto Fornecedor Vende Produto A Produto B Produto C preco quantidade *Condições prazo Banco de Dados I Aula 8 - 29 ©Prof. Lineu Mialaret Atributo de Relacionamentos M:M (5) Não pertencendo nem a entidade Produto ou a entidade Fornecedor, e sendo relevante no relacionamento Vende, são atributos do relacionamento. Produto Fornecedor Vende preco quantidade prazo Banco de Dados I Aula 8 - 30 ©Prof. Lineu Mialaret Conversão de Relacionamentos (1) Em geral, qualquer relacionamento não binário pode ser representado por relacionamentos binários, por meio da criação de um conjunto artificial de entidades. Substitua o conjunto de relacionamentos R entre os conjuntos de entidades A, B e C por um conjunto de entidades E e três conjuntos de relacionamentos: 1. RA, relacionando E e A 2. RB, relacionando E e B 3. RC, relacionando E e C Opcionalmente, crie um atributo de identificação especial para E Adicione qualquer atributo de R para E Para cada relacionamento (ai , bi , ci) in R, crie Banco de Dados I 1. uma nova entidade ei em E 2. adicione (ei , ai ) para RA 3. adicione (ei , bi ) para RB 4. adicione (ei , ci ) para RC Aula 8 - 31 ©Prof. Lineu Mialaret Conversão de Relacionamentos (2) Algumas ferramentas CASE, destinadas a modelagem, são baseadas em variações do Modelo Entidade Relacionamento – MER que admitem somente relacionamentos binários (ou seja, de grau 2). Elas não permitem a modelagem de relacionamentos ternários (de grau 3) ou maiores, por exemplo. Exemplo: a ferramenta PowerDesigner, da Sybase. Neste caso, a solução é transformar o relacionamento ternário em vários relacionamentos binários, conforme já foi apresentado. Exemplo: considere o seguinte contexto entre um fornecedor que fornece peças para projetos, conforme apresentado na transparência a seguir. Banco de Dados I Aula 8 - 32 ©Prof. Lineu Mialaret Conversão de Relacionamentos (3) Exemplo de um Relacionamento Ternário. Banco de Dados I Aula 8 - 33 ©Prof. Lineu Mialaret Conversão de Relacionamentos (4) Fornecedor a1 a2 Fornece Projeto r1 c1 c2 c3 r2 r3 Peça r5 b1 b2 b3 Banco de Dados I r4 r6 r7 Aula 8 - 34 Grafo de Ocorrências de um Relacionamento Ternário. ©Prof. Lineu Mialaret Conversão de Relacionamentos (5) Neste contexto, a solução para essa transformação é representar o relacionamento fornece como um tipo de entidade fraca, sem nenhuma ou alguma chave parcial (identificador) e com três relacionamentos identificadores (lembrar do conceito de entidade fraca e relacionamento identificador), conforme apresentado na transparência a seguir. Os três tipos de entidades participantes Fornecedor, Peça e Projeto são conjuntamente as entidades proprietárias. Dessa forma a entidade fraca Fornece é identificada por meio da combinação de suas entidades proprietárias Fornecedor, Peça e Projeto. Banco de Dados I Aula 8 - 35 ©Prof. Lineu Mialaret Conversão de Relacionamentos (6) Relacionamento ternário transformado em vários relacionamentos Binários. Banco de Dados I Aula 8 - 36 ©Prof. Lineu Mialaret