A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias1 Bancos de Dados Mestrado em Engenharia de Computação área de concentração Geomática.

Apresentações semelhantes


Apresentação em tema: "UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias1 Bancos de Dados Mestrado em Engenharia de Computação área de concentração Geomática."— Transcrição da apresentação:

1 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias1 Bancos de Dados Mestrado em Engenharia de Computação área de concentração Geomática

2 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias2 Cálculo Relacional, QUEL e QBE... Cálculo Relacional: é uma outra Linguagem Formal de Consultas para criar novas relações e recuperar informações de bancos de dados relacionais. QUEL e QBE são linguagens mais próximas do Cálculo Relacional do que o SQL. Principal diferença entre o Cálculo Relacional e a Álgebra Relacional: –No CR especifica-se uma consulta através de uma expressão declarativa. –Na AR, através de uma sequência de operações. –CR é uma linguagem declarativa ou não procedural –AR é procedural O poder de expressão das duas linguagens é idêntico.

3 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias3 Uma Linguagem de Consultas Relacional L é dita Relationally Complete se pudermos expressar em L qualquer consulta que possa ser expressa no Cálculo Relacional. Relationally Complete tornou-se um padrão de comparação para para aquilatar o poder de expressão de Linguagens de Consulta de Alto Nível. A maioria das Linguagens de Consulta Relacionais são Relacionalmente Completas, mas têm maior poder de expressão que o CR ou a AR, por incluírem operações adicionais como: Funções Agregadas, Grupamento e Ordenação. Cálculo Relacional, QUEL e QBE...

4 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias4 O CR é baseado no chamado Cálculo de Predicados (CP) Adaptações do CP de 1 a ordem como linguagem de consulta para BDs relacionais: –Tuple Relational Calculus –Domain Relational Calculus Cálculo Relacional, QUEL e QBE...

5 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias5 Tuple Relational Calculus... Baseia-se na especificação de um número de tuples variables. Cada tuple variable usualmente assume valores sobre uma Relação da base de dados, significando que a variável pode tomar como seu valor qualquer tupla em particular da relação. Uma query simples é da forma: {t | COND(t)} onde: t é uma tupla COND(t) é uma expressão condicional envolvendo t. O resultado da consulta é o conjunto de todas as tuplas que satisfazem COND(t).

6 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias6 Exemplo: Recupere todas as tuplas de empregados com salário maior que $50, {t | EMPLOYEE(t) and t.SALARY > 50000} {t.FNAME, t.LNAME | EMPLOYEE(t) and t.SALARY>50000} SELECTT.FNAME, T.LNAME FROM EMPLOYEE T WHERE T.SALARY > Tuple Relational Calculus... f Relação que define o domínio da variável de tupla t Expressão condicional envolvendo t.

7 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias7 É preciso especificar as seguintes informações em uma expressão do Tuple Relational Calculus: ¶Para cada variável de tupla t, a relação R onde t assume seus valores (range relation R) de t (~ cláusula FROM do SQL). Este valor é especificado por uma condição da forma R(t). ·Uma condição para selecionar uma combinação particular de tuplas (~ cláusula WHERE do SQL). ¸Um conjunto de atributos a ser recuperado (requested attributes) (~ cláusula SELECT do SQL). Tuple Relational Calculus...

8 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias8 QUERY 0: Recupere a data de nascimento e endereço do empregado cujo nome é `John B. Smith`. {t.BDATE, t. ADDRESS | EMPLOYEE(t) and t.FNAME=`John` and t.MINIT=`Smith`and t.LNAME=`Smith`} Tuple Relational Calculus...

9 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias9 Especificação Formal: Uma expressão do Tuple Relational Calculus é, em geral, da forma: {t 1.A 1, t 2.A 2,..., t n.A n | COND(t 1, t 2,...,t n, t n+1, t n+2,..., t n+m )} onde: - t 1, t 2,...,t n, t n+1, t n+2,..., t n+m são variáveis-tupla. - cada A i é um atributo da relação na qual t i assume valores (ranges) e COND é uma condição ou fórmula do Tuple Relational Calculus. Tuple Relational Calculus...

10 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias10 Uma fórmula é constituída por átomos do cálculo de predicados, podendo ser: ¶Um átomo da forma R(t i ), onde R é o nome de uma relação e t i é uma variável-tupla. Este átomo identifica o conjunto de valores que podem ser assumidos pela variável-tupla t, como sendo as tuplas da relação cujo nome é R. ·Um átomo da forma t i.A op t j.B onde op é um dos operadores de comparação no conjunto {=,,,,, }, t i e t j são variáveis-tupla, A (B) é um atributo da relação na qual t i (t j ) pode assumir valores. Tuple Relational Calculus...

11 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias11 ¸Um átomo da forma t i.A op c ou c op t j.B onde op é um dos operadores de comparação no conjunto {=,,,,, }, t i e t j são variáveis-tupla, A (B) é um atributo da relação na qual t i (t j ) pode assumir valores e c é um valor constante. KCada um dos átomos precedentes é avaliado como TRUE ou FALSE para uma combinação de tuplas específica (valor verdade do átomo). Para átomos do tipo, se à variável-tupla é atribuído uma tupla que é membro da relação especificada R, o átomo é TRUE, em caso contrário, FALSE. Tuple Relational Calculus...

12 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias12 Uma fórmula (condição) é constituída por um ou mais átomos conectados pelos operadores lógicos and, or e not e é definida recursivamente, como segue: ¶Todo átomo é uma fórmula. ·Se F 1 e F 2 são fórmulas, então (F 1 and F 2 ), (F 1 or F 2 ), not (F 1 ) e not (F 2 ) são também fórmulas. Tuple Relational Calculus...

13 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias13 Os valores verdades destas quatro fórmulas são derivados das fórmulas componentes como segue: J(F 1 and F 2 ) é TRUE se ambos F 1 and F 2 são TRUE; em caso contrário é FALSE. J(F 1 or F 2 ) é FALSE se ambos F 1 and F 2 são FALSE; em caso contrário é TRUE. Jnot (F 1 ) É TRUE se F 1 é FALSE; é FALSE se F 1 é TRUE. Jnot (F 2 ) É TRUE se F 2 é FALSE; é FALSE se F 2 é TRUE. Tuple Relational Calculus...

14 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias14 Dois operadores adicionais chamados quantificadores podem aparecer nas fórmulas: –o quantificador universal ( ) –o quantificador existencial ( ) Conceito (informal) de variáveis livres (free) e ligadas (bound). Uma variável-tupla t é ligada (bound) se ela é quantificada, isto é, se aparece em uma cláusula ( t) ou ( t); em caso contrário ela é livre (free). Tuple Relational Calculus...

15 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias15 Uma variável-tupla em uma fórmula é dita livre (free) ou ligada (bound) de acordo com as seguintes regras: Uma ocorrência de uma variável-tupla t em uma fórmula F, que é um átomo, é livre (free) em F. Uma ocorrência de uma variável-tupla t é livre (free) ou ligada (bound) em uma fórmula constituída por conectivos lógicos - (F 1 and F 2 ), (F 1 or F 2 ), not (F 1 ) e not (F 2 ) - dependendo se ela é livre ou ligada em F 1 ou F 2 (se ela ocorre em uma das fórmulas). Tuple Relational Calculus...

16 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias16 Observe que em uma fórmula F = (F 1 and F 2 ) ou F = (F 1 or F 2 ), uma variável-tupla t pode ser livre em F 1 e ligada em F 2 ou vice- versa. Neste caso uma ocorrência da variável-tupla é ligada e a outra é livre em F. Todas as ocorrências livres (free) de uma variável-tupla t em F são ligadas (bound) em uma fórmula F do tipo F= ( t) (F) ou ( t) (F). A variável-tupla é ligada (bound) ao quantificador especificado em F. Tuple Relational Calculus...

17 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias17 Exemplo: F 1 : d.DNAME = `Research` F 2 : ( t) (d.DNUMBER = t.DNO) d é livre em F 1 e F 2 enquanto t é ligada ao quantificador existencial em F 2. Tuple Relational Calculus...

18 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias18 Uma fórmula (condição)... é definida recursivamente, como segue: ¸Se F é uma fórmula, então ( t) (F) é também uma fórmula, onde t é uma variável-tupla. ( t) (F) é TRUE se a fórmula F é avaliada como TRUE para alguma (pelo menos uma) tupla atribuída a ocorrências livres de t em F; em caso contrário ( t) (F) é FALSE. ¸Se F é uma fórmula, então ( t) (F) é também uma fórmula, onde t é uma variável-tupla. ( t) (F) é TRUE se a fórmula F é avaliada como TRUE para todas as tuplas (no universo) atribuídas a ocorrências livres de t em F; em caso contrário ( t) (F) é FALSE. Tuple Relational Calculus...

19 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias19

20 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias20

21 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias21 QUERY Q1: Recupere o nome e o endereço de todos os empregados que trabalham para o departamento `Research`. {t.FNAME, t.LNAME, t.ADDRESS | EMPLOYEE(t) and (( d) DEPARTMENT(d) and d.DNAME = `Research` and d.DNUMBER = t.DNO))} Atenção: As únicas variáveis-tuplas livres (free) em expressões do Cálculo Relacional devem ser aquelas que aparecem no lado esquerdo da barra |. Tuple Relational Calculus...

22 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias22 QUERY Q2: Para todos os projetos localizados em `Statford` liste o n o do projeto, o dept o que o controla e o último nome, data do nascimento e endereço do gerente do dept o controlador. {p.PNUMBER, p.DNUM, m.LNAME, m.BDATE, m.ADDRESS | PROJECT(p) and EMPLOYEE(m) and p.PLOCATION = `Statford` and (( d) DEPARTMENT(d) and p.DNUM = d.DNUMBER and d.MGRSSN = m.SSN))} Tuple Relational Calculus...

23 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias23 QUERY Q8: Para cada empregado recupere o seu primeiro e último nome, além do primeiro e último nome do(a) seu(ua) supervisor(a) imediato(a). {e.FNAME, e.LNAME, s.FNAME, s.LNAME | EMPLOYEE(e) and EMPLOYEE(s) and e.SUPERSSN = s.SSN} QUERY Q3: Encontre o nome de cada empregado que trabalhe em algum projeto controlado pelo dept o n o 5 {e.LNAME, e.FNAME | EMPLOYEE(e) and (( x) ( w) (PROJECT(x) and WORKS_ON(w) and x.DNUM = 5 and w.ESSN = e.SSN and x.PNUMBER = w.PNO))} Tuple Relational Calculus...

24 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias24 QUERY Q4: Faça uma lista de n os de projetos que envolvam um empregado cujo último nome seja `Smith`, ou como um simples trabalhador ou como gerente do dept o que controla o projeto. {p.PNUMBER, | PROJECT(p) and ((( e) ( w) (EMPLOYEE(e) and WORKS_ON(w) and w.PNO = p.NUMBER and e.LNAME = `Smith` and e.SSN = w.ESSN)) or (( m) ( d) (EMPLOYEE(m) and DEPARTMENT(d) and p.DNUM = d. DNUMBER and d.MGRSSN = m.SSN and m.LNAME = `Smith`)))} Tuple Relational Calculus...

25 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias25 Transformações dos Quantificadores Existencial e Universal ¶( x) (P(x)) = (¬ x) (not (P(x))) ·( x) (P(x)) = not ( x) (not (P(x))) ¸( x) (P(x) and Q(X)) = (¬ x) (not (P(x)) or not Q(x))) ¹( x) (P(x) or Q(X)) = (¬ x) (not (P(x)) and not Q(x))) º( x) (P(x) or Q(x)) = not ( x) (not (P(x)) and not (Q(x))) »( x) (P(x) and Q(x)) = not ( x) (not (P(x)) or not (Q(x))) Regras: i) transforme um quantificador no outro, precedendo-o por not; ii) and e or substituem-se reciprocamente; iii) P(x) é transformado em not (P(x)) e not (P(x)) em P(x). Tuple Relational Calculus...

26 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias26 Tuple Relational Calculus... ( x) (P(x)) (¬ x) (P(x)) not ( x) (P(x)) Todavia, a implicação abaixo NÃO É VERDADEIRA: not ( x) (P(x)) (¬ x) (P(x))

27 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias27 Regras para uso correto do Quantificador Universal QUERY Q3: Recupere os nomes dos empregados que trabalham em todos os projetos controlados pelo dept o n o 5. {e.LNAME, e.FNAME | EMPLOYEE(e) and ( x) (not(PROJECT(x)) or (not (x.DNUM = 5) or (( w) (WORKS_ON(w) and w.ESSN = e.SSN and x.PNUMBER = w.PNO)))))} Tuple Relational Calculus...

28 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias28 Pode-se subdividir a QUERY Q3 da seguinte forma: {e.LNAME, e.FNAME | EMPLOYEE(e) and F} F = ( x) (not (PROJECT(x)) or F 1 ) F 1 = (not (x.DNUM = 5) or F 2 ) F 2 = ( w) (WORKS_ON(w) and w.ESSN = e.SSN and x.PNUMBER = w.PNO) Dica: excluir do quantificador universal todas as tuplas em que não estamos interessados. If A então B é equivalente a: not A or B Tuple Relational Calculus...

29 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias29 Não desejamos selecionar tuplas da relação PROJECT que não sejam de interesse. Queremos apenas aquelas controladas pelo dept o 5... Para a fórmula ( x) (F) ser verdadeira, deve-se ter a fórmula F verdadeira para todas as tuplas no universo que podem ser atribuídas a x. If PROJECT(x) então x.DNUM=5... (not (PROJECT(x) or F 1 ) (not x.DNUM = 5) or F 2 ) F 2 : o empregado está presente em todas as tuplas da relação PROJECT que ainda não foram excluídas. ( w) (WORKS_ON(w) and w.ESSN = e.SSN and x.PNUMBER = w.PNO) Tuple Relational Calculus...

30 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias30 Forma alternativa de se escrever a QUERY Q3A, transformando- se o quantificador universal em existencial: {e.LNAME, e.FNAME | EMPLOYEE(e) and (not ( x) (PROJECT(X) and (x.DNUM = 5) and not ( w) (WORKS_ON(w) and w.ESSN = e.SSN and x.PNUMBER = w.PNO))))} QUERY Q6: Encontre o nome de todos os empregados que não possuem dependentes. {e.LNAME, e.FNAME | EMPLOYEE(e) and (not ( d) (DEPENDENT(d) and (e.SSN = d.ESSN)))} Tuple Relational Calculus...

31 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias31 QUERY Q6A: usando as regras de transformação.. {e.LNAME, e.FNAME | EMPLOYEE(e) and (( d) (not (DEPENDENT(d)) or not (e.SSN = d.ESSN)))}. QUERY Q7: Liste os nomes dos gerentes que tenham pelo menos um dependente. {e.LNAME, e.FNAME | EMPLOYEE(e) and (( d) ( p) (DEPARTMENT(d) and DEPENDENT(p) and (e.SSN = d.MGRSSN) and (p.ESSN = e.SSN))))} Tuple Relational Calculus...

32 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias32 QUEL é uma DDL e DML originalmente desenvolvida para o SGBD relacional INGRES (Interactive Graphics and Retrieval System. Desenvolvido como um projeto de pesquisa na década de 70 na Universidade da Califórnia em Berkeley. Comercialmente disponível desde Pode ser usada como uma linguagem de consultas interativa ou ser embutida em linguagens de programação, funcionalidade similar às primeiras versões do SQL. Possui funções agregadas e de grupamento A Linguagem QUEL...

33 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias33 O comando CREATE e tipos de dados CREATE EMPLOYEE(FNAME= TEXT(15), MINIT= C1, LNAME = TEXT(15), SSN= C9, BDATE= DATE, ADDRESS= TEXT(30), SEX= C1, SALARY= MONEY, SUPERSSN= C9, DNO= I4); A Linguagem QUEL...

34 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias34 O comando INDEX: utilizado para especificar um índice (só de 1 0 nível) em uma relação. Um índice de múltiplos níveis pode ser criado especificando-se uma B-TREE sobre um índice já existente. MODIFYEMPLOYEETO BTREE UNIQUE ON SSN; INDEX ONEMPLOYEE IS NAME_INDEX (LNAME, FNAME); MODIFYDEPARTMENTTO HASH UNIQUE ON DNAME; INDEX ON DEPARTMENT IS DNO_INDEX (DNO); MODIFYDNO_INDEX TO CBTREE UNIQUE ON DNO; DESTROY DNO_INDEX, NAME_INDEX; A Linguagem QUEL...

35 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias35 Visão geral de consultas em QUEL As consultas do tipo select-project-join são similar ao Tuple Relational Calculus A cláusula RETRIEVE especifica os atributos a serem recuperados Todos os atributos devem ser explicitamente qualificados ou pelo nome da relação ou por uma variável-tupla declarada para assumir valores na relação. Variáveis-tuplas são declaradas com o comando RANGE A cláusula WHERE especifica as condições de seleção das tuplas e de JOIN

36 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias36 Consultas em QUEL... QUERY Q0: Recupere a data de nascimento e endereço do empregado cujo nome é `John B. Smith`. RETRIEVE (EMPLOYEE.BDATE, EMPLOYEE.ADDRESS) WHEREEMPLOYEE.FNAME=`John` AND EMPLOYEE.MINIT=`B` AND EMPLOYEE.LNAME=`SMith` Especificação de variáveis-tuplas com RANGE RANGE OFE,S IS EMPLOYEE, D IS DEPARTMENT, P IS PROJECT, W IS WORK_ON, DEP IS DEPENDENT, DL IS DEPT_LOCATIONS

37 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias37 QUERY Q1: Recupere o nome e o endereço de todos os empregados que trabalham para o departamento `Research`. RETRIEVE(E.FNAME, E.LNAME, E.ADDRESS) WHERED.DNAME=`Research` AND D.DNUMBER = E.DNO QUERY Q2: Para todos os projetos localizados em `Statford` liste o n o do projeto, o dept o que o controla e o último nome, data do nascimento e endereço do gerente do dept o controlador. RETRIEVE(P.PNUMBER, P.DNUM, E.LNAME, E.BDATE, E.ADDRESS) WHEREP.DNUM=D.DNUMBER AND D.MGRSSN=E.SSN AND P.PLOCATION=`STATFORD` Consultas em QUEL...

38 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias38 QUERY Q8: Para cada empregado recupere o seu primeiro e último nome, além do primeiro e último nome do(a) seu(ua) supervisor(a) imediato(a). RETRIEVE(E.FNAME, E.LNAME, S.FNAME, S.LNAME) WHEREE.SUPERSSN = S.SSN Para recuperar todos os atributos das tuplas selecionadas, usa-se a keyword ALL QUERY Q1D: Para cada empregado do dept o `Research` recupere todos os seus atributos, juntamente com os do dept o. RETRIEVE(E.ALL, D.ALL) WHERED.DNAME=`Research` AND E.DNO = D.DNUMBER Consultas em QUEL...

39 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias39 Para se eliminar tuplas duplicatas no resultado da consulta, usa-se a keyword UNIQUE. QUERY Q11: Liste todos os salários dos empregados, mantendo os valores duplicados. RETRIEVE(E.SALARY) QUERY Q11A: Liste todos os salários dos empregados, eliminando valores duplicados. RETRIEVEUNIQUE(E.SALARY) Consultas em QUEL...

40 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias40 QUERY Q3: Recupere os nomes dos empregados que trabalhem em algum projeto que seja controlado pelo dept o 5. RETRIEVEUNIQUE (E.FNAME, E.LNAME) WHEREP.DNUM=5 AND P.PNUMBER=W.PNO AND W.ESSN=E.SSN Em QUEL qualquer variável RANGE aparecendo na cláusula WHERE e que não apareça na cláusula RETRIEVE é implicitamente quantificado pelo quantificador existencial (tuplas P e W no exemplo acima). Para consultas que envolvam quantificadores universais, ou a negação de quantificadores existenciais, deve-se usar as funções COUNT ou ANY. Consultas em QUEL...

41 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias41 Funções buit-in de QUEL: COUNT, SUM, MIN, MAX, AVG As funções buit-in COUNTU, SUMU e AVG eliminam as tuplas duplicatas antes da aplicação de COUNT, SUM e AVG. Todas as funções QUEL podem ser usadas ou na cláusula RETRIEVE ou na cláusula WHERE. Sempre que uma função é usada na cláusula RETRIEVE deve-se fornecer um nome de atributo independente, o qual aparecerá como o nome de uma coluna no resultado da consulta. QUERY Q15: Recupere a soma dos salários de todos empregados, os salários máximo, mínimo e médio. RETRIEVE(SUMSAL=SUM(E.SALARY), MAXSAL=MAX(E.SALARY), MINSAL=MIN(E.SALARY), AVGSAL=AVG(E.SALARY)) Consultas em QUEL...

42 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias42 QUERY Q17: Recupere o n o total de empregados na empresa. RETRIEVE(TOTAL_EMPS = COUNT (E.SSN)) QUERY Q18: Recupere o n o de empregados no dept o `Research`. RETRIEVE(RESEARCH_EMPS = COUNT (E.SSN WHERE E.DNO=D.DNUMBER AND D.DNAME = `Research`)) Em QUEL o qualificador BY pode ser utilizado dentro da especificação de cada função, para determinar um particular agrupamento de tuplas. Por isso, diferentes grupamentos podem ser usados na mesma consulta. Consultas em QUEL...

43 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias43 Cada função pode ter seus próprios atributos de grupamento, suas próprias condições WHERE e grupamentos podem ser usados ou na cláusula RETRIEVE ou na cláusula WHERE. QUERY Q20: Para cada dept o, recupere o n o do dept o, o n o de empregados no dept o e o seu salário médio. RETRIEVE(E.DNO, NO_OF_EMPS = COUNT (E.SSN BY E.DNO), AVG_SAL = AVG (E.SALARY BY E.DNO)) QUERY Q21: Para cada projeto recupere o n o do projeto, o nome do projeto e o n o de empregados que trabalham no projeto. RETRIEVE(W.PNO, P.PNAME, NO_OF_EMPS = COUNT (W.ESSN BY W.PNO, P.PNAME WHERE W.PNO = P.PNUMBER)) Consultas em QUEL...

44 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias44 QUERY Q22: Para cada projeto no qual trabalham mais de dois empregados, recupere o n o do projeto, o nome do projeto e o n o de empregados que trabalham no projeto. RETRIEVE(W.PNO, NO_OF_EMPS = COUNT (W.ESSN BY W.PNO)) WHERE COUNT (W.ESSN BY W.PNO) > 2 A keyword ANY é usada para especificar o quantificador existencial ANY é aplicada a uma subquery. Se o resultado incluir pelo menos uma tupla, ANY retorna 1; em caso contrário retorna 0. ANY é similar à função EXISTS (retorna TRUE ou FALSE) do SQL. Consultas em QUEL...

45 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias45 QUERY Q12: Recupere o nome de cada empregado que tenha um dependente com o mesmo first name e sexo do empregado. RETRIEVE (E.FNAME, E.LNAME) WHERE ANY (DEP.DEPENDENT_NAME BY E.SSN WHERE E.SSN = DEP.ESSN AND E.FNAME = DEP_DEPENDENT_NAME AND E.SEX = DEP.SEX) =1 QUERY 6: Recupere os nomes de todos os empregados que não tenham dependentes. RETRIEVE(E.FNAME, E.LNAME) WHERE ANY (DEP.DEPENDENT_NAME BY E.SSN WHERE E.SSN = DEP.ESSN) = 0 Consultas em QUEL...

46 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias46 QUERY 3: Recupere o SSN de cada empregado que trabalhe em todos os projetos controlados pelo dept o de n o 5. RETRIEVE(E.SSN) WHEREANY(P.PNUMBER WHERE (P.DNUM = 5) AND ANY (W.PNO BY E.SSN WHERE E.SSN = W.E.SSN AND P.PNUMBER = W.PNO) = 0) = 0) Consultas em QUEL...

47 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias47 Na comparação de strings em QUEL, * substitui qualquer seqüência arbitrária de caracteres e ? substitui um único caracter arbitrário. QUERY Q25: Recupere todos os empregados com endereço em Houston, TX RETRIEVE (E.LNAME, E.FNAME) WHERE E.ADDRESS = *Houston, TX) QUEL permite o uso dos operadores aritméticos padrões +, -,*e /. Consultas em QUEL...

48 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias48 Em QUEL é possível recuperar-se o resultado de uma consulta diretamente para uma relação. QUERY Q27: Mostre os salários que resultariam, se a todos os trabalhadores que trabalham no projeto ProductX fosse dado um aumento de 10%. Exemplo: Para armazenar o resultado de Q27 em uma relação denominada PRODUCTX_RAISES, a qual inclui o salário corrente em cada tupla, mas uma coluna chamada PROJ cujo valor é ProductX para todas as tuplas, teríamos: RETRIEVE INTO PRODUCTX_RAISES (PROJ = ProductX, E.FNAME, E.LNAME, CURRENT_SALARY = E.SALARY, PROPOSED_SALARY = E.SALARY * 1.1) WHERE E.SSN = W.ESSN AND W.PNO = P.PNUMBER AND P.PNAME=ProductX Consultas em QUEL...

49 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias49 QUEL possui uma cláusula SORT BY semelhante à cláusula ORDER BY do SQL. QUEL possui facilidades para definir VISÕES sobre um banco de dados e mecanismos para embutir o QUEL em uma linguagem de programação (EQUEL). Em QUEL os comandos utilizados para alterar um banco de dados são: APPEND, DELETE e REPLACE. Exemplo: Adicionar uma nova tupla na relação EMPLOYEE. APPEND TO EMPLOYEE (FNAME=Richard, MINIT=K, LNAME=Marini, SSN= , BDATE=30-DEC-52, ADDRESS=98 Oak Forest, Katy, TX, SEX=M, SALARY=37000, SUPERSSN= , DNO=4) Consultas em QUEL...

50 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias50 O comando APPEND permite a inserção de múltiplas tuplas em uma relação, como resultado de uma seleção de tuplas efetuadas em outra consulta. DELETE é usado para remover tuplas DELETE EMPLOUEE WHERE E.LNAME = Brown DELETE EMPLOYEE WHERE E.DNO=D.DNUMBER AND D.NAME = Research REPLACE é usado para modificar os valores dos atributos REPLACE PROJECT (PLOCATION = Belaire, DNUM = 5) WHERE P.PNUMBER = 10 Consultas em QUEL...

51 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias51 QUEL x SQL... ¶Tanto QUEL quanto SQL são fundamentadas em variações do Tuple Relational Calculus (QUEL é mais próxima do TRC). ·Em SQL o aninhamento de blocos SELECT... FROM... WHERE pode ser repetido em um número de níveis arbitrario; Em QUEL o aninhamento está restrito a apenas um nível. ¸Tanto QUEL quanto SQL usam implicitamente quantificadores existenciais. Ambas expressam a quantificação universal em termos da quantificação existencial equivalente. ¹Em QUEL a cláusula para grupamento BY... WHERE pode ocorrer qualquer número de vezes em cláusulas RETRIEVE ou WHERE, permitindo diferentes grupos em uma mesma consulta. ºEm SQL somente um grupamento simples por consulta é permitido, via a cláusula GROUP... BY... HAVING. Assim o aninhamento de consultas é necessário para se obter diferentes grupamentos.

52 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias52 SQL provê algumas operações explícitas da AR sobre conjuntos, como o operador UNION. Em QUEL, operadores similares não estão disponíveis e deve-se usar condições de seleção e de join mais complexas. QUEL permite a especificação de arquivos temporários para receber o resultado de uma consulta em um único comando; em SQL deve-se utilizar um comando CREATE TABLE. O operador ANY retorna, em QUEL, um valor inteiro 0 ou 1. EM SQL o operador EXISTS retorna um valor TRUE ou FALSE. SQL evoluiu muito e tornou-se um padrão de fato para SGBDs relacionais QUEL x SQL

53 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias53 Domain Relational Calculus (DRC)... Trata-se de outro tipo de linguagem de consulta a Bancos de Dados Relacionais baseada no Cálculo de Predicados. Há uma linguagem de consulta comercial - Query by Example (QBE) - que está de algum modo relacionada ao DRC. Historicamente, todavia, a especificação formal do DRC é posterior ao surgimento da QBE. O DRC difere do TRC quanto ao tipo de variáveis utilizadas em suas fórmulas. No TRC as variáveis assumem valores sobre as tuplas, enquanto no DRC, elas assumem valores sobre os domínios dos atributos.

54 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias54 Para formar uma relação de grau n como resultado de uma consulta, deve-se ter n desssas variáveis de domínio (domain variables). Uma expressão do DRC é da forma: {x 1, x 2,..., x n | COND (x 1, x 2,..., x n, x n+1, x n+2,..., x n+m } onde x 1, x 2,..., x n, x n+1, x n+2,..., x n+m são variáveis de domínio que assumem valores sobre domínios (de atributos) e COND é uma condição ou fórmula do DRC. Uma fórmula é constituída por átomos, ligeiramente diferentes daqueles do TRC. Domain Relational Calculus (DRC)...

55 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias55 Átomos no DRC podem ser: ¶Um átomo da forma R(x 1, x 2,..., x j ), onde R é o nome de uma relação de grau j, e cada x i, 1 i j é uma variável de domínio. A semântica deste átomo diz que uma lista de valores deve ser uma tupla na relação de nome R, em que x i é o valor do i-ésimo atributo da tupla. Para fins de abreviação, despreza-se as vírgulas e escreve-se uma expressão do DRC como: {x 1 x 2...x n | R (x 1 x 2, x 3 ) and...}, ao invés de {x 1, x 2,..., x n | R (x 1, x 2, x 3 ) and...} ·Um átomo da forma x i op x j, onde op é um dos operadores de comparação no conjunto {=,,,,, }, x i e x j são variáveis de domínio. Domain Relational Calculus (DRC)...

56 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias56 Um átomo da forma x i op c ou c op x j, onde op é um dos operadores de comparação no conjunto {=,,,,, }, x i e x j são variáveis de domínio e c é um valor constante. Como no TRC, os átomos são avaliados como TRUE ou FALSE para um conjunto específico de valores, chamados os valores- verdade dos átomos. Em, se as variáveis de domínio assumem valores correspondentes a uma tupla pertencente à relação R, então o átomo é TRUE. Nos casos e, se as variáveis de domínio assumem valores que satisfazem a condição (de comparação) então o átomo é TRUE. Fórmulas são feitas de átomos, variáveis e quantificadores (~TRC). Domain Relational Calculus (DRC)...

57 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias57 QUERYQ0: Recupere a data de nascimento e endereço do empregado cujo nome é `John B. Smith`. {uv | ( q) ( r) ( s) (EMPLOYEE(qrstuvwxyz) and q=John, and r=B and s=Smith)} QUERY Q0A: alternativa à query Q0: {uv | EMPLOYEE(John, B, Smith, tuvwxyz)} QUERY Q1: Recupere o nome e o endereço de todos os empregados que trabalham no departamento Research. {qsv | ( z) (EMPLOYEE(qrstuvwxyz) and ( l) ( m) (DEPARTMENT(lmno) and t=Research and m=z))} Queries em DRC...

58 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias58 QUERY Q2: Para todo projeto localizado em Stafford, liste o n o do projeto, o n o do dpt o que o controla, o último nome do gerente, a data de seu nascimento e o seu endereço. {jksuv | ( j) (PROJECT(hijk) and ( t) (EMPLOYEE(qrstuvwxyz) and ( m) ( n) (DEPARTMENT(lmno) and k= m and n=t and j=Stafford)))} QUERY 6: Recupere o nome de todos os empregados que não tenham dependentes. {qs | ( t) (EMPLOYEE(qrstuvwxyz) and (not ( l)(DEPENDENT(lmnop) and t=l)))} Queries em DRC...

59 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias59 QUERY 6A: Query Q6, usando o quantificador universal. {qs | ( t) (EMPLOYEE(qrstuvwxyz) and (( l) (not (DEPENDENT(lmnop) or not (t=l))))} QUERY 7: Liste os nomes dos gerentes que tenham pelo menos um dependente. {sq | ( t) (EMPLOYEE(qrstuvwxyz) and ( j) (DEPARTMENT(hijk) and ( l)(DEPENDENT(lmnop) and t=j and l=t)))))} Queries em DRC

60 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias60 Visão Geral da Linguagem QBE... Linguagem de consultas para BDs relacionais desenvolvida pela IBM. Parte da Query Management Facility (QMF), opção de interface do DB2. A consulta é formulada através do preenchimento, pelo usuário, de uma série de templates. Constantes e variáveis são colocadas nas colunas dos templates para construir um exemplo relacionado à consulta ou a atualização. QBE é relacionado ao DRC e demonstra-se que é relacionalmente completo.

61 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias61 Constantes são introduzidas nos templates da mesma forma como se escrevem. Os valores exemplos são antecedidos por _. Representam variáveis de domínio livres. Não há necessidade de se especificar valores exemplos para as colunas cujos atributos não temos interesse em recuperar. Os valores exemplos são completamente arbitrários e pode-se especificar qualquer valores para eles. O prefixo P. indica que um valor particular é para ser recuperado. Visão Geral da Linguagem QBE...

62 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias62 QUERYQ0: Recupere a data de nascimento e endereço do empregado cujo nome é `John B. Smith`. {uv | ( q) ( r) ( s) (EMPLOYEE(qrstuvwxyz) and q=John, and r=B and s=Smith)} Visão Geral da Linguagem QBE...

63 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias63 Cada coluna de um template pode ser pensada como uma variável de domínio implícita. Na consulta QBE, a coluna com P. no template corresponde a variáveis especificadas à esquerda da | no DRC. As colunas com valores constantes correspondem a variáveis de domínio com condições de seleção de igualdade. A condição EMPLOYEE(qrstuvwxyz) e os quantificadores existenciais estão implícitos, porque o template correspondente a relação EMPLOYEE está sendo utilizado. Os operadores de comparação devem ser explicitados no template. Para condições mais complexas o usuário pode utilizar um condition box (IBM) Visão Geral da Linguagem QBE...

64 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias64 QUERY Q0A: Liste os SSNs dos empregados que trabalham mais de 20 horas semanais no projeto de n o 1. Visão Geral da Linguagem QBE...

65 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias65 QUERY Q0B: Liste os SSNs dos empregados que trabalham mais de 20 horas semanais ou no projeto de n o 1, ou no projeto de n o 2. Visão Geral da Linguagem QBE...

66 UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias66 Todas as condições especificadas na mesma linha são conectadas pelo operador lógico and. As condições especificadas em linhas distintas são conectadas pelo operador lógico or. Visão Geral da Linguagem QBE...


Carregar ppt "UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias1 Bancos de Dados Mestrado em Engenharia de Computação área de concentração Geomática."

Apresentações semelhantes


Anúncios Google