Banco de Dados. Álgebra Relacional. João Eduardo Ferreira Osvaldo Kotaro Takai

Documentos relacionados
Banco de Dados. Álgebra Relacional. João Eduardo Ferreira Osvaldo Kotaro Takai Marcelo Finger

Banco de Dados. Cálculo Relacional de Domínio. João Eduardo Ferreira Osvaldo Kotaro Takai Marcelo Finger

ALGEBRA RELACIONAL. Álgebra Relacional Conjunto básico de operações para o Modelo Relacional O resultado é uma relação

Banco de Dados. Cálculo Relacional de Tuplas. João Eduardo Ferreira Osvaldo Kotaro Takai

Banco de Dados. Modelo de Dados Relacional. João Eduardo Ferreira Osvaldo Kotaro Takai DCC-IME-USP

1ª Prova 23/10/17. Tópicos estudados (todos os assuntos até agora, 12 aulas):

Banco de Dados Prof. Célio R. Castelano Página 1 de 9. Álgebra Relacional

IEC Banco de Dados I Aula 06 Álgebra Relacional

Banco de Dados. Modelo Entidade Relacionamento. João Eduardo Ferreira Osvaldo Kotaro Takai Marcelo Finger

Curso Superior de Tecnologia em BD Curso Superior de Tecnologia em DAI

Um modelo de dados, além de definir estruturas e restrições, deve definir um conjunto de operações para manipular os dados.

Banco de Dados Notas de Aula Consultas em SQL Prof. Dr. Daniel A. Furtado

ÁLGEBRA E CÁLCULO RELACIONAL

A Linguagem SQL. Introdução a Banco de Dados DCC 011

Banco de Dados I. Aula 16 - Prof. Bruno Moreno 04/11/2011

SQL-99: Esquema de BD EMPRESA

Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Operações da Álgebra Relacional Operadores Especiais da Álgebra Relacional Renomeação

Bases de Dados. Parte IV: Álgebra e Cálculo Relacional

ANÁLISE E PROJETO DE BANCO DE DADOS

Álgebra Relacional e SQL

Bases de Dados. Parte IV

Bases de Dados. Parte IV: Álgebra e Cálculo Relacional

Bases de Dados. Parte IV. Álgebra e Cálculo Relacional

Banco de Dados I. Aula 14 - Prof. Bruno Moreno 11/10/2011

Banco de Dados. Dependências Funcionais e Normalização de Bancos de Dados Relacionais. João Eduardo Ferreira Osvaldo Kotaro Takai

Banco de Dados. Aula 8 - Prof. Bruno Moreno 16/09/2011

Modelo de Dados Relacional

Modelo de dados relacional e as restrições de um BD relacional

Banco de Dados. Dependências Funcionais e Normalização de Bancos de Dados Relacionais. João Eduardo Ferreira Osvaldo Kotaro Takai Marcelo Finger

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

Unipar Universidade Paranaense Disciplina: Banco de Dados II 3ª Série Profª: Késsia Marchi Profa. Késsia Marchi

- SQL Linguagem de Manipulação de Dados

Roteiro. Álgebra Relacional e Cálculo Relacional. BCC321 - Banco de Dados I. Introdução. Ementa. Posicionamento. Introdução

Exercício Aula Passada. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

Uma expressão básica em SQL consiste em três cláusulas: select, from e where.

Consultas SQL. Andre Noel

Sumário SELECT + FROM

SQL - Perguntas. André Restivo. Faculdade de Engenharia da Universidade do Porto. February 24, 2012

Álgebra e cálculo relacional. Andre Noel

Introdução ao SQL. Aécio Costa

Aula 11 SBD SQL Parte 3. Profa. Elaine Faria UFU

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

Álgebra Relacional e SQL operações de interesse

Banco de Dados I Módulo III: Linguagens de Consulta. (Aula 1) Clodis Boscarioli

Banco de Dados I Módulo II: Modelagem Entidade- Relacionamento versus Relacional. (Aula 5) Clodis Boscarioli

Roteiro. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

Rápida revisão do Modelo Relacional

4. Projecto de Bases de Dados

Álgebra Relacional. Introdução. Introdução. Álgebra Relacional

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 17. Escola Politécnica da Universidade de São Paulo

SISTEMAS DE BANCO DE DADOS. Prof. Adriano Pereira Maranhão

TECNOLOGIA EM SISTEMAS PARA INTERNET. Banco de dados em aplicativos WEB. Aula 5

Aula 8 BD1 Álgebra Relacional. Profa. Elaine Faria UFU

António Rocha Nuno Melo e Castro

Bancos de Dados Notas de Aula Álgebra Relacional Introdução Prof. Dr. Daniel A. Furtado

Modelo de Dados Relacional

Álgebra Relacional. Linguagem de consultas procedural Conjunto de operações que usam uma ou duas relações como entrada e geram uma relação de saída

- Um "query block" permite a implementação das operações de selecção, projecção e junção da álgebra relacional.

Introdução a. π LNAME, FNAME (σ SALARY>C (EMPLOYEE))

Sintaxe do comando SELECT

Banco de Dados. Modelo Entidade - Relacionamento. João Eduardo Ferreira Osvaldo Kotaro Takai jef@ime.usp.br DCC-IME-USP

Bancos de Dados. 7. Mapeamento ER/ERE para Relacional

ANÁLISE E PROJETO DE BANCO DE DADOS

GES013 - Sistema de Banco de Dados SQL/DML no PostgreSQL Parte 3 Tabelas de Junção e Funções de Agregação

PREFEITURA MUNICIPAL DE MIRACEMA 2014 ANALISTA DE SISTEMAS PROVA OBJETIVA

Bases de Dados. Álgebra Relacional II Junções, agregações, vistas. P. Serendero,

Banco de Dados. Otimização de consultas. Prof. Joao Eduardo Ferreira Prof. Osvaldo Kotaro Takai. Última atualização: 15 de maio de 2006

Banco de Dados I. Aula 9 - Prof. Bruno Moreno 20/09/2011

Linguagem SQL. ENG1518 Sistemas de Informação Gerenciais Prof. Marcos Villas

MODELO RELACIONAL PARTE 2

Álgebra Relacional. Programa. Modelos de Dados. LCs relacionais formais. Introdução

Introdução. Introdução. Álgebra Relacional. Linguagens formais de Consulta Modelo Relacional. O que foi visto até agora...

Bases de Dados 2013/2014 Álgebra Relacional. Helena Galhardas 2013 IST. Bibliografia. Raghu Ramakrishnan, Database Management Systems, Cap.

Bancos (Bases) de Dados Aula #7 Álgebra Relacional

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

Banco de Dados I Álgebra Relacional

Banco de Dados I. Aula 17 - Prof. Bruno Moreno 08/11/2011

DCC011 Introdução a Banco de Dados

TABELA ENTIDADE LINHA OCORRÊNCIA DA ENTIDADE COLUNA ATRIBUTO DA ENTIDADE

Banco de Dados II. Aula Prof. Diemesleno Souza Carvalho

MODELAGEM DE DADOS - INTRODUÇÃO AO SQL: DML. Prof. Angelo Augusto Frozza, M.Sc.

Trabalho de Banco de Dados. 1) Considere a distribuição de banco de dados abaixo, nos quais os fragmentos nos sites 2 e 3, e também no site 1.

Modelo Relacional - Manipulação

Álgebra Relacional: Prod. Cartesiano. Álgebra Relacional: Projeção. Álgebra Relacional: Junção Natural. Álgebra Relacional: Junção. 1.

Esquema Empresa. departamento (num, nome, identger, dataini) PK=(num) dependente (identemp, nome, sexo, datanasc, parentesco) PK=(identemp, nome)

SQL DML. SQL Linguagem de Manipulação de Dados SELECT SELECT SELECT SELECT

BDII SQL Junção Revisão 8

Bases de Dados. Álgebra Relacional. Selecção (σ) Seleccionar os registos que satisfazem uma condição exemplo: empréstimos da agência de Perryridge

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

SQL (Tópicos) Structured Query Language

ROTEIRO Introdução Álgebra e Cálculo Relacional Operações da Álgebra Relacional Classificação de Operadores da Álgebra Relacional Mapeamento AR -> SQL

Banco de Dados SQL. João Eduardo Ferreira Osvaldo Kotaro Takai

Um modelo por si próprio não pode realizar qualquer unidade de trabalho útil. É apenas uma representação da realidade.

GBC043 Sistemas de Banco de Dados Álgebra e Cálculo Relacional. Ilmério Reis da Silva UFU/FACOM

Consulta sobre múltiplas relações

Transcrição:

Banco de Dados Álgebra Relacional João Eduardo Ferreira Osvaldo Kotaro Takai

Introdução A Álgebra Relacional contempla um conjunto de operações que permitem especificar consultas sob relações. As operações são divididas em dois grupos: Operações da Teoria de Conjuntos Operações desenvolvidas especificamente para Bancos de Dados Relacionais

MDR Companhia DN DN DN DNÚMERO MERO MERO MERO DLOCALIZA DLOCALIZA DLOCALIZA DLOCALIZAÇÃO ÃO ÃO ÃO LOCAIS_DEPTO LOCAIS_DEPTO LOCAIS_DEPTO LOCAIS_DEPTO * ENSS ENSS ENSS ENSS NOMEDEPENDENTE NOMEDEPENDENTE NOMEDEPENDENTE NOMEDEPENDENTE SEXO SEXO SEXO SEXO DATANASC DATANASC DATANASC DATANASC RELA RELA RELA RELAÇÃO ÃO ÃO ÃO DEPENDENTE DEPENDENTE DEPENDENTE DEPENDENTE PNOME PNOME PNOME PNOME MNOME MNOME MNOME MNOME SNOME SNOME SNOME SNOME NSS NSS NSS NSS DATANASC DATANASC DATANASC DATANASC ENDERECO ENDERECO ENDERECO ENDERECO SEXO SEXO SEXO SEXO SALARIO SALARIO SALARIO SALARIO EMPREGADO EMPREGADO EMPREGADO EMPREGADO PNOME PNOME PNOME PNOME PNUMERO PNUMERO PNUMERO PNUMERO PLOCALIZACAO PLOCALIZACAO PLOCALIZACAO PLOCALIZACAO PROJETO PROJETO PROJETO PROJETO DNOME DNOME DNOME DNOME DNUMERO DNUMERO DNUMERO DNUMERO DEPARTAMENTO DEPARTAMENTO DEPARTAMENTO DEPARTAMENTO GERNNS GERNNS GERNNS GERNNS GERDATINIC GERDATINIC GERDATINIC GERDATINIC GERENCIA GERENCIA GERENCIA GERENCIA CONTROLA CONTROLA CONTROLA CONTROLA DNUM DNUM DNUM DNUM SUPERVISIONA SUPERVISIONA SUPERVISIONA SUPERVISIONA TRABALHA TRABALHA TRABALHA TRABALHA-PARA PARA PARA PARA NSSSUPER NSSSUPER NSSSUPER NSSSUPER DNUM DNUM DNUM DNUM ENSS ENSS ENSS ENSS PNO PNO PNO PNO HORAS HORAS HORAS HORAS TRABALHA TRABALHA TRABALHA TRABALHA-EM EM EM EM

Operador SELECT -σ Utilizada para selecionar, segundo alguma condição, tuplas de uma relação. Exemplos: Selecionar os empregados que trabalham para o departamento 4: σ NDEP = 4 (EMPREGADO) Selecionar empregados que tenham salário maior que 3000 σ SALÁRIO > 3000 (EMPREGADO)

Operador SELECT -σ Para especificar as condições, podemos utilizar: Valor Constante Nome de Atributo Os operadores relacionais: {=, <,,, } Os operadores lógicos: {AND, OR, NOT}

Operador SELECT -σ Exemplo: Selecionar os empregados que trabalham no departamento 4 e ganham mais de 2500 ou aqueles que trabalham no departamento 5 e ganham mais que 3000. PNOME MNOME SNOME NSS DATANASC ENDEREÇO SEXO SALARIO NSSSUPER DNUM John B Smith 123456789 09-JAN JAN-55 R. A, 1 M 3000 333445555 5 Franklin T Wong 333445555 08-DEZ DEZ-45 R. B, 2 M 4000 888665555 5 Alícia J Zelaya 999887777 19-JUL JUL-58 Av. C, 3 F 2500 987654321 4 Jennifer S Walla 987654321 20-JUN JUN-31 Trav. D, 4 F 4300 888665555 4 Ramesh K Narayan 666884444 15-SET SET-52 R. E, 5 M 3800 333445555 5 Joy A English 453453453 31-JUL JUL-62 R. F, 6 F 2500 333445555 5 Ahmad V Jabbar 987987987 29-MAR MAR-59 Av G, 7 M 2500 987654321 4 James E Borg 888665555 10-NOV NOV-27 Av H, 8 M 5500 null 3

Operador SELECT -σ Consulta: σ (NDEP = 4 AND SALÁRIO > 2500) OR (NDEP = 5 AND SALÁRIO > 3000) (EMPREGADO) Resultado: PNOME MNOME SNOME NSS DATANASC ENDEREÇO SEXO SALARIO NSSSUPER NDEP Franklin T Wong 333445555 08-DEZ DEZ-45 R. B, 2 M 4000 888665555 5 Jennifer S Walla 987654321 20-JUN JUN-31 Trav. D, 4 F 4300 888665555 4 Ramesh K Narayan 666884444 15-SET SET-52 R. E, 5 M 3800 333445555 5

Operador SELECT -σ Características e Propriedades do SELECT É um operador unário. Seleciona tuplas de somente uma relação O grau da relação resultante é o mesmo da relação original É comutativa: Pode-se trocar SELECT em cascata pela conjuntiva AND σ<cond 1 >(σ<cond 2 >( R)) = σ<cond 1 >AND<cond 2 > (R)

Operador PROJECT - π Enquanto o operador SELECT seleciona tuplas de uma relação, o operador PROJECT seleciona colunas de uma relação Por exemplo: Projetar os atributos SNOME, PNOME e SALÁRIO da relação EMPREGADO. PNOME MNOME SNOME NSS DATANASC ENDEREÇO SEXO SALARIO NSSSUPER NDEP John B Smith 123456789 09-JAN JAN-55 R. A, 1 M 3000 333445555 5 Franklin T Wong 333445555 08-DEZ DEZ-45 R. B, 2 M 4000 888665555 5 Alícia J Zelaya 999887777 19-JUL JUL-58 Av. C, 3 F 2500 987654321 4 Jennifer S Walla 987654321 20-JUN JUN-31 Trav. D, 4 F 4300 888665555 4 Ramesh K Narayan 666884444 15-SET SET-52 R. E, 5 M 3800 333445555 5 Joy A English 453453453 31-JUL JUL-62 R. F, 6 F 2500 333445555 5 Ahmad V Jabbar 987987987 29-MAR MAR-59 Av G, 7 M 2500 987654321 4 James E Borg 888665555 10-NOV NOV-27 Av H, 8 M 5500 null 3

Operador PROJECT - π Consulta: π SNOME, PNOME, SALÁRIO (EMPREGADO) Resultado: PNOME John Franklin Alícia Jennifer Ramesh Joy Ahmad James SNOME SALARIO Smith 3000 Wong 4000 Zelaya 2500 Walla 4300 Narayan 3800 English 2500 Jabbar 2500 Borg 5500

Operador PROJECT - π O operador PROJECT remove quaisquer tuplas duplicadas da relação resultante Por exemplo: Projetar SEXO e SALÁRIO da relação EMPREGADO π SEXO, SALÁRIO (EMPREGADO) SEXO SALARIO M 3000 M 4000 F 2500 F 4300 M 3800 M 2500 M 5500

Operador PROJECT - π Características e propriedades do operador PROJECT: O número de tuplas resultante sempre será igual ou menor que a quantidade de tuplas da relação original Não é comutativa Caso <lista de atributos 1> <lista de atributos 2> então, π <lista1> (π <lista2> (R)) = π <lista1> (R)

Seqüência de Operações Podemos combinar os operadores em uma única expressão para realizar uma consulta Por exemplo: Recuperar o PNOME, SNOME e SALÁRIO de todos os empregados que trabalham no departamento 5. PNOME MNOME SNOME NSS DATANASC ENDEREÇO SEXO SALARIO NSSSUPER NDEP John B Smith 123456789 09-JAN JAN-55 R. A, 1 M 3000 333445555 5 Franklin T Wong 333445555 08-DEZ DEZ-45 R. B, 2 M 4000 888665555 5 Alícia J Zelaya 999887777 19-JUL JUL-58 Av. C, 3 F 2500 987654321 4 Jennifer S Walla 987654321 20-JUN JUN-31 Trav. D, 4 F 4300 888665555 4 Ramesh K Narayan 666884444 15-SET SET-52 R. E, 5 M 3800 333445555 5 Joy A English 453453453 31-JUL JUL-62 R. F, 6 F 2500 333445555 5 Ahmad V Jabbar 987987987 29-MAR MAR-59 Av G, 7 M 2500 987654321 4 James E Borg 888665555 10-NOV NOV-27 Av H, 8 M 5500 null 3

Seqüência de Operações Consulta: π PNOME, SNOME, SALÁRIO (σ NDEP=5 (EMPREGADO)) Resultado: PNOME John Franklin Ramesh Joy SNOME Smith Wong Narayan English SALARIO 3000 4000 3800 2500

Relações Intermediárias Podemos criar relações intermediárias para explicitar a seqüência de operações: DEP5_EMPS σ NDEP=5 (EMPREGADO)) RESULT π PNOME, SNOME, SALÁRIO (DEP5_EMPS)

Renomeando Atributos Ao criar uma nova relação, podemos renomear os atributos da relação resultante. DEP5_EMPS σ NDEP=5 (EMPREGADO)) RESULT(NOME, SOBRENOME, SALÁRIO) π PNOME, SNOME, SALÁRIO (DEP5_EMPS) RESULT NOME John Franklin Ramesh Joy SOBRENOME Smith Wong Narayan English SALÁRIO 3000 4000 3800 2500

Operações da Teoria dos Conjuntos Os operadores da Teoria dos Conjuntos aplicam-se ao modelo relacional pois uma relação é como um conjunto de tuplas Por exemplo: Recuperar o NSS dos empregados que trabalham no departamento 5 ou, indiretamente supervisionem empregados que trabalham no departamento 5 DEP5_EMPS σndep=5 (EMPREGADO) RESULT1 π NSS (DEP5_EMPS) RESULT2(NSS) π NSSSUPER (DEP5_EMPS) RESULT RESULT1 RESULT2

Operações da Teoria dos Conjuntos Os operadores são: R S - União (todas as tuplas de R e todas de S) R S - Intersecção (todas as tuplas comuns a R e S) R S - Diferença (todas as tuplas de R que não estão em S) R x S Produto Cartesiano (combinação das tuplas de R com as de S)

Operações da Teoria dos Conjuntos Os operadores são: R S - União (todas as tuplas de R e todas de S) R S - Intersecção (todas as tuplas comuns a R e S) UNIÃO R S - Diferença (todas INTERSECÇÃO as tuplas de R que não estão em S) DIFERENÇA R x S Produto PRECISAM Cartesiano QUE R E(combinação S SEJAM das tuplas de R com as de COMPATÍVEIS S) NA UNIÃO

Operações da Teoria dos Conjuntos As operações de união, intersecção e diferença são operações bastante intuitivas em suas aplicações. No entanto, o produto cartesiano não é tão intuitivo.

Operações da Teoria dos Conjuntos Para facilitar, considere o seguinte exemplo: SNOME Smith Wong NSS 123456789 333445555 X NSSEMP 333445555 987654321 NOMEDEPENDENTE Ali Abner 123456789 Ali 123456789 Elizabeth SNOME NSS NSSEMP NOMEDEPENDENTE Smith 123456789 333445555 Ali Smith 123456789 987654321 Abner Smith 123456789 123456789 Ali Smith 123456789 123456789 Elizabeth Wong 333445555 333445555 Ali Wong 333445555 987654321 Abner Wong 333445555 123456789 Ali Wong 333445555 123456789 Elizabeth

Operações da Teoria dos Conjuntos Recuperar, para cada empregado do sexo feminino, uma lista de nomes de seus dependentes EMP_FEM σ SEXO='F' (EMPREGADO) EMP_NOMES π PNOME, SNOME, NSS (EMP_FEM) EMP_DEP EMP_NOMES X DEPENDENTE DEP_ATUAL σ NSS=ENSS (EMP_DEP) RESULT π PNOME, SNOME, NOMEDEPENDENTE (DEP_ATUAL) Ver resultado na página 113 do livro do Elmasri & Navathe

Operador Join ( ) O join ( ) é um dos operadores mais úteis da Álgebra Relacional. Normalmente o join é utilizado para combinar informações de duas ou mais relações. O join pode ser definido como um produto cartesiano seguido por uma seleção.

Operador Join Por exemplo, a consulta: Recuperar os nomes de gerentes de cada departamento DEP_EMP DEPARTAMENTO X EMPREGADO DEPT_GER σ GERNSS=NSS DEP_EMP RESULT π PNOME (DEPT_GER) DEP_EMP DEPARTAMENTO ERNSS=NSS EMPREGADO RESULT π PNOME (DEPT_EMP)

Operador Join Um outro exemplo: Recuperar, para cada empregado do sexo feminino, uma lista de nomes de seus dependentes EMP_FEM σ SEXO='F' (EMPREGADO) EMP_NOMES π PNOME, SNOME, NSS (EMP_FEM) EMP_DEP EMP_NOMES X DEPENDENTE DEP_ATUAL σ NSS=ENSS (EMP_DEP) RESULT π PNOME, SNOME, NOMEDEPENDENTE (DEP_ATUAL)

Operador Join Um outro exemplo: Recuperar, para cada empregado do sexo feminino, uma lista de nomes de seus dependentes σ EMP_FEM SEXO='F' (EMPREGADO) EMP_NOMES π PNOME, SNOME, NSS (EMP_FEM) EMP_DEP EMP_NOMES X DEPENDENTE DEP_ATUAL EMP_NOMES NSS=ENSS DEPENDENTE DEP_ATUAL σ NSS=ENSS (EMP_DEP) RESULT π PNOME, SNOME, NOMEDEPENDENTE (DEP_ATUAL)

Operador Equijoin É comum encontrar JOIN que tenham somente comparações de igualdade. Quando isso ocorre, o JOIN é chamado EQUIJOIN Note que no resultado de uma EQUIJOIN haverá, sempre, um ou mais pares de atributos com valores idênticos. DEPT_GER DEPARTAMENTO GERNSS=NSS EMPREGADO DNOME Pesquisa Administrativo Gerencial DNUMERO 5 4 1 NSSGER 333445555 987654321 888665555............ PNOME Franklin Jennifer James MNOME T S E SNOME Wong Walla Borg NSS 333445555 987654321 888665555............

Operação NATURAL JOIN * Devido a tal duplicidade ser desnessária, uma nova operação foi criada: NATURAL JOIN. O NATURAL JOIN (*), é um EQUIJOIN seguido da remoção de atributos desnessários. A forma geral desse operador é: Q R * (lista1), (lista2) S, onde: lista1 especifica os atributos de R e lista2 os atributos de S. Na relação resultante, os atributos da lista2 não irão aparer.

Operação NATURAL JOIN * Pode-se continuar a especificar o sinal de igualdade na condição, apesar de ser desnessária. Exemplo: PROJ_DEPT PROJETO * DNUM = DNÚMERO DEPARTAMENTO ou PROJ_DEPT PROJETO * (DNUM), (DNÚMERO) DEPARTAMENTO Pode-se omitir as listas de atributos. Nesses casos, o operador irá considerar para a condição, os atributos que tiverem o mesmo nome em ambas as relações. Exemplo: DEPT_LOCS DEPARTAMENTO * LOCAIS_DEPTO

Operador DIVISION A operação de divisão é útil para um tipo especial de consulta que ocorre com freqüência. Por exemplo: Recuperar os nomes de empregados que trabalham em todos os projetos em que John Smith trabalha. Primeiro, obtemos o conjunto de todos os projetos onde John Smith trabalha: SMITH σ PNOME='John' AND SNOME='Smith' (EMPREGADO) SMITH_PNO π PNO (TRABALHA_EM * NSSEMP = NSS SMITH) SMITH_PNO PNO 1 2

Operador DIVISION Obter a relação com o NSS e PNO dos empregados NSS_PNRO π PNRO, NSSEMP (TRABALHA_EM) NSS_PNRO NSSEMP PNRO 123456789 1 123456789 2 666884444 3 453453453 1 453453453 2 333445555 2 333445555 3 333445555 10 333445555 20 999887777 30 999887777 10 987987987 10 987987987 30 987654321 30 987654321 20 8886655555 20

Operador DIVISION Finalmente, aplicar a divisão: NSS_DESEJADOS(NSS) NSS_PNRO SMITH_PNO NSS_PNRO NSSEMP PNRO 123456789 1 123456789 2 666884444 3 453453453 1 453453453 2 333445555 2 333445555 3 333445555 10 333445555 20 999887777 30 999887777 10 987987987 10 987987987 30 987654321 30 987654321 20 8886655555 20 SMITH_PNO PNO 1 2 NSS_DESEJADO NSS 123456789 453453453

Operador DIVISION A divisão pode ser escrita em termos dos operadores básicos: π, x e. Sejam duas instâncias de relação A(x, y) e B(y). O resultado de A B contém todos os valores x de A que não são desqualificados. Um valor x é desqualificado se, ao anexar um valor y de B, resultar em tuplas <x, y> que não estão em A. A seguinte expressão permite fazer isso: XDESQUALIFICADO π x ( (π x ( A ) x B ) A )

Operador DIVISION Agora, basta tirar de A as tuplas desqualificadas, resultando na divisão: A B π x ( A ) XDESQUALIFICADO Assim A B π x ( A ) π x ( (π x ( A ) x B ) A )

Funções de Agregação Funções agregadas rebem como entrada um conjunto de tuplas e retornam um único valor SUM AVERAGE MAXIMUM MINIMUM Para especificar uma função agregada, utilizamos o operador FUNCTION - I

Funções de Agregação Por exemplo: Recuperar para cada departamento, o número de empregado e sua média salarial. R(DNO, NRO_EMPS, MÉDIA) NDEP I COUNT NSS, AVERAGE SALÁRIO (EMPREGADO) Atributo de Agrupamento R DNO NRO_EMPS 5 4 4 3 1 1 MÉDIA 3325 3100 5500

Funções de Agregação Se nenhum atributo de agrupamento for especificado, as funções de agregação irão ser aplicadas para todas as tuplas da relação R I COUNT COUNT NSS, AVERAGE SALÁRIO (EMPREGADO) R COUNT_NSS AVERAGE_SALÁRIO 8 3512.5

Clausura Recursiva A clausura recursiva é uma operação que não pode ser definida na álgebra relacional. Ela ocorre quando se tem relacionamentos recursivos. Por exemplo: Recuperar todos os supervisionados de um empregado e em todos os níveis, isto é: todos os empregados e' diretamente supervisionados por e, todos os empregados e'' diretamente supervisionados por e', e assim por diante.

Clausura Recursiva É simples especificar, na álgebra relacional, todos os empregados supervisionados por e num nível específico No entanto, não é possível especificar todos os supervisionados em todos os níveis

Clausura Recursiva Por exemplo: Obter o NSS de todos os empregados diretamente supervisionados por James Borg BORG_NSS π NSS (σ PNOME = 'James' AND SNOME = 'Borg' (EMPREGADO)) SUPERVISÃO(NSS1, NSS2) π NSS, NSSSUPER (EMPREGADO) RESULT1 π NSS1 (SUPERVISÃO NSS2 = NSS BORG_NSS)

Clausura Recursiva Para recuperar todos os supervisionados por Borg no nível 2, basta aplicar o JOIN ao resultado da primeira consulta: RESULT2 π NSS1 (SUPERVISÃO NSS2 = NSS RESULT1) Para obter todos os funcionários supervisionados por Borg nos níveis 1 e 2 basta aplicar a operação de união RESULT3 RESULT1 RESULT2

Inner Joins (Junções Internas) Os operadores Join vistos até agora, os quais apenas tuplas que satisfazem a condição de junção são mantidas no resultado, são conhecidas como junções internas (inner joins). Por exemplo, no NATURAL JOIN, R * S, apenas a tuplas de R que correspondem às tuplas em S e vi-versa) aparem no resultado.

Outer Joins (Junções Externas) Junções externas podem ser utilizadas quando queremos manter todas as tuplas de R, S ou de ambas no resultado do Join, independentemente de existirem tuplas correspondentes na outra relação. Por exemplo, considere a consulta: Obter a lista de nomes de todos os empregados e o nome dos departamentos que gerenciam. Se gerenciarem algum departamento. Se não gerenciarem nenhum departamento, indicar com um valor null.

Outer Joins (Junções Externas) Para a consulta, podemos utilizar a junção externa à esquerda (Left Outer Join), indicada por ᆖ : TEMP (EMPREGADO ᆖ NSS=GERNSS DEPARTAMENTO) RESULTADO π PNOME, MNOME, SNOME, DNOME (TEMP) RESULTADO PNOME MNOME SNOME DNOME John B Smith Null Franklin T Wong Pesquisa Alícia J Zelaya Null Jennifer S Walla Administração Ramesh K Narayan Null Joy A English Null Ahmad V Jabbar Null James E Borg Gerencial

Outer Joins (Junções Externas) Um operador similar é a Junção Externa à Direita (Right Outer Join), indicada por ᆖ, a qual mantêm as tuplas da segunda relação no resultado. Um teriro operador, Junção Externa Total, (Full Outer Join), indicada por ᆖ ᆖ, mantém todas as tuplas em ambas as relações, preenchendo quando nessário as tuplas não casadas. Esses três operadores fazem parte do padrão SQL-2.

Questões Estude os exemplos de consulta em Álgebra Relacional do item 7.2 (pág. 60) da apostila de referência. Responda as questões de 1 à 4 do item 7.3 (pág. 62) existentes na apostila.