bases de dados - web.ist.utl.ptweb.ist.utl.pt/~diogo.ferreira/bd/2009-2010/02modeloea.pdf · 5. um...
TRANSCRIPT
1
Bases de Dados
Modelo Entidade-Associação
Exemplo do banco
account
branch
depositor
customerborrower
loan
2IST ▪ DEI ▪ Bases de Dados
2
Exemplo do banco
account
branch
depositor
customerborrower
loan
3IST ▪ DEI ▪ Bases de Dados
Bases de Dados
Entidades
3
Modelo Entidade-Associação
Uma base de dados é modelada como• conjunto de entidades• associações entre entidades
Entidade = objecto distinto de outros objectos• com existência física ou não• com um conjunto de atributos específicos• e um valor para cada um desses atributos
5IST ▪ DEI ▪ Bases de Dados
Entidades
customer_idcustomer_name
customer_street customer_city
loan_numberamount
6IST ▪ DEI ▪ Bases de Dados
4
Tipos de atributos
Atributos têm um domínio
Podem também ser• simples ou compostos
▫ p.ex. morada• de valor único ou valor múltiplo
▫ p.ex. telefone• derivados
7IST ▪ DEI ▪ Bases de Dados
• derivados▫ p.ex. idade, existindo já data_de_nascimento
Atributos compostos – exemplos
8IST ▪ DEI ▪ Bases de Dados
5
Bases de Dados
Associações
Associações
As entidades podem ter associações entre si
Hayes depositor A 102Hayes depositor A-102entidade customer associação entidade account
Exemplo• (Hayes, A-102) ∈ depositor
10IST ▪ DEI ▪ Bases de Dados
6
A associação borrower
11IST ▪ DEI ▪ Bases de Dados
Atributos descritivos em associações
12IST ▪ DEI ▪ Bases de Dados
7
Grau de uma associação
Conjuntos de entidades que participam na associação
Associações entre 2 conjuntos de entidades chamam-se binárias
Associações entre mais do que 2 entidades• p.ex. ternárias (3 entidades)
f i á i dif t t f dif t
13IST ▪ DEI ▪ Bases de Dados
• funcionários com diferentes tarefas em diferentes agências
Cardinalidade de uma associação
Número de entidades com as quais outra entidade está associada• especialmente útil em associações binárias
Uma associação binária pode ser• um para um• um para muitos
it
14IST ▪ DEI ▪ Bases de Dados
• muitos para um• muitos para muitos
8
Cardinalidade de uma associação
um para um um para muitos
15IST ▪ DEI ▪ Bases de Dados
(alguns elementos de A ou B podem não estar associados)
Cardinalidade de uma associação
muitos para um muitos para muitos
16IST ▪ DEI ▪ Bases de Dados
(alguns elementos de A ou B podem não estar associados)
9
Participação nas associações
A participação de um entidade pode ser• total• parcial
Exemplos• todos as contas têm um titular
▫ a participação de contas em titular é total
t d li t tê é ti
17IST ▪ DEI ▪ Bases de Dados
• nem todos os clientes têm empréstimos▫ a participação de cliente em devedor é parcial
Bases de Dados
Chaves de Entidades e Associações
10
Chaves de entidades
A chave de uma entidade• super-chave
▫ conjunto de atributos que identificam univocamente
• chave candidata▫ conjunto mínimo de atributos
• chave primária▫ a chave candidata escolhida▫ normalmente prefere-se um atributo separado por si só
19IST ▪ DEI ▪ Bases de Dados
p p p◦ atenção aos atributos supostamente únicos
Chaves de associações
A combinação das chaves primárias descreve uma associação individual
primary_key(E1) U … U primary_key(En)
Se a associação tiver atributos descritivos {a1, a2,…,an}
primary_key(E1) U … U primary_key(En) U {a1, a2,…,an}
20IST ▪ DEI ▪ Bases de Dados
Em ambos os casos, uma super-chave é:
primary_key(E1) U … U primary_key(En)
11
Chaves de associações
A chave primária depende da cardinalidade• seja (customer_id, account_number) ∈ depositor• se a associação for
▫ muitos para muitos: (customer_id, account_number)▫ muitos para um: (customer_id, account_number)▫ um para muitos: (customer_id, account_number)▫ um-para-um:
◦ (customer_id, account_number) ou
21IST ▪ DEI ▪ Bases de Dados
◦ (customer_id, account_number)
Bases de Dados
Diagramas Entidade-Associação
12
Diagramas Entidade-Associação
Os diagramas E-A têm os seguintes elementos• entidades (rectângulos)• atributos (elipses)
▫ chave primária (sublinhado)▫ atributos multi-valor (elipses duplas)▫ atributos derivados (elipses a tracejado)
• associações (losangos)▫ participação total (linhas duplas)
23IST ▪ DEI ▪ Bases de Dados
p p ç ( p )▫ entidade “um” em um-para-muitos ou muitos-para-um
(seta)
Exemplo
24IST ▪ DEI ▪ Bases de Dados
13
Atributos compostos, multi-valor e derivados
25IST ▪ DEI ▪ Bases de Dados
Associações com atributos
26IST ▪ DEI ▪ Bases de Dados
14
Cardinalidade da associação
Seta indica entidade “um” em associações• um para muitos• muitos para um• um para um
27IST ▪ DEI ▪ Bases de Dados
“um para muitos”
Papéis (roles)
Se as entidades participantes não forem distintas• papéis ajudam a clarificar
28IST ▪ DEI ▪ Bases de Dados
15
Participação na associação
Linha dupla assinala participação total• cada entidade desse tipo participa em pelo menos
uma associação
29IST ▪ DEI ▪ Bases de Dados
Limites de cardinalidade e participação
Cardinalidade pode ser expressa na forma min..max▫ valor mínimo 0 → participação parcial▫ valor mínimo 1 → participação total▫ valor mínimo 1 → participação total▫ valor máximo 1 → numa única associação▫ valor máximo * → ilimitado▫ 1..* → equivale a linha dupla
30IST ▪ DEI ▪ Bases de Dados
16
Limites de cardinalidade e participação – atenção!
?
31IST ▪ DEI ▪ Bases de Dados
“um para muitos!”
Cardinalidade em associações não binárias
Exemplo: funcionários com diferentes tarefas em diferentes agências
32IST ▪ DEI ▪ Bases de Dados
• cada empregado só pode fazer uma tarefa em cada agência▫ seta para job
17
Bases de Dados
Entidades fracas
Entidade fraca
Entidade cujos atributos não chegam para formar uma chave
Exemplo: empréstimos e pagamentos de empréstimo
payment(payment_number, payment_date, payment_amount)
34IST ▪ DEI ▪ Bases de Dados
número sequencial para cada empréstimo (1, 2, 3, …)
18
Associação e entidade identificadoras
Associação identificadora
35IST ▪ DEI ▪ Bases de Dados
• um para muitos• participação total
Associação identificadora
payment_number é um atributo discriminador
36IST ▪ DEI ▪ Bases de Dados
• chave primária é loan_number e payment_number
19
Associação identificadora
A associação identificadora não deve ter atributos
37IST ▪ DEI ▪ Bases de Dados
• podem ser colocados na entidade fraca
Bases de Dados
Especialização / Generalização
20
Especialização / generalização
Especialização• vista de cima para baixo (top-down)• a partir da super-classe encontram-se sub-classes
Generalização• vista de baixo para cima (bottom-up)• a partir das sub-classes identifica-se a super-classe
39IST ▪ DEI ▪ Bases de Dados
Representação com "is a"
Especialização / generalização
40IST ▪ DEI ▪ Bases de Dados
21
Especialização / generalização
Atributos comuns entre entidades• p.ex. entre funcionário e clientep
▫ 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
41IST ▪ DEI ▪ Bases de Dados
• participação em associações
Especialização / generalização
42IST ▪ DEI ▪ Bases de Dados
22
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
43IST ▪ DEI ▪ Bases de Dados
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
44IST ▪ DEI ▪ Bases de Dados
23
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
45IST ▪ DEI ▪ Bases de Dados
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
46IST ▪ DEI ▪ Bases de Dados
24
Bases de Dados
Agregação
Agregação
Gestão das tarefas dos funcionários nas agências• gestor para cada triplo (funcionário, tarefa, agência)
48IST ▪ DEI ▪ Bases de Dados
25
Agregação
Solução: agregação!• uma associação passa a ser uma entidade
49IST ▪ DEI ▪ Bases de Dados
Bases de Dados
Construção do Modelo E-A
26
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.
51IST ▪ DEI ▪ Bases de Dados
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 gua da o o e do c e te ea 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”
52IST ▪ DEI ▪ Bases de Dados
de gestor de empréstimo ou “gestor de conta”.
27
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 depe de tes desse u c o á o, e o e p oyee_ d do gestodesse funcionário.O banco também registaa data de entrada dofuncionário ao serviçobem como a respectivaduração
53IST ▪ DEI ▪ Bases de Dados
duração.
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 á os t tu a es e u c e tepode 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
54IST ▪ DEI ▪ Bases de Dados
débito.
28
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 e dos paga e tos do e p ést o de t cados po u ú e osequencial. A data e quantia de cada pagamento são registadas.
55IST ▪ DEI ▪ Bases de Dados
Descrição do domínio - associações
borrower – muitos clientes para muitos empréstimos
loan branch – muitos empréstimos para uma agência_ p p g
loan_payment – muitos pagamentos para um
empréstimo
depositor – muitos clientes para muitas contas
cust banker muitos clientes para um funcionário
56IST ▪ DEI ▪ Bases de Dados
cust_banker – muitos clientes para um funcionário
works_for – um gestor para muitos funcionários
29
Diagrama E-A
57IST ▪ DEI ▪ Bases de Dados
Bases de Dados
Dilemas ao criar o Modelo E-A
30
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)
59IST ▪ DEI ▪ Bases de Dados
• implicaria também associação emp_telephone
Dilema #1 – atributos ou entidades?
60IST ▪ DEI ▪ Bases de Dados
31
Dilema #1 – atributos ou entidades?
Solução do 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)ã i l i i ã h i á i
61IST ▪ DEI ▪ Bases de Dados
• não incluir numa associação as chaves primárias das associações participantes (já lá estão implicitamente)
Dilema #2 – entidades ou associações?
Um empréstimo é uma entidade ou uma associação entre cliente e agência?...
62IST ▪ DEI ▪ Bases de Dados
32
Dilema #2 – entidades ou associações?
Problema: situação em que vários clientes contraem empréstimos conjuntamente• implicaria replicação de dados
Solução do dilema• associações com atributos são fortes candidatas a
entidades
63IST ▪ DEI ▪ Bases de Dados
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 qualquerdas entidadesnuma
64IST ▪ DEI ▪ Bases de Dados
numaassociação“um para um”
33
Dilema #3 – onde colocar os atributos?
Seja depositor uma associação um-para-muitos
65IST ▪ DEI ▪ Bases de Dados
Dilema #3 – onde colocar os atributos?
Problemas• e se uma conta for movimentada por vários
clientes? (e quisermos guardar qual deles)
Solução do dilema• se houver possibilidade de a associação ser
muitos-para-muitos, colocar os atributos na própria associação
66IST ▪ DEI ▪ Bases de Dados
associação
34
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
67IST ▪ DEI ▪ Bases de Dados
Dilema #4 – associações binárias ou n-árias?
Em vez de (ai, bi, ci) passamos a ter:• (ai, ei) em RA
• (bi, ei) em RB
• (ci, ei) em RC
68IST ▪ DEI ▪ Bases de Dados
35
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
Solução do dilema• converter para binárias sempre que possível
69IST ▪ DEI ▪ Bases de Dados
• converter para binárias sempre que possível
Sumário da notação
70IST ▪ DEI ▪ Bases de Dados