Академический Документы
Профессиональный Документы
Культура Документы
0
Modelo Relacional: revisão
Bibliografia usada:
1. T. Connoly e C. Begg. “Database Systems: a pratical approach to design,implementation,
and management”. Addison-Wesley, 1999 (cap.3).
1
1. Objectivos
História e terminologia.
COMO as tabelas são usadas para REPRESENTAR
dados.
Relações matemáticas versus relações do modelo
relacional.
Propriedades das relações de bases de dados.
COMO identificar chaves candidatas, primárias e
estrangeiras.
Integridade existencial e integridade referencial.
COMO formular inquirições em álgebra relacional.
Critérios de avaliação de DBMS relacionais.
2
2. Breve História do Modelo Relacional (MR)
Entidade ?
Abstracção dum conjunto de objectos que possuem
características/atributos comuns.
Atributo ?
Característica comum aos objectos abstraídos por uma
entidade.
Boxer
Pastor Alemão
Setter CÃO
Dobermann
Fox-Terrier
Porsche
Fiat
Renault CARRO
Peugeot
Seat
Rover 4
4. Representação de Entidades por Tabelas
CÃO
nome raca sexo dnasc
Yankee boxer M Jan 85
Rocky pastor F Mai 98
Fritz setter M Fev 00
5
4.1 A entidade CÃO vista pela administração
municipal
CÃO
n_licenca nome raca sexo nm_dono d_lic
DONO
nm_dono morada
6
4.2 A entidade CÃO vista pela clínica
veterinária
CÃO
nome raca sexo peso nm_dono d_nasc
DONO
nm_dono morada balanco
7
5. Matemática do Modelo Relacional
Teorias ?
Teoria dos Conjuntos + Lógica de Predicados.
8
5.1 Relações (em matemática)
Relação ?
Qualquer subconjunto dum produto cartesiano.
Exemplo:
Produto Cartesiano:
A×B = {(1,3),(1,4),(1,5),(2,3),(2,4),(2,5)}
Relação (exemplo):
R = {(1,4),(1,5),(2,3)}
9
5.2 Relações (em bases de dados)
Relação ?
R é um conjunto de n-tuplos (A1:d1, A2:d2,…,An:dn)
com d1 ∈D1, d2 ∈ D2,…, dn ∈ Dn.
Exemplo:
Produto Cartesiano:
Bno × Street × Area × City × Pcode × Tel_No × Fax_No
10
5.3 Propriedades de Relações
Grau ? G
É o número de atributos duma relação.
Cardinalidade ? C
É o número de tuplos duma relação.
Exemplo:
G=7
Super-Chave ?
É um atributo ou conjunto de atributos que identificamen
unicamente um tuplo duma relação.
Chave Candidata ?
É uma super-chave UNICIDADE
tal que nenhum subconjunto próprio é uma super-chave. IRREDUTABILIDADE
Exemplo: BRANCH
London tem 2 agências City
Cada agência tem um identificador único Bno
Chave Primária?
É a chave primária que é seleccionada para identificaros tuplos
duma relação.
Chave Alternativa ?
É uma chave candidata que não é seleccionada como chave
primária.
Exemplo: BRANCH
Chave primária: Bno
Chaves alternativas: Tel_No, Fax_No
Chave Estrangeira?
É um atributo ou conjunto de atributos duma relação que é chave
candidata de alguma (possivelmente a mesma) relação.
Exemplo: STAFF
Chave estrangeira: Bno
SL21 John White 19 Taylor St, Cranford, London 0171-884-5112 Manager M 10/1/45 30000 WK442011B B5
SG37 Ann Beech 81 George St, Glasgow PA1 2JR 0141-848-3345 Snr Asst F 11/10/60 12000 WL432514C B3
SG14 David Ford 63 Ashby St, Partick, Glasgow G11 0141-339-2177 Deputy M 3/24/58 18000 WL220658D B3
SA9 Mary Howe 2 Elm Pl, Aberdeen AB2 3SU Assistant F 2/19/70 9000 WM532187D B7
SG5 Susan Brand 5 Gt Western Rd, Glasgow G12 0141-334-2001 Manager F 6/3/40 24000 WK588932E B3
SL41 Julie Lee 28 Malvern St, Kilburn NW2 0181-554-3541 Assistant F 6/13/65 9000 WA290573K B5
15
7. Modelo Relacional de Dados
16
7.1 Atomicidade:
exemplo da base de dados duma
universidade
INCORRECTO
ALUNO (duma universidade)
CORRECTO
ALUNO (duma universidade)
Integridade referencial
se uma chave estrangeira (CE) existe na relação,
então
o valor da CE tem de ser obrigatoriamente um valor da chave
primária existente numa outra relação
senão
o valor da CE é obrigatoriamente NULL, o que significa que não
referencia nenhum valor da chave primária duma outra tabela.
NULL:
Representa ausência de valor.
18
9. Álgebra Relacional
Álgebra relacional
= conjunto de relações + conjunto de operações
Operações fundamentais:
• Selecção
• Projecção
• Produto Cartesiano
• União
• Diferença
Operações suplementares:
• Junção
• Intersecção
• Divisão
19
9.0 Empresa imobiliária
OWNER
Ono FName Lname Street Tel
O46 Joao Calisto Rua da Ferrajota 2, 7300 PORTALEGRE 054-34567
O87 Pedro Vasconcelos Rua do Arco 23, 1000 LISBOA 01-319786
O40 Cristina Alvito Alameda das Torres Novas 100, 2320 ENTRONCAMENTO 049-717988
O93 Maria Calas Beco da Boavista 5, 5100 NAZARE 040-45567
RENTER
Rno Fname Lname Street Tel Type MaxRent
R76 Joao Fagundes Rotunda da Alegria 12, 4500 TOMAR 038-89700 Apartamento 70000
R56 Alda Segundo Avenida das Antas 345, 1200 LISBOA 01-450678 Estudio 50000
R74 Miguel Andrade Bairro das Mesuras 45, 3500 VISEU 032-422775 Casa 60000
R62 Mariana Tavora Largo da Independencia 42, 3100 TONDELA 032-31234 Duplex 20
100000
9.1 Selecção (ou Restrição)
σpredicado(R)
Exemplo:
σSalary>10000(STAFF)
Liste todo o pessoal com salário superior a 10000€.
SQL:
SELECT *
FROM STAFF
WHERE Salary > 10000
21
9.2 Projecção
Πcol1,…,coln(R)
Exemplo:
Π sno,FName,lname,salary(STAFF)
Produz uma lista de salários de todo o pessoal, mostrando
somente os dados dos atributos especificados, nomeadamente
Sno,FName, LName e Salary.
SQL:
SELECT Sno, FName, LName, Salary
FROM STAFF
22
9.3 Produto Cartesiano
R×S
Define uma relação que resulta da concatenação de cada
tuplo de R com todos os tuplos de S.
Exemplo:
(Π rno,fname,lname(RENTER)) × (Π rno,pno,comment(VIEWING))
Produz uma lista de todos os nomes e todos comentários de todos
os inquilinos que tenham visto uma propriedade.
SQL:
23
i linhas
R∪S
A união das relações R e S com i,j tuplos, respectivamente, é
uma relação obtida pela concatenação dos (i+j) tuplos, com
eliminação dos tuplos repetidos.
NOTA: R e S são obrigatoriamente compatíveis (union-compatible).
Exemplo:
Π area(BRANCH) ∪ Π area(PROPERTY_FOR_RENT)
Construa uma lista de todas as areas onde existe ou uma agência
(branch) ou uma propriedade para arrendar (property).
SQL:
SELECT Area
FROM BRANCH
UNION
SELECT Area
FROM PROPERTY_FOR_RENT 24
9.5 Diferença
R-S
A diferença entre as relações R e S com i, j tuplos,
respectivamente, é uma relação que contém os tuplos de R
que não pertencem a S.
NOTA: R e S são obrigatoriamente compatíveis (union-compatible).
Exemplo:
Π city(BRANCH) - Π city(PROPERTY_FOR_RENT)
Construa uma lista de todas as cidades (cities) onde existe ou uma
agência (branch) mas nenhuma propriedade para arrendar
(property).
R P S
Uma θ-junção define uma relação a partir do produto
cartesiano de R e S que contém os tuplos que satisfazem o
predicado P.
NOTA:O predicado P é da forma R.ai θ S.bi, onde θ é um dos operadores
relacionais <, <=, >, >=, =, ~=.
Exemplo:
Π Rno,FName,LName(RENTER) Renter.Rno=Viewing.Rno ΠRno,Pno,Comment(VIEWING)
Construa uma lista dos nomes e comentários de todos os arrendatários que já
visitaram uma propriedade.
SQL:
SELECT RENTER.Rno,Fname,Lname,VIEWING.Rno,Pno,Comment
FROM RENTER, VIEWING
WHERE RENTER.Rno= VIEWING.Rno
26
9.7 Junção Natural
R S
A junção natural é uma =-junção de R e S sobre todos os
atributos comuns. A ocorrência de um atributo comum é
eliminada do resultado.
Exemplo:
Π Rno,FName,LName(RENTER) ΠRno,Pno,Comment(VIEWING)
Construa uma lista dos nomes e comentários de todos os
arrendatários que já visitaram uma propriedade.
SQL:
27
9.8 Junção Exterior (à esquerda)
R S
A junção exterior (à esquerda) é uma junção na qual os tuplos
de R que não encontram correspondência nas colunas comuns
de S também são incluídos na relação resultante.
NOTA:Os valores em falta na segunda relação são colocados a
NULL.
Exemplo:
Π pno,street,city(PROPERTY_FOR_RENT) VIEWING
Produza um relatório sobre as visitas a propriedades.
SQL:
SELECT PROPERTY_FOR_RENT.Pno,Street,City,Comment
FROM PROPERTY_FOR_RENT LEFT JOIN VIEWING
ON PROPERTY_FOR_RENT.Pno = VIEWING.Pno
28
9.9 Intersecção
R ∩ S = R - (R - S)
É o conjunto dos tuplos que pertencem simultaneamente a
R e S.
NOTA: R e S devem ser compatíveis (union-compatible).
Exemplo:
Π fname,lname,salary>10000(STAFF) ∩ Π fname,lname,salary<20000(STAFF)
Produza uma lista dos funcionários com salários compreendidos
entre 10000 e 20000 exclusivé.
SQL:
29
9.10 Divisão
R÷S
É o conjunto dos tuplos de R definidos sobre os atributos C
que têm correspondência para qualquer tuplo de S.
NOTA: C = A - B,
A é o conjunto de atributos sobre o qual R é definida,
B é o conjunto de atributos sobre o qual S é definida.
Exemplo:
Π rno,pno(VIEWING) ÷ Π pno(σ rooms=3(PROPERTY_FOR_RENT))
Identifique todos os arrendatários que visitaram todas as
propriedades com 3 quartos.
SQL:
30
Sumário
31