Post on 21-Jan-2016
description
Modelo relacional - 1
Linguagens relacionais
Notações para expressar perguntas: algébrica – aplicação de operadores a relações lógica (cálculo relacional) – fórmula que os tuplos da resposta
devem satisfazer• equivalentes em poder expressivo.
Limitações: independência física dos dados
• linguagem só com construções relativas ao modelo de dados (operações sobre relações) que não dependam da implementação
• não se pode aceitar programas genéricos optimização das perguntas
• restrição no poder expressivo: sem recursão (incapaz de computar o fecho transitivo)
relações finitas• complementação proibida
Modelo relacional - 2
Operações Básicas
1 - Reunião R S é o conjunto dos tuplos que estão em R, em S, ou em ambas
• R e S da mesma aridade
• nomes dos atributos a especificar
2 - Diferença R – S tuplos de R que não estão em S
• R e S da mesma aridade
R
A B C
a b c
d a f
c b d
S
D E F
b g a
d a f
R S
A B C
a b c
d a f
c b d
b g a
R - S
A B C
a b c
c b d
Modelo relacional - 3
RSA B C D E Fa b c b g aa b c d a fd a f b g ad a f d a fc b d b g ac b d d a f
Operações Básicas
3 - Produto cartesiano RS aridades de R e S são k1 e k2 aridade de RS é k1 + k2
• contém todos os tuplos tais que os primeiros k1 componentes
formam um tuplo de R e os restantes k2 componentes formam um
tuplo em S
R
A B C
a b c
d a f
c b d
S
D E F
b g a
d a f
Modelo relacional - 4
Operações Básicas
4 - Projecção i1, i2, ..., im(R)
para cada tuplo em R existe um tuplo na projecção com os componentes (e pela ordem) indicados pelos ij
• se aridade de R for k então os ij 1, ..., k e são distintos; aridade da projecção é m
• números de componentes podem ser substituídos por atributos, se existirem: 1,3 (R) = A,C (R)
R
A B C
a b c
d a f
c b d
1,3 (R)
A C
a c
d f
c d
Projecção escolhe colunas da tabela
Modelo relacional - 5
Operações Básicas
5 - Selecção F (R) contém os tuplos de R que satisfazem F
• a fórmula F pode envolver
operandos constantes ou número de componente ( $i )
operadores aritméticos de comparação ( , , , , , )
operadores lógicos ( , , ) ( e, ou, não )
• Números de componentes podem ser substituídos por atributos, se existirem: $2=b(R) = B=b(R)R
A B C
a b c
d a f
c b d
Selecção escolhe linhas da tabela
$2=b(R)
A B C
a b c
c b d
Modelo relacional - 6
Operações Compostas
6 - Intersecção R S contém os tuplos que pertencem a R e a S simultaneamente
• R e S da mesma aridade R S = R - (R-S)
R
A B C
a b c
d a f
c b d
S
D E F
b g a
d a f
R S
A B C
d a f
Modelo relacional - 7
Quociente
7 - Quociente R / S• aridade de R é r e de S é s, rs, S
contém os (r-s)-tuplos (a1, ..., ar-s) tais que, para todos os s-tuplos (ar-s+1, ..., ar) em S, o tuplo (a1, ..., ar) está em R
RA B C Da b c da b e fb c e fe d c de d e fa b d e
SE Fc de f
R/SA Ba be d
SE Fc de f
R/SA Ba be d
(R/S) SA B E Fa b c da b e fe d c de d e f
/
=
=
7 321 2 3 + 1 = 7
Modelo relacional - 8
Explicação alternativa
Forma de proceder à divisão reordenar as colunas de forma a que as últimas correspondam
ao quociente ordenar a tabela pelas primeiras colunas cada subtuplo das primeiras colunas pertence ao resultado se o
conjunto de subtuplos das últimas colunas que lhe corresponde contiver o quociente
RA B C Da b c d
e fd e
b c e fe d c d
e f
SE Fc de f
R/SA Ba be d
/ =
Modelo relacional - 9
Expressão do quociente
T = 1, ..., r-s (R) = universo dos tuplos possíveis no
resultado W = (TS) - R = todas as linhas T combinadas com S
mas que não estão em R, i.e., em que a condição falha
V = 1, ..., r-s (W) = tuplos que não interessam
R / S = T - V = tuplos que interessam
• reunindo numa só expressão algébrica
R / S= 1, ..., r-s (R) - 1, ..., r-s 1, ..., r-s (R) S - R RA B C Da b c da b e fb c e fe d c de d e fa b d e
SE Fc de f
R/SA Ba be d
TA Ba bb ce d
TSA B E Fa b c da b e fb c c db c e fe d c de d e f
VA Bb c
WA B E Fb c c d
Modelo relacional - 10
Quais as frases verdadeiras?
a – ( R-S ) S = R
b – ( R-S ) S R
c – ( R-S ) ( RS ) = R
d – ( R-S ) ( S-R ) = ( RS ) - ( RS )
e – ( R/S ) S = R
f – ( R/S ) S R
Respostas• Erradas - a e e
• Correctas - b, c, d e f
Modelo relacional - 11
Junção
8 - -Junção R ⋈ S• se a aridade de R for r e a de S, s a aridade da -junção é r+s
contém os tuplos do produto cartesiano de R por S tais que o componente i está na relação com o componente r+j (i.e., o correspondente ao j em S).
Expressão da -junção R ⋈ S= $i $(r+j) (R S)
• se for =, a operação designa-se equijunção
• ( 7, 8, 9 ) é um tuplo pendente de R pois não aparece na -junção
ij
ij
RA B C1 2 34 5 67 8 9
SD E3 16 2
R ⋈ S2<1
R ⋈ SB<D
A B C D E1 2 3 3 11 2 3 6 24 5 6 6 2
=
Modelo relacional - 12
Junção natural
9 - Junção natural R ⋈ S• só é aplicável se os componentes dos tuplos em R e S forem
designados por atributos.
• a operação implícita na junção natural é a igualdade dos atributos com o mesmo nome.
• cada par de atributos iguais dá origem a um único atributo, com o mesmo nome, no resultado
expressão: R⋈S = i1, ..., im ( R.A1= S.A1.....R.Ak= S.Ak ( R S ))
• k é o número de atributos comuns a R (aridade r) e S (aridade s) e m= r+s-k R
A B Ca b cd b cb b fc a d
SB C Db c db c ea d b
A B C Da b c da b c ed b c dd b c ec a d b
R ⋈ S
tuplo pendente
Modelo relacional - 13
R ⋈ S+
B<DA B C D E1 2 3 3 11 2 3 6 24 5 6 6 27 8 9
A B C Da b c da b c ed b c dd b c ec a d bb b f
Junção externa
tuplos pendentes, isto é desemparelhados, quer em R quer em S, desaparecem na -junção e na junção natural
a junção externa (- ou natural) inclui os tuplos pendentes de R ou S completados a nulos
• ( 7, 8, 9 ) é um tuplo pendente de R pois não aparece na -junção
• ( b, b, f ) idem, na junção natural
R ⋈ S+
Modelo relacional - 14
Semi-junção
10 - Semi-junção R⋉S projecção nos atributos de R da junção natural de R e S R⋉S = R( R⋈S )
• R em R representa os atributos de R (o seu esquema); em R⋈S R representa a relação (a instância)
outra expressão: R⋉S = R⋈RS(S)
dá os tuplos de R que têm par em S
RA B Ca b cd b cb b fc a d
SB C Db c db c ea d b
R⋉SA B Ca b cd b cc a d
Modelo relacional - 15
B C Db c db c ea d b
E F G H Ia d b c da d b c e
Relações com atributos
na junção natural e na semi-junção os atributos são importantes; para os tornar explícitos escreve-se R(A1, ..., An)
é possível renomear colunas e fazer junções naturais como:
uma junção natural entre duas relações sem atributos comuns redunda num produto cartesiano porque, após este, não há nenhuma selecção a fazer (equivalente a fazer uma selecção com a condição True)
R( A,B,C ) ⋈ S( G,H,I ) = R S
S = S(B,C,D) S( E,F,G ) ⋈ S( G,H,I )
Modelo relacional - 16
Leis algébricas
Reunião associativa: R ( S T ) = ( R S ) T comutativa: R S = S R
Produto cartesiano associativo: R ( S T ) = ( R S ) T não comutativo: R S S R
Junção natural associativa e comutativa (independência da ordem das colunas
devida aos atributos): R ⋈ S = S ⋈ R Por isso ⋈ generaliza facilmente: R = R1 ⋈ ... ⋈ Rn
• R contém os tuplos tais que, para 1 i n, restringido aos atributos de Ri é um tuplo de Ri
- junção não é comutativa mas é associativa (no caso de os índices serem
válidos)R ⋈ ( S ⋈ T ) = ( R ⋈ S ) ⋈ T
i 1 j k 2 l i 1 j (r+k) 2 l
Modelo relacional - 17
Álgebra Relacional pode ser usada como linguagem de interrogação à BD
P1 - Relativamente à BD “Cursos” (ver p.17),
quais os nomes dos professores do 12º grupo?Πnome grupo = ‘12’ ( Professor )
P2 - Quais os nomes e datas de nascimento dos
alunos do curso ‘CG1’ nascidos antes de 1983?Πnome, data_nasc codcurso = ‘CG1’ data_nasc < 1983-01-01 ( Aluno )
Linguagem de Interrogação
Modelo relacional - 18
Perguntas com junção
P3 - Nomes dos alunos inscritos à disciplina 327? nenhuma relação contém nomes de alunos e códigos de disciplina
mas a junção Aluno ⋈ Inscrito = R contém:
R (bia, nome, morada, telefone, data_nasc, codcurso, ano, letra,
coddis, resultado)
( i ) - Πnome coddis = 327 ( Aluno ⋈ Inscrito )
( ii ) - Πnome Aluno ⋈ coddis = 327 ( Inscrito )
esta maneira de ligar informações no modelo de dados dá muita
liberdade para exprimir perguntas arbitrárias mas exige uma fase
de optimização para executar ( ii ) mesmo que a pergunta seja ( i )
Núcleo da álgebra relacional : Π, , ⋈
Modelo relacional - 19
Extensões à Álgebra
renomeação de atributos R ( A, B, C ) R’( X,Y, Z ) = ΠX = A, Y = B, Z = C R( A, B, C )
• onde não houver ambiguidades, a simples menção dos atributos, em conjunto com o nome da relação, faz a renomeação
OU– R’ ( X, Y, Z ) = R ( A, B, C )
OU
– R’ = ΠX = A, Y = B, Z = C ( R )
• expressões aritméticas ( +, -, *, / ) este mecanismo serve para dar nomes a expressões S = ΠW = A * B – C, U = C/B,A ( R )
OU
S ( W, U, A )= ΠA * B – C, C/B, A ( R )
Modelo relacional - 20
Expressões aritméticas
P4 - Obtenha uma relação de inscrições com as classificações inflaccionadas de 20%. Πcoddis, bia, resultado, novo = resultado*1.2 ( Inscrito )
Πcoddis, bia, resultado, novo = resultado + (20-resultado)/10 ( Inscrito )
nos parâmetros da projecção:• no membro direito só podem ser usados nomes de atributos do
argumento de Π; no esquerdo só pode estar um atributo (novo...)
Modelo relacional - 21
Agregações
Operadores de agregação CNT (contagem), SUM (adição), AVG (média), MAX (máximo),
MIN (mínimo)
S = ΠV = CNT (B) ( R ) S( V ) tem um único valor, o número de tuplos de R com valor não
nulo no atributo B ( CNT (*) conta todas as linhas ) toda a relação agregada
T = ΠA, M = MAX (B) ( R ) T ( A, M ) tem tantos pares quantos os valores diferentes de A,
sendo indicado para cada A o respectivo valor máximo de B (não nulo ... );
é feita uma partição segundo os atributos de projecção sem operadores de agregação e cada classe é agregada num só tuplo;
é possível misturar agregações e aritmética
Modelo relacional - 22
Perguntas com agregação
P5 - Qual o número de inscrições, nota média das inscrições, soma de todas as notas e número de resultados não nulos ? R( NI, M, T, NR ) = ΠCNT(*), AVG( resultado), SUM( resultado ), CNT( resultado)
( Inscrito ) pode ser M T/NI se houver inscrições ainda sem resultado
(valor nulo); tem que ser M = T/ NR
NI M T NR6 13.4 67 5
coddis bia resultadoPA 97 14PA 38 12ITI 97 17ITI 25 14H 97 10H 25
Inscrito
R
Modelo relacional - 23
Agregação com partição
P6 - Quais as notas mínima, média e máxima de cada disciplina (independentemente do aluno)? R = Πcoddis, MI = MIN( resultado ), ME = AVG(resultado ), MA = MAX(resultado) (Inscrito)
coddis bia resultadoPA 97 14PA 38 12ITI 97 17ITI 25 14H 97 10H 25
coddis MI ME MAPA 12 13 14ITI 14 15.5 17H 10 10 10
InscritoR
Modelo relacional - 24
Quantificação existencial
P7 - Obtenha os códigos dos alunos com inscrição a pelo menos uma das disciplinas do curso LEEC.
ΠBIA (INSCRITO ⋈ CODCURSO= ‘LEEC’ ( PLANO ))
Modelo relacional - 25
Quantificação universal
P8 - Obtenha o código dos alunos com inscrição a todas as disciplinas do curso LEEC. A = ΠBIA ( ALUNO )
• conjunto dos alunos
D = ΠCODDIS CODCURSO= ‘LEEC’ (PLANO)• conjunto das disciplinas do curso LEEC
AD• conjunto de todos os pares (aluno, disciplina da LEEC)
NI = AD – ΠBIA, CODDIS ( INSCRITO )
• pares (aluno, disciplina da LEEC) tais que o aluno não tem inscrição à disciplina
R = A – ΠBIA ( NI )
• resultado (notar a dupla subtracção)
R = ΠBIA, CODDIS( INSCRITO ) / D