Bases de Dados
Modelo Relacional
Bases de dados relacionais
 Estrutura de uma base de dados relacional
• conjunto de tabelas com nome único
• cada tabela guarda entidades desse tipo
 Dentro das tabelas
• cada coluna é um atributo da entidade
• cada linha contém os valores desses atributos
 Cada tabela estabelece uma relação entre um
conjunto de valores
IST ▪ DEI ▪ Bases de Dados
2
Exemplo
 A relação “conta bancária” (account)
• exemplo de atributos: número, agência, saldo
IST ▪ DEI ▪ Bases de Dados
3
Atributos
 Cada atributo tem um domínio
• o conjunto de valores possíveis
 Para o exemplo anterior
• agência – conjunto de todas as localidades
• cada linha é um tuplo (v1 , v2 , v3)
• cada vi tem domínio Di
 Uma relação contem apenas um sub-conjunto de
D1 x D2 x … x Dn
IST ▪ DEI ▪ Bases de Dados
4
Tuplos
 A relação contém 7 tuplos
 Para o primeiro tuplo t
• t[account_number] = “A-101”
• t[branch_name] = “Downtown”
IST ▪ DEI ▪ Bases de Dados
5
Esquema
 Esquema vs. instância
• conteúdo da relação num determinado instante
• analogia com linguagens de programação
▫ relação ≈ variável
▫ esquema da relação ≈ tipo
 Esquema da relação
Account_schema = (account_number, branch_name, balance)
IST ▪ DEI ▪ Bases de Dados
6
A relação “agência” (branch)
Branch_schema = (branch_name, branch_city, assets)
IST ▪ DEI ▪ Bases de Dados
7
Atributos comuns
 branch_name é um atributo comum
• forma de relacionar tuplos de relações distintas
IST ▪ DEI ▪ Bases de Dados
8
A relação “cliente” (customer)
Customer_schema = (customer_name, customer_street, customer_city)
IST ▪ DEI ▪ Bases de Dados
9
A relação “titular” (depositor)
Depositor_schema = (customer_name, account_number)
IST ▪ DEI ▪ Bases de Dados
10
A relação “empréstimo” (loan)
Loan_schema = (loan_number, branch_name, amount)
IST ▪ DEI ▪ Bases de Dados
11
A relação “mutuário” (borrower)
Borrower_schema = (customer_name, loan_number)
IST ▪ DEI ▪ Bases de Dados
12
Notas
 A ordem dos tuplos é irrelevante
 Podiam existir valores null
 Assume-se que os clientes não têm nomes iguais
 Assume-se que pode haver clientes com conta mas
sem empréstimo, ou vice-versa, ou nenhuma das
coisas
IST ▪ DEI ▪ Bases de Dados
13
Chaves
 Como distinguir tuplos?
• não pode haver 2 tuplos exactamente iguais
• super-chave
▫ o 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ó
◦ atenção aos atributos (supostamente) únicos
IST ▪ DEI ▪ Bases de Dados
14
Chaves estrangeiras
 Chave estrangeira
• referência entre relações
IST ▪ DEI ▪ Bases de Dados
15
Bases de Dados
Modelo Entidade-Associação
Processo de desenvolvimento
características
do domínio
requisitos
funcionais
descrição
do tema
desenho
conceptual
modelo
E-A
conversão p/
modelo
relacional
modelo
relacional
IST ▪ DEI ▪ Bases de Dados
17
Alternativas de desenho
 Decisões sucessivas sobre a representação de
“coisas”
• um bom desenho
▫ explora aspectos comuns
▫ mantém flexibilidade para o futuro
• um mau desenho
▫ redundante
▫ incompleto
IST ▪ DEI ▪ Bases de Dados
18
Dilemas
 Cliente compra um produto
• será que a venda do produto é uma associação
entre cliente e produto?
C
V
P
• ou será que a venda é uma entidade relacionada
com cliente e produto?
C
?
P
V
IST ▪ DEI ▪ Bases de Dados
19
Entidades
 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
 Conjunto de entidades (entity set)
• partilham os mesmos atributos
• podem não ser disjuntos
▫ p. ex. pessoa que é simultaneamente funcionário e cliente
IST ▪ DEI ▪ Bases de Dados
20
Entidades
customer_id
customer_name
customer_street
customer_city
IST ▪ DEI ▪ Bases de Dados
loan_number
amount
21
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
▫ p.ex. idade, existindo já data_de_nascimento
IST ▪ DEI ▪ Bases de Dados
22
Atributos compostos – exemplos
IST ▪ DEI ▪ Bases de Dados
23
Associações
 As entidades podem ter associações entre si
Hayes
customer entity
depositor
relationship set
A-102
account entity
 Em termos formais
{(e1, e2, … en) | e1  E1, e2  E2, …, en  En}
onde (e1, e2, …, en) é uma associação
 Exemplo: (Hayes, A-102)  depositor
IST ▪ DEI ▪ Bases de Dados
24
A associação borrower
IST ▪ DEI ▪ Bases de Dados
25
Atributos descritivos em associações
IST ▪ DEI ▪ Bases de Dados
26
Grau de uma associação
 Conjuntos de entidades que participam na associação
 Associações entre 2 conjuntos de entidades chamamse binárias
 Associações entre mais do que 2 entidades
• p.ex. funcionários com diferentes tarefas em
diferentes agências
• são menos comuns e normalmente evitam-se!
IST ▪ DEI ▪ Bases de Dados
27
Cardinalidade de uma associação
 Número de entidades com as quais outra entidade
está associada
• especialmente útil em associações binárias
• potencialmente confuso noutras associações
 Uma associação binária pode ser
• um para um
• um para muitos
• muitos para um
• muitos para muitos
IST ▪ DEI ▪ Bases de Dados
28
Cardinalidade de uma associação
um para um
um para muitos
(alguns elementos de A ou B podem não estar associados)
IST ▪ DEI ▪ Bases de Dados
29
Cardinalidade de uma associação
muitos para um
muitos para muitos
(alguns elementos de A ou B podem não estar associados)
IST ▪ DEI ▪ Bases de Dados
30
Chaves de entidades
 A chave de um conjunto de entidades
• super chave
• chaves candidatas
• chave primária
 Cuidados a ter
• identificadores únicos num ambiente restrito
▫ p.ex. clientes internacionais
• atributos sujeitos a alterações
▫ p.ex. fusão de empresas
IST ▪ DEI ▪ Bases de Dados
31
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}
 Em ambos os casos, uma super-chave é:
primary_key(E1) U … U primary_key(En)
IST ▪ DEI ▪ Bases de Dados
32
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
◦ (customer_id, account_number)
IST ▪ DEI ▪ Bases de Dados
33
Participação nas associações
 A participação de um entidade pode ser
• total
• parcial
 Exemplos
• todos os empréstimos têm um devedor
▫ a participação de loan em borrower é total
• nem todos os clientes têm empréstimos
▫ a participação de customer em borrower é parcial
IST ▪ DEI ▪ Bases de Dados
34
Download

Aula 20 Set