linguagens relacionais

25
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

Upload: yank

Post on 21-Jan-2016

38 views

Category:

Documents


0 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Linguagens relacionais

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

Page 2: Linguagens relacionais

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

Page 3: Linguagens relacionais

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

Page 4: Linguagens relacionais

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

Page 5: Linguagens relacionais

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

Page 6: Linguagens relacionais

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

Page 7: Linguagens relacionais

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

Page 8: Linguagens relacionais

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

/ =

Page 9: Linguagens relacionais

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

Page 10: Linguagens relacionais

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

Page 11: Linguagens relacionais

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

=

Page 12: Linguagens relacionais

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

Page 13: Linguagens relacionais

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+

Page 14: Linguagens relacionais

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

Page 15: Linguagens relacionais

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 )

Page 16: Linguagens relacionais

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

Page 17: Linguagens relacionais

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

Page 18: Linguagens relacionais

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 : Π, , ⋈

Page 19: Linguagens relacionais

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 )

Page 20: Linguagens relacionais

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...)

Page 21: Linguagens relacionais

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

Page 22: Linguagens relacionais

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

Page 23: Linguagens relacionais

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

Page 24: Linguagens relacionais

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 ))

Page 25: Linguagens relacionais

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