• Nenhum resultado encontrado

Álgebra Relacional

N/A
N/A
Protected

Academic year: 2022

Share "Álgebra Relacional"

Copied!
46
0
0

Texto

(1)

Banco de Dados

Álgebra Relacional

João Eduardo Ferreira

Osvaldo Kotaro Takai

(2)

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

(3)

MDR Companhia

cecece DNce DN DN

DNÚÚÚÚMEROMEROMEROMERO DLOCALIZADLOCALIZADLOCALIZADLOCALIZAÇÇÇÃOÇÃOÃOÃO

LOCAIS_DEPTO LOCAIS_DEPTO LOCAIS_DEPTO LOCAIS_DEPTO

ce ce ce

ce ****

ce ce ce ENSSce ENSS ENSS

ENSS NOMEDEPENDENTENOMEDEPENDENTENOMEDEPENDENTENOMEDEPENDENTE SEXOSEXOSEXOSEXO DATANASCDATANASCDATANASCDATANASC RELARELARELARELAÇÇÇÃOÇÃOÃOÃO

DEPENDENTE DEPENDENTE DEPENDENTE DEPENDENTE

PNOME PNOME PNOME

PNOME MNOMEMNOMEMNOMEMNOME SNOMESNOMESNOME NSSSNOME NSSNSSNSS DATANASCDATANASCDATANASCDATANASC ENDERECOENDERECOENDERECOENDERECO SEXOSEXOSEXO SALARIOSEXO SALARIOSALARIOSALARIO

EMPREGADO EMPREGADO EMPREGADO EMPREGADO

PNOME PNOMEPNOME

PNOME PNUMEROPNUMEROPNUMERO PLOCALIZACAOPNUMERO PLOCALIZACAOPLOCALIZACAOPLOCALIZACAO

PROJETO PROJETO PROJETO PROJETO

DNOME DNOMEDNOME

DNOME DNUMERODNUMERODNUMERODNUMERO

DEPARTAMENTO DEPARTAMENTO DEPARTAMENTO DEPARTAMENTO

GERNNS GERNNSGERNNS

GERNNS GERDATINICGERDATINICGERDATINICGERDATINIC

GERENCIA GERENCIA GERENCIA GERENCIA CONTROLA CONTROLA CONTROLA CONTROLA

ce ce ce ce DNUM DNUM DNUM DNUM

SUPERVISIONA SUPERVISIONA SUPERVISIONA

SUPERVISIONA TRABALHA TRABALHA TRABALHA TRABALHA----PARA PARA PARA PARA

NSSSUPER NSSSUPERNSSSUPER

NSSSUPER DNUMcececece DNUMDNUMDNUMcececece

cecece ce

cece cece ENSSENSS

ENSSENSS PNOPNOPNOPNO HORASHORASHORASHORAS

TRABALHA

TRABALHA

TRABALHA

TRABALHA----EM EM EM EM

(4)

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)

(5)

Operador SELECT - σ

Para especificar as condições, podemos utilizar:

Valor Constante

Nome de Atributo

Os operadores relacionais: {=, <, ≤, ≥, ≠}

Os operadores lógicos: {AND, OR, NOT}

(6)

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

PNOME MNOMEMNOME SNOMEMNOMEMNOME SNOMESNOMESNOME NSSNSSNSSNSS DATANASCDATANASCDATANASCDATANASC ENDEREENDEREENDEREENDEREÇÇÇÇOOOO SEXOSEXOSEXOSEXO SALARIOSALARIOSALARIO NSSSUPERSALARIO NSSSUPERNSSSUPERNSSSUPER DNUMDNUMDNUMDNUM JohnJohn

JohnJohn BBBB SmithSmithSmithSmith 123456789123456789 09123456789123456789 090909----JANJANJANJAN----55555555 R. A, 1R. A, 1R. A, 1R. A, 1 MMMM 3000300030003000 333445555333445555333445555333445555 5555 Franklin

Franklin Franklin

Franklin TTTT WongWongWongWong 333445555333445555 08333445555333445555 080808----DEZDEZDEZDEZ----45454545 R. B, 2R. B, 2R. B, 2R. B, 2 MMMM 4000400040004000 888665555888665555888665555888665555 5555 Al

Al Al

Alííííciaciaciacia JJJJ ZelayaZelayaZelayaZelaya 999887777999887777 19999887777999887777 191919----JULJULJUL----58JUL 585858 Av. C, 3Av. C, 3Av. C, 3Av. C, 3 FFFF 2500250025002500 987654321987654321987654321987654321 4444 Jennifer

Jennifer Jennifer

Jennifer SSSS WallaceWallaceWallaceWallace 987654321987654321987654321 20987654321 2020----JUN20 JUNJUNJUN----313131 Trav. D, 431 Trav. D, 4Trav. D, 4Trav. D, 4 FFFF 4300430043004300 888665555888665555888665555888665555 4444 Ramesh

Ramesh Ramesh

Ramesh KKKK NarayanNarayanNarayanNarayan 666884444666884444666884444 15666884444 1515----SET15 SETSETSET----525252 R. E, 552 R. E, 5R. E, 5R. E, 5 MMMM 3800380038003800 333445555333445555333445555333445555 5555 Joyce

Joyce Joyce

Joyce AAAA EnglishEnglishEnglishEnglish 453453453453453453 31453453453453453453 313131----JULJULJUL----62JUL 626262 R. F, 6R. F, 6R. F, 6R. F, 6 FFFF 2500250025002500 333445555333445555333445555333445555 5555 Ahmad

Ahmad Ahmad

Ahmad VVVV JabbarJabbarJabbarJabbar 987987987987987987 29987987987987987987 292929----MARMARMARMAR----59595959 Av G, 7Av G, 7Av G, 7Av G, 7 MMMM 2500250025002500 987654321987654321987654321987654321 4444 James

James James

James EEEE BorgBorgBorgBorg 888665555888665555 10888665555888665555 1010----NOV10NOVNOV----27NOV 2727 Av H, 827 Av H, 8Av H, 8Av H, 8 MMMM 5500550055005500 nullnullnullnull 3333

(7)

Operador SELECT - σ

PNOME PNOME PNOME

PNOME MNOMEMNOME SNOMEMNOMEMNOME SNOMESNOMESNOME NSSNSSNSSNSS DATANASCDATANASC ENDEREDATANASCDATANASCENDEREENDEREENDEREÇÇÇÇOOOO SEXOSEXOSEXO SALARIOSEXO SALARIOSALARIOSALARIO NSSSUPERNSSSUPERNSSSUPERNSSSUPER NDEPNDEPNDEPNDEP Franklin

Franklin Franklin

Franklin TTTT WongWongWongWong 333445555333445555333445555333445555 080808----DEZ08 DEZDEZDEZ----454545 R. B, 245 R. B, 2R. B, 2R. B, 2 MMMM 4000400040004000 888665555888665555888665555888665555 5555 Jennifer

Jennifer Jennifer

Jennifer SSSS WallaceWallace 987654321WallaceWallace 987654321987654321987654321 20202020----JUNJUNJUN----31JUN 313131 Trav. D, 4Trav. D, 4Trav. D, 4Trav. D, 4 FFFF 4300430043004300 888665555888665555888665555888665555 4444 Ramesh

Ramesh Ramesh

Ramesh KKKK NarayanNarayan 666884444NarayanNarayan 666884444666884444666884444 15151515----SETSETSET----52SET 525252 R. E, 5R. E, 5R. E, 5R. E, 5 MMMM 3800380038003800 333445555333445555333445555333445555 5555

Consulta:

σσσσ

(NDEP = 4 AND SALÁRIO > 2500) OR (NDEP = 5 AND SALÁRIO > 3000)

(EMPREGADO)

Resultado:

(8)

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)

(9)

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

PNOME MNOMEMNOME SNOMEMNOMEMNOME SNOMESNOMESNOME NSSNSSNSSNSS DATANASCDATANASCDATANASCDATANASC ENDEREENDEREENDEREÇENDEREÇÇOÇOO SEXOO SEXOSEXOSEXO SALARIOSALARIOSALARIO NSSSUPERSALARIO NSSSUPERNSSSUPER NDEPNSSSUPER NDEPNDEPNDEP JohnJohn

JohnJohn BBBB SmithSmithSmithSmith 123456789123456789 09123456789123456789 0909----JAN09JANJAN----55JAN 555555 R. A, 1R. A, 1R. A, 1R. A, 1 MMMM 3000300030003000 333445555333445555333445555333445555 5555 Franklin

Franklin Franklin

Franklin TTTT WongWongWongWong 333445555333445555 08333445555333445555 0808----DEZ08DEZDEZ----45DEZ 454545 R. B, 2R. B, 2R. B, 2R. B, 2 MMMM 4000400040004000 888665555888665555888665555888665555 5555 Al

Al Al

Alííííciaciaciacia JJJJ ZelayaZelayaZelayaZelaya 999887777999887777 19999887777999887777 1919----JUL19 JULJULJUL----58585858 Av. C, 3Av. C, 3Av. C, 3Av. C, 3 FFFF 2500250025002500 987654321987654321987654321987654321 4444 Jennifer

Jennifer Jennifer

Jennifer SSSS WallaceWallaceWallaceWallace 987654321987654321 20987654321987654321 202020----JUNJUNJUNJUN----31313131 Trav. D, 4Trav. D, 4Trav. D, 4Trav. D, 4 FFFF 4300430043004300 888665555888665555888665555888665555 4444 Ramesh

Ramesh Ramesh

Ramesh KKKK NarayanNarayanNarayanNarayan 666884444666884444 15666884444666884444 151515----SETSETSETSET----52525252 R. E, 5R. E, 5R. E, 5R. E, 5 MMMM 3800380038003800 333445555333445555333445555333445555 5555 Joyce

Joyce Joyce

Joyce AAAA EnglishEnglishEnglishEnglish 453453453453453453 31453453453453453453 3131----JUL31 JULJULJUL----62626262 R. F, 6R. F, 6R. F, 6R. F, 6 FFFF 2500250025002500 333445555333445555333445555333445555 5555 Ahmad

Ahmad Ahmad

Ahmad VVVV JabbarJabbarJabbarJabbar 987987987987987987 29987987987987987987 292929----MARMARMAR----59MAR 5959 Av G, 759 Av G, 7Av G, 7Av G, 7 MMMM 2500250025002500 987654321987654321987654321987654321 4444 James

James James

James EEEE BorgBorgBorgBorg 888665555888665555 10888665555888665555 101010----NOVNOVNOVNOV----27272727 Av H, 8Av H, 8Av H, 8Av H, 8 MMMM 5500550055005500 nullnullnullnull 3333

(10)

Operador PROJECT - π

Consulta:

ππππ SNOME, PNOME, SALÁRIO (EMPREGADO)

Resultado:

PNOME PNOMEPNOME

PNOME SNOMESNOMESNOMESNOME SALARIOSALARIOSALARIOSALARIO JohnJohnJohn

John SmithSmithSmithSmith 3000300030003000 Franklin

FranklinFranklin

Franklin WongWongWongWong 4000400040004000 Al

AlAl

Alííííciaciaciacia ZelayaZelayaZelayaZelaya 2500250025002500 Jennifer

JenniferJennifer

Jennifer WallaceWallaceWallaceWallace 4300430043004300 Ramesh

RameshRamesh

Ramesh NarayanNarayanNarayanNarayan 3800380038003800 Joyce

JoyceJoyce

Joyce EnglishEnglishEnglishEnglish 2500250025002500 Ahmad

AhmadAhmad

Ahmad JabbarJabbarJabbarJabbar 2500250025002500 James

JamesJames

James BorgBorgBorgBorg 5500550055005500

(11)

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

SEXO SALARIOSALARIOSALARIOSALARIO MM

MM 3000300030003000 M

M M

M 4000400040004000 FFFF 2500250025002500 FFFF 4300430043004300 M

M M

M 3800380038003800 M

M M

M 2500250025002500 M

M M

M 5500550055005500

(12)

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)

(13)

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 PNOMEPNOME

PNOME MNOMEMNOMEMNOME SNOMEMNOME SNOMESNOMESNOME NSSNSSNSSNSS DATANASCDATANASC ENDEREDATANASCDATANASCENDEREENDEREÇENDEREÇÇOÇOO SEXOO SEXOSEXOSEXO SALARIOSALARIOSALARIO NSSSUPERSALARIO NSSSUPERNSSSUPER NDEPNSSSUPER NDEPNDEPNDEP JohnJohnJohn

John BBBB SmithSmithSmithSmith 123456789123456789123456789123456789 09090909----JANJANJANJAN----555555 R. A, 155 R. A, 1R. A, 1R. A, 1 MMMM 3000300030003000 333445555333445555333445555333445555 5555 Franklin

FranklinFranklin

Franklin TTTT WongWongWongWong 333445555333445555333445555333445555 080808----DEZ08 DEZDEZDEZ----454545 R. B, 245 R. B, 2R. B, 2R. B, 2 MMMM 4000400040004000 888665555888665555888665555888665555 5555 Al

AlAl

Alííííciaciaciacia JJJJ ZelayaZelayaZelayaZelaya 999887777999887777999887777999887777 19191919----JULJULJULJUL----585858 Av. C, 358 Av. C, 3Av. C, 3Av. C, 3 FFFF 2500250025002500 987654321987654321987654321987654321 4444 Jennifer

JenniferJennifer

Jennifer SSSS WallaceWallaceWallaceWallace 987654321987654321987654321987654321 20202020----JUNJUNJUN----31JUN 313131 Trav. D, 4Trav. D, 4Trav. D, 4Trav. D, 4 FFFF 4300430043004300 888665555888665555888665555888665555 4444 Ramesh

RameshRamesh

Ramesh KKKK NarayanNarayanNarayanNarayan 666884444666884444666884444666884444 15151515----SETSETSET----52SET 525252 R. E, 5R. E, 5R. E, 5R. E, 5 MMMM 3800380038003800 333445555333445555333445555333445555 5555 Joyce

JoyceJoyce

Joyce AAAA EnglishEnglishEnglishEnglish 453453453453453453453453453453453453 31313131----JULJULJULJUL----626262 R. F, 662 R. F, 6R. F, 6R. F, 6 FFFF 2500250025002500 333445555333445555333445555333445555 5555 Ahmad

AhmadAhmad

Ahmad VVVV JabbarJabbarJabbarJabbar 987987987987987987987987987987987987 292929----MAR29 MARMARMAR----59595959 Av G, 7Av G, 7Av G, 7Av G, 7 MMMM 2500250025002500 987654321987654321987654321987654321 4444 James

JamesJames

James EEEE BorgBorgBorgBorg 888665555888665555888665555888665555 10101010----NOVNOVNOVNOV----27272727 Av H, 8Av H, 8Av H, 8Av H, 8 MMMM 5500550055005500 nullnullnullnull 3333

(14)

Seqüência de Operações

Consulta:

π PNOME, SNOME, SALÁRIO ( σ NDEP=5 (EMPREGADO))

Resultado:

PNOME PNOMEPNOME PNOME JohnJohnJohn JohnFranklin FranklinFranklin Franklin Ramesh RameshRamesh Ramesh Joyce JoyceJoyce Joyce

SNOME SNOME SNOME SNOME Smith Smith Smith Smith Wong Wong Wong WongNarayan Narayan Narayan Narayan English English English English

SALARIO SALARIOSALARIO SALARIO

30003000 30003000 4000 4000 4000 40003800 3800 3800 38002500 2500 25002500

(15)

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)

(16)

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 RESULTRESULT RESULT

NOMENOME NOMENOME John John John JohnFranklin Franklin Franklin Franklin Ramesh Ramesh Ramesh Ramesh Joyce Joyce Joyce Joyce

SOBRENOME SOBRENOMESOBRENOME SOBRENOME Smith

SmithSmith Smith Wong WongWong WongNarayan NarayanNarayan Narayan English EnglishEnglish English

SALSAL SALSALÁÁÁÁRIORIORIORIO

3000 30003000 30004000 40004000 40003800 38003800 38002500 25002500 2500

(17)

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

(18)

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)

(19)

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)

UNIÃO UNIÃO UNIÃO UNIÃO INTERSEC INTERSEC INTERSEC

INTERSECÇ Ç ÇÃO Ç ÃO ÃO ÃO DIFEREN

DIFEREN DIFEREN DIFERENÇ Ç Ç ÇAAAA

PRECISAM QUE R R R R E SSSS SEJAM

COMPATÍVEIS NA UNIÃO

(20)

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.

(21)

Operações da Teoria dos Conjuntos

Para facilitar, considere o seguinte exemplo:

333445555 Wong

123456789 Smith

NSS SNOME

Elizabeth 123456789

Alice 123456789

Abner 987654321

Alice 333445555

NOMEDEPENDENTE NSSEMP

Elizabeth 123456789

333445555 Wong

Alice 123456789

333445555 Wong

Abner 987654321

333445555 Wong

Alice 333445555

333445555 Wong

Elizabeth 123456789

123456789 Smith

Alice 123456789

123456789 Smith

Abner 987654321

123456789 Smith

Alice 333445555

123456789 Smith

NOMEDEPENDENTE NSSEMP

NSS SNOME

X

(22)

Operações da Teoria dos Conjuntos

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

Recuperar, para cada empregado do sexo

feminino, uma lista de nomes de seus dependentes

(23)

Operador Join (⊳⊲)

O join join join 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.

(24)

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)

(25)

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)

(26)

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)

DEP_ATUAL ← EMP_NOMES ⊳⊲

NSS=ENSS

DEPENDENTE

(27)

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 54 1

NSSGER 333445555 987654321 888665555

...

...

PNOME Franklin Jennifer James

MNOME ST E

SNOME WongWallace Borg

333445555NSS 987654321 888665555

...

...

(28)

Operação NATURAL JOIN *

Devido a tal duplicidade ser desnecessária, uma nova operação foi criada: NATURAL JOIN.

O NATURAL JOIN (*), é um EQUIJOIN seguido da remoção de atributos desnecessá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 aparecer.

(29)

Operação NATURAL JOIN *

Pode-se continuar a especificar o sinal de igualdade na condição, apesar de ser

desnecessá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

(30)

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 12

(31)

Operador DIVISION ÷

Obter a relação com o NSS e PNO dos empregados

NSS_PNRO ← π

PNRO, NSSEMP

(TRABALHA_EM)

20 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

(32)

Operador DIVISION ÷

Finalmente, aplicar a divisão:

NSS_DESEJADOS(NSS) ← NSS_PNRO ÷ SMITH_PNO

SMITH_PNO PNO 12

20 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

NSS_DESEJADO NSS

123456789

453453453

(33)

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 )

(34)

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 )

(35)

Funções de Agregação

Funções agregadas recebem 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 - ℑ

(36)

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

COUNT NSS, AVERAGE SALÁRIO

(EMPREGADO)

Atributo de Agrupamento

MÉDIA 3325 3100 5500 R DNO NRO_EMPS

5 4

4 3

1 1

(37)

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

COUNTCOUNTCOUNTCOUNT NSS, AVERAGEAVERAGEAVERAGE SALÁRIOAVERAGE

(EMPREGADO)

R COUNT_NSS AVERAGE_SALÁRIO

8 3512.5

(38)

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.

(39)

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

(40)

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)

(41)

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

(42)

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 vice-versa) – aparecem no resultado.

(43)

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.

(44)

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)

Gerencial Borg

E James

Null Jabbar

V Ahmad

Null English

A Joyce

Null Narayan

K Ramesh

Administração Wallace

S Jennifer

Null Zelaya

J Alícia

Pesquisa Wong

T Franklin

Null Smith

B John

DNOME DNOME DNOME DNOME SNOME

SNOMESNOME SNOME MNOME

MNOMEMNOME MNOME PNOME

PNOMEPNOME PNOME RESULTADO

RESULTADO RESULTADO RESULTADO

(45)

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 terceiro operador, Junção Externa Total, (Full Outer Join), indicada por ⊳⊳⊳⊳⊲⊲⊲⊲ ᆖ , mantém todas as tuplas em ambas as relações,

preenchendo quando necessário as tuplas não casadas.

Esses três operadores fazem parte do padrão

SQL-2.

(46)

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.

Referências

Documentos relacionados

Do mesmo modo, foi possível conhecer os resultados de outros produtos, tais como a tabuada do 9, por meio da soma resultante da multiplicação por 4 e por 5; por 7 e por 2, ou

Assim, devido à forte volatilidade da bolsa no período, adotamos a estratégia de resgatar nossa posição de Renda Variável do Plano CBSPREV Namisa para a

De especial interesse e motivo de abordagem neste curso, são as disfunções cerebrais focais, mais especificamente o Acidente Vascular Cerebral Isquêmico (AVCI), Ataque

No pico da produção foram utilizados quatro frutos por unidade experimental para caracterização da massa média de frutos, espessura da casca, diâmetros

Conforme determinação da SFF/ANEEL, com o intuito de buscar a harmonização com as normas internacionais de contabilidade, destacamos as transferências do Ativo

Para se investigar a contaminação do aquífero da bacia do Rio Lucaia, Salvador, Bahia, por compostos derivados de petróleo devido a vazamentos de tanques combustíveis, foi

6 Tecla Enter - prima para selecionar uma opção ou guardar definições 7 Tecla Exit - prima para sair de uma caixa de diálogo, voltar ao nível de menu.. anterior e retirar o cursor

A infor- mação contida neste documento não tem como igualmente como finalidade sugerir e ou orientar os seus destinatários quanto aos investimento e