Bases de Dados Extensões ao Modelo E-A Especialização / generalização Especialização top-down a partir da super-classe identificam-se as subclasses Generalização bottom-up a partir das sub-classes identifica-se a super-classe 2 1
Especialização / generalização Representação com "is a" 3 Especialização / generalização Atributos comuns entre entidades p.ex. entre funcionário e cliente ambos tem nome e morada criar uma entidade pessoa funcionário e cliente têm atributos específicos adicionais Entidades específicas herdam das genéricas atributos participação em associações 4 2
Especialização / generalização 5 Especialização / generalização Especialização sucessiva funcionário e cliente subclasses de pessoa funcionário_permanente e funcionário_temporário subclasses de funcionário Herança múltipla quando são várias as entidades de onde herda 6 3
Condições de especialização Definida por condição normalmente dependente do valor de um atributo p.ex. tipo de conta ser conta à ordem ou conta a prazo Definida pelo utilizador utilizador coloca ou retira nas super- e sub-classes p.ex. o gestor determina quando é que o funcionário passa de funcionário_temporário a funcionário_permanente 7 Condições de especialização Disjunta quando só pode pertencer a uma das sub-classes p.ex. conta ser ou conta à ordem ou conta a prazo Sobreposta quando pode estar presente em várias sub-classes p.ex. o funcionário que é também cliente do banco 8 4
Condições de especialização Total quando tem que pertencer a uma das sub-classes p.ex. conta ser uma de conta à ordem ou conta a prazo Parcial quando pode pertencer apenas à super-classe p.ex. o funcionário que não pertence a equipa nenhuma 9 Condições de especialização Impacto das modificações à BD atenção às inserções e remoções p.ex. remover de super-classe p.ex. inserir em sub-classe efeitos dependem das condições de especialização 10 5
Agregação Gestão das tarefas dos funcionários nas agências gestor para cada triplo (funcionário, tarefa, agência) 11 Agregação Solução: agregação! uma associação passa a ser uma entidade 12 6
Bases de Dados Exemplo de Modelo E-A Descrição do domínio 1. O banco está organizado em agências. Cada agência está localizada numa cidade e é identificada por um nome único. 14 7
Descrição do domínio 2. Os clientes do banco são identificados pelo seu customer_id. O banco guarda o nome do cliente e a rua e cidade onde vive. Os clientes podem ter contas e podem contrair empréstimos. O cliente pode estar associado com um funcionário na qualidade de gestor de empréstimo ou gestor de conta. 15 Descrição do domínio 3. Os funcionários do banco estão identificados por um employee_id. A administração do banco guarda o nome e número de telefone de cada funcionário, os nomes dos dependentes desse funcionário, e o employee_id do gestor desse funcionário. O banco também regista a data de entrada do funcionário ao serviço bem como a respectiva duração. 16 8
Descrição do domínio 4. O banco oferece 2 tipos de contas à ordem e a prazo. As contas podem ter vários titulares e um cliente pode ter várias contas. Cada conta tem um número único e um saldo. Contas a prazo têm um taxa de juro. Contas à ordem têm um limite de débito. 17 Descrição do domínio 5. Um empréstimo é criado numa agência e pode ser contraído por um ou mais clientes. O empréstimo é identificado por um loan_number. O banco mantém um registo da quantia em dívida e dos pagamentos do empréstimo identificados por um número sequencial. A data e quantia de cada pagamento são registadas. 18 9
Descrição do domínio - associações borrower muitos clientes para muitos empréstimos loan_branch muitos empréstimos para uma agência loan_payment muitos pagamentos para um empréstimo depositor muitos clientes para muitas contas cust_banker muitos clientes para um funcionário works_for um gestor para muitos funcionários 19 Diagrama E-A (parte 1) 20 10
Diagrama E-A (parte 2) 21 Diagrama E-A (completo) 22 11
Bases de Dados Dilemas ao criar o Modelo E-A Dilema #1 atributos ou entidades? Dada a entidade employee(employee_id, employee_name,, telephone_number) será que telephone não podia ser uma entidade? telephone(telephone_number, location) implicaria também associação emp_telephone 24 12
Dilema #1 atributos ou entidades? 25 Dilema #1 atributos ou entidades? Resposta ao dilema depende do domínio e das operações pretendidas evitar demasiada complexidade Cuidados a ter não usar a chave primária de uma entidade como atributo de outra (errado em E-A) não incluir numa associação as chaves primárias das associações participantes (já lá estão implicitamente) 26 13
Dilema #2 entidades ou associações? Um empréstimo é uma entidade ou uma associação entre cliente e agência?... 27 Dilema #2 entidades ou associações? Problema: situação em que vários clientes contraem empréstimos conjuntamente implicaria replicação de dados Resposta ao dilema associações com atributos são fortes candidatas a entidades 28 14
Dilema #3 onde colocar os atributos? Posição dos atributos de uma associação podem ser colocados na entidade muitos de um para muitos muitos para um ou em qualquer das entidades numa associação um para um 29 Dilema #3 onde colocar os atributos? Seja depositor uma associação um-para-muitos 30 15
Dilema #3 onde colocar os atributos? Problemas e se uma conta for movimentada por vários clientes? (e quisermos guardar qual deles) Resposta ao dilema se houver possibilidade de a associação ser muitos-para-muitos, colocar os atributos na própria associação 31 Dilema #4 associações binárias ou n-árias? Conversão de associações n-árias para binárias criar n associações binárias auxiliares criar uma entidade auxiliar 32 16
Dilema #4 associações binárias ou n-árias? Em vez de (a i, b i, c i ) passamos a ter: (a i, e i ) em R A (b i, e i ) em R B (c i, e i ) em R C 33 Dilema #4 associações binárias ou n-árias? Problemas desenho fica mais complexo e menos claro se a associação for muitos-para-um, perde-se essa restrição no E-A p.ex. se for muitos-para-um de A e B para C Resposta ao dilema converter para binárias sempre que possível 34 17
Sumário da notação 35 18