Linguagens relacionais m Notaes para expressar perguntas q

  • Slides: 27
Download presentation
Linguagens relacionais m Notações para expressar perguntas: q q algébrica – aplicação de operadores

Linguagens relacionais m Notações para expressar perguntas: q q 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. m Limitações: q 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 q optimização das perguntas • restrição no poder expressivo: sem recursão (incapaz de computar o fecho transitivo) q relações finitas • complementação proibida 1

Operações Básicas 1 - Reunião q R S é o conjunto dos tuplos que

Operações Básicas 1 - Reunião q 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 q tuplos de R que não estão em S • R e S da mesma aridade 2

Operações Básicas 3 - Produto cartesiano R S q aridades de R e S

Operações Básicas 3 - Produto cartesiano R S q aridades de R e S são k 1 e k 2 aridade de R S é k 1 + k 2 • contém todos os tuplos tais que os primeiros k 1 componentes formam um tuplo de R e os restantes k 2 componentes formam um tuplo em S 3

Operações Básicas 4 - Projecção i 1, i 2, . . . , im(R)

Operações Básicas 4 - Projecção i 1, i 2, . . . , im(R) q 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) Projecção escolhe colunas da tabela 4

Operações Básicas 5 - Selecção F (R) q contém os tuplos de R que

Operações Básicas 5 - Selecção F (R) q 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) Selecção escolhe linhas da tabela 5

Operações Compostas 6 - Intersecção R S q contém os tuplos que pertencem a

Operações Compostas 6 - Intersecção R S q contém os tuplos que pertencem a R e a S simultaneamente • R e S da mesma aridade q R S = R - (R-S) 6

Quociente 7 - Quociente R / S • aridade de R é r e

Quociente 7 - Quociente R / S • aridade de R é r e de S é s, r s, S q contém os (r-s)-tuplos (a 1, . . . , ar-s) tais que, para todos os stuplos (ar-s+1, . . . , ar) em S, o tuplo (a 1, . . . , ar) está em R / = 7 1 3 2 = 2 3+1=7 7

Explicação alternativa m Forma de proceder à divisão q q q reordenar as colunas

Explicação alternativa m Forma de proceder à divisão q q q reordenar as colunas de forma a que as últimas correspondam ao divisor 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 divisor / = 8

Expressão do quociente q q T = 1, . . . , r-s (R)

Expressão do quociente q q T = 1, . . . , r-s (R) W = (T S) - R = universo dos tuplos possíveis no resultado = todas as linhas T combinadas com S mas que não estão em R, i. e. , em que a condição falha q q V = 1, . . . , r-s (W) R/S=T-V = tuplos que não interessam = tuplos que interessam • reunindo numa só expressão algébrica R / S= 1, . . . , r-s (R) - 1, . . . , r-s (R) S - R 9

Quais as frases verdadeiras? ( R-S ) S = R ( R-S ) S

Quais as frases verdadeiras? ( R-S ) S = R ( R-S ) S R ( R-S ) ( R S ) = R ( R-S ) ( S-R ) = ( R S ) - ( R S ) ( R/S ) S = R ( R/S ) S R a– b– c– d– e– f– m Respostas q q Erradas - a e e Correctas - b, c, d e f 10

Junção 8 - -Junção R ⋈ S i j • se a aridade de

Junção 8 - -Junção R ⋈ S i j • se a aridade de R for r e a de S, s a aridade da -junção é r+s q m 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 q R⋈ S= $i $(r+j) (R S) i j • se for =, a operação designa-se equijunção • ( 7, 8, 9 ) é um tuplo pendente de R pois não aparece na -junção R ⋈ S = R B<D ⋈S 2<1 11

Junção natural 9 - Junção natural R ⋈ S • só é aplicável se

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 q expressão: R⋈S = i 1, . . . , im ( R. A 1= S. A 1. . . 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⋈S tuplo pendente 12

Junção externa q q tuplos pendentes, isto é desemparelhados, quer em R quer em

Junção externa q q 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 B<D 13

Semi-junção 10 - Semi-junção R⋉S q q projecção nos atributos de R da junção

Semi-junção 10 - Semi-junção R⋉S q q 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) q outra expressão: R⋉S = R⋈ R S(S) q dá os tuplos de R que têm par em S R⋉S 14

Relações com atributos q q na junção natural e na semi-junção os atributos são

Relações com atributos q q na junção natural e na semi-junção os atributos são importantes; para os tornar explícitos escreve-se R(A 1, . . . , An) é possível renomear colunas e fazer junções naturais como: S = S(B, C, D) q q S( E, F, G ) ⋈ S( G, H, I ) 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 15

Leis algébricas m Reunião q q m Produto cartesiano q q m associativa: R

Leis algébricas m Reunião q q m Produto cartesiano q q m associativa: R ( S T ) = ( R S ) T comutativa: R S = S R associativo: R ( S T ) = ( R S ) T não comutativo: R S S R Junção natural q q associativa e comutativa (independência da ordem das colunas devida aos atributos): R ⋈ S = S ⋈ R Por isso ⋈ generaliza facilmente: R = R 1 ⋈. . . ⋈ Rn • R contém os tuplos tais que, para 1 i n, restringido aos atributos de Ri é um tuplo de Ri m - junção q não é comutativa mas é associativa (no caso de os índices serem válidos) R ⋈ ( S ⋈ T ) = ( R i⋈ S)⋈T j i 1 j k 2 l 1 (r+k) 2 l 16

Esquema relacional de Cursos 1 Curso(codcurso, designacur) 2 Disciplina(coddis, sigla, designadis) 3 Turma(codcurso Curso,

Esquema relacional de Cursos 1 Curso(codcurso, designacur) 2 Disciplina(coddis, sigla, designadis) 3 Turma(codcurso Curso, ano, letra) 4 Professor(bip, nome, morada, telefone, habilitação, grupo) 5 Aluno(bia, nome, morada, telefone, data_nasc, [codcurso, ano, letra] Turma) 6 Plano(codcurso Curso, coddis Disciplina) 7 Inscrito(coddis Disciplina, bia Aluno, resultado) 9 Lecciona(bip, coddis Disciplina, [codcurso, ano, letra] Turma) 17

Linguagem de Interrogação m Álgebra Relacional pode ser usada como linguagem de interrogação à

Linguagem de Interrogação m Álgebra Relacional pode ser usada como linguagem de interrogação à BD m P 1 - Relativamente à BD “Cursos” (ver atrás), quais os nomes dos professores do 12º grupo? Πnome grupo = ‘ 12’ ( Professor ) m P 2 - Quais os nomes e datas de nascimento dos alunos do curso ‘CG 1’ nascidos antes de 1983? Πnome, data_nasc codcurso = ‘CG 1’ data_nasc < 1983 -01 -01 ( Aluno ) 18

Perguntas com junção m P 3 - Nomes dos alunos inscritos à disciplina 327?

Perguntas com junção m P 3 - Nomes dos alunos inscritos à disciplina 327? q nenhuma relação contém nomes de alunos e códigos de disciplina q mas a junção Aluno ⋈ Inscrito = R contém: q R (bia, nome, morada, telefone, data_nasc, codcurso, ano, letra, coddis, resultado) ( i ) - Πnome coddis = 327 ( Aluno ⋈ Inscrito ) ( ii ) - Πnome Aluno ⋈ coddis = 327 ( Inscrito ) q 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 : Π, , ⋈ 19

Extensões à Álgebra m renomeação de atributos q q R ( A, B, C

Extensões à Álgebra m renomeação de atributos q q 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 ( +, -, *, / ) q q este mecanismo serve para dar nomes a expressões S = ΠW = A * B – C, U = C/B, A ( R ) OU q S ( W, U, A )= ΠA * B – C, C/B, A ( R ) 20

Expressões aritméticas m P 4 - Obtenha uma relação de inscrições com as classificações

Expressões aritméticas m P 4 - Obtenha uma relação de inscrições com as classificações inflaccionadas de 20%. q q m Πcoddis, bia, resultado, ( Inscrito ) novo = resultado + (20 -resultado)/10 ( Inscrito ) novo = resultado*1. 2 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. . . ) 21

Agregações m Operadores de agregação q m S = ΠV = CNT (B) (

Agregações m Operadores de agregação q m S = ΠV = CNT (B) ( R ) q m CNT (contagem), SUM (adição), AVG (média), MAX (máximo), MIN (mínimo) 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 ) q q q 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 22

Perguntas com agregação m P 5 - Qual o número de inscrições, nota média

Perguntas com agregação m P 5 - 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 ? q q 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 Inscrito R 23

Agregação com partição m P 6 - Quais as notas mínima, média e máxima

Agregação com partição m P 6 - Quais as notas mínima, média e máxima de cada disciplina (independentemente do aluno)? q R = Πcoddis, MI = MIN( resultado ), ME = AVG(resultado ), MA = MAX(resultado) (Inscrito) Inscrito R 24

Quantificação existencial m P 7 - Obtenha os códigos dos alunos com inscrição a

Quantificação existencial m P 7 - Obtenha os códigos dos alunos com inscrição a pelo menos uma das disciplinas do curso LEEC. q ΠBIA (INSCRITO ⋈ CODCURSO= ‘LEEC’ ( PLANO )) 25

Quantificação universal m P 8 - Obtenha o código dos alunos com inscrição a

Quantificação universal m P 8 - Obtenha o código dos alunos com inscrição a todas as disciplinas do curso LEEC. q A = ΠBIA ( ALUNO ) • conjunto dos alunos q D = ΠCODDIS CODCURSO= ‘LEEC’ (PLANO) • conjunto das disciplinas do curso LEEC q A D • conjunto de todos os pares (aluno, disciplina da LEEC) q NI = A D – ΠBIA, CODDIS ( INSCRITO ) • pares (aluno, disciplina da LEEC) tais que o aluno não tem inscrição à disciplina q R = A – ΠBIA ( NI ) • resultado (notar a dupla subtracção) m R = ΠBIA, CODDIS( INSCRITO ) / D 26

Mais agregação m m P 9 - Qual o nome e média actual do

Mais agregação m m P 9 - Qual o nome e média actual do aluno com melhor média do curso ’LEEC’? Só a média actual dos alunos q m Só a média máxima q m MA = Πbia, media = AVG(resultado ) (Inscrito) Max. M = Πmedia = MAX(media) (MA) Aluno cuja média é igual à média máxima q R= Πnome, MA. media (Aluno ⋈ MA ⋈ Max. M) 27