linguagens relacionais

Post on 21-Jan-2016

35 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

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

top related