Você está na página 1de 25

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Bases de Dados
Parte IV
lgebra e Clculo Relacional

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

lgebra Relacional
Conjunto bsico de operaes que nos permitem manipular relaes no modelo
relacional.
As operaes da lgebra relacional produzem novas relaes, ou seja, a aplicao
de uma operao da lgebra relacional tem sempre como resultado uma nova
relao.
As relaes obtidas por utilizao das operaes da lgebra relacional podem ser
igualmente utilizadas em outras operaes da lgebra.
Uma sequncia de operaes da lgebra relacional forma uma expresso cujo
resultado uma relao que representa o resultado de uma consulta base de
dados.
A lgebra relacional utilizada principalmente como formalismo para implementar
e optimizar consultas no modelo relacional.
A linguagem SQL incorpora alguns dos conceitos da lgebra relacional.

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operaes da lgebra Relacional


Operaes especficas de BD
Seleco
Projeco
Renomeao
Juno
Agregao

Operaes sobre conjuntos


Reunio
Interseco
Diferena
Produto cartesiano
Diviso

U
I

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Seleco
Permite seleccionar um subconjunto de tuplos de uma relao a partir de uma
condio sobre os atributos.
A operao de seleco representada pela expresso

COND(R)
em que o operador de seleco e COND a condio sobre os atributos da
relao R.
A condio COND pode ser da forma
Ai Aj ou Ai VAL
em que Ai e Aj so atributos, um operador de comparao {=, <, >, , , } e
VAL dom(Ai).
A condio COND tambm pode ser composta por vrias clusulas ligadas pelos
operadores lgicos AND, OR ou NOT.

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Seleco
EMPREGADO NomeP NomeF

NumBI

...

Salrio NumDep

Joo

Santos 798764544

...

2500

Ins

Pereira 345673451

...

2000

Rui

Silva

487563546

...

1500

Ana

Feio

342342324

...

3000

Obtenha os empregados que trabalham no departamento 4 e cujo salrio superior


a 2000 euros.

NumDep = 4 AND Salrio > 2000(EMPREGADO)


NomeP NomeF
Joo
Ana

NumBI

Santos 798764544
Feio

342342324

...

Salrio NumDep

...

2500

...

3000

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Seleco
A relao resultante da operao de seleco

COND(R)
tem os mesmos atributos da relao R.
um operador comutativo:

COND1(COND2(R)) = COND2(COND1(R))
Uma sequncia de operaes de seleco pode ser substituda por uma nica
operao de seleco com a conjuno de todas as condies:

COND1(COND2(COND3(R))) = COND1 AND COND2 AND COND3(R)

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Projeco
Permite obter uma nova relao com apenas alguns atributos da relao original.
A operao de projeco representada pela expresso

ATRIBS(R)
em que o operador de projeco e ATRIBS a lista de atributos a seleccionar
da relao R.
A relao resultante da operao de projeco tem apenas os atributos definidos
em ATRIBS na mesma ordem em que estes aparecem indicados na lista.

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Projeco
EMPREGADO NomeP NomeF

NumBI

...

Salrio NumDep

Joo

Santos 798764544

...

2500

Ins

Pereira 345673451

...

2000

Rui

Silva

487563546

...

1500

Ana

Feio

342342324

...

3000

Obtenha o nmero do BI, primeiro e ltimo nome de todos os empregados.

NumBI, NomeP, NomeF(EMPREGADO)


NumBI

NomeP NomeF

798764544

Santos

345673451

Ins

Pereira

487563546

Rui

Silva

342342324

Ricardo Rocha DCC-FCUP

Joo

Ana

Feio

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Projeco
Para que o resultado seja uma relao vlida, a operao de projeco remove
tuplos repetidos (pode ser necessrio quando a lista no inclui a chave de R).
Uma sequncia de operaes de projeco pode ser substituda por uma nica
operao de projeco:

ATRIBS1(ATRIBS2(R)) = ATRIBS1(R)

se ATRIBS1

ATRIBS2 pois caso contrrio uma expresso invlida.

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Projeco
EMPREGADO NomeP NomeF

NumBI

...

Salrio NumDep

Joo

Santos 798764544

...

2500

Ins

Pereira 345673451

...

2000

Rui

Silva

487563546

...

1500

Ana

Feio

342342324

...

3000

Obtenha o nmero dos departamentos onde trabalha pelo menos um empregado.

NumDep(EMPREGADO)
NumDep
4
1
2

Ricardo Rocha DCC-FCUP

10

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Resultados Intermdios
EMPREGADO NomeP NomeF

NumBI

...

Salrio NumDep

Joo

Santos 798764544

...

2500

Ins

Pereira 345673451

...

2000

Rui

Silva

487563546

...

1500

Ana

Feio

342342324

...

3000

Obtenha o nmero do BI, primeiro e ltimo nome dos empregados que trabalham
no departamento 4 e cujo salrio superior a 2000 euros.

NumBI, NomeP, NomeF(NumDep = 4 AND Salrio > 2000(EMPREGADO))


NumBI

NomeP NomeF

798764544

Joo

Santos

342342324

Ana

Feio

11

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Resultados Intermdios
A consulta anterior pode ser escrita criando resultados intermdios sobre os quais
vamos aplicando as operaes restantes.
DEP4_SAL2000 NumDep = 4 AND Salrio > 2000(EMPREGADO)
RESULT NumBI, NomeP, NomeF(DEP4_SAL2000)
DEP4_SAL2000 NomeP NomeF
Joo
Ana

RESULT

NumBI

Santos 798764544
Feio

342342324

NumBI

...
...

2500

...

3000

NomeP NomeF

798764544

Joo

Santos

342342324

Ricardo Rocha DCC-FCUP

Salrio NumDep

Ana

Feio

12

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Renomeao
Permite obter uma nova relao com o nome da relao e/ou o nome dos atributos
renomeados.
A operao de renomeao representada pelas expresses

S(R)

ou (B1, B2, ..., Bn)(R) ou S(B1, B2, ..., Bn)(R)


em que o operador de renomeao, S o novo nome da relao e B1, B2, ..., Bn
so os novos nomes dos atributos.
A consulta anterior pode ser escrita usando o operador de renomeao.

DEP4_SAL2000(NumDep = 4 AND Salrio > 2000(EMPREGADO))


RESULT(BI, Nome, Apelido)(NumBI, NomeP, NomeF(DEP4_SAL2000))
RESULT

BI

Nome

Apelido

798764544

Joo

Santos

342342324

Ana

Feio

13

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operaes de Reunio, Interseco e Diferena


As operaes de reunio, interseco e diferena so operaes binrias sobre
relaes que correspondem s operaes matemticas bsicas sobre conjuntos.
As operaes de reunio, interseco e diferena so representadas pelas
expresses
RUS e RIS e RS
em que U, I e so os operadores de reunio, interseco e diferena e R e S so
duas relaes compatveis para a reunio.
Duas relaes R(A1, A2, , An) e S(B1, B2, , Bn) dizem-se compatveis para a
reunio se tiverem o mesmo grau n e se o dom(Ai) = dom(Bi) para 1 i n.
Por conveno, a relao resultante das operaes R U S, R I S e R S tem os
nomes dos atributos da relao R.

Ricardo Rocha DCC-FCUP

14

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operaes de Reunio, Interseco e Diferena


O resultado da operao R U S a relao que inclui todos os tuplos que esto em
R, em S ou em ambos. Tuplos repetidos so removidos.
O resultado da operao R I S a relao que inclui todos os tuplos que esto em
R e em S.
O resultado da operao R S a relao que inclui todos os tuplos que esto em
R mas no em S.
U e I so operadores comutativos e associativos:
RUS=SUR
RIS=SIR
R U (S U T) = (R U S) U T
R I (S I T) = (S I R) I T
O operador no comutativo nem associativo, pois em geral:
RSSR
15

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Reunio
EMPREGADO NomeP NomeF

...

Salrio

SuperBI

NumDep

Joo

Santos 798764544

NumBI

...

2500

487563546

Ins

Pereira 345673451

...

2000

487563546

Rui

Silva

487563546

...

1500

123456789

Ana

Feio

342342324

...

3000

798764544

Obtenha o nmero do BI dos empregados que trabalham no departamento 4 ou que


supervisionam um empregado que trabalha no departamento 4.
EMP_DEP4 NumDep = 4(EMPREGADO)
RESULT1 NumBI(EMP_DEP4)
RESULT2 SuperBI(EMP_DEP4)
RESULT RESULT1 U RESULT2

RESULT

NumBI
798764544
342342324
487563546

Ricardo Rocha DCC-FCUP

16

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Interseco
EMPREGADO NomeP NomeF

...

Salrio

SuperBI

NumDep

Joo

Santos 798764544

NumBI

...

2500

487563546

Ins

Pereira 345673451

...

2000

487563546

Rui

Silva

487563546

...

1500

123456789

Ana

Feio

342342324

...

3000

798764544

Obtenha o nmero do BI dos empregados que trabalham no departamento 4 e que


supervisionam um empregado que trabalha no departamento 4.
EMP_DEP4 NumDep = 4(EMPREGADO)
RESULT1 NumBI(EMP_DEP4)
RESULT2 SuperBI(EMP_DEP4)
RESULT RESULT1 I RESULT2

RESULT

NumBI
798764544

17

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Diferena
EMPREGADO NomeP NomeF

...

Salrio

SuperBI

NumDep

Joo

Santos 798764544

NumBI

...

2500

487563546

Ins

Pereira 345673451

...

2000

487563546

Rui

Silva

487563546

...

1500

123456789

Ana

Feio

342342324

...

3000

798764544

Obtenha o nmero do BI dos empregados que trabalham no departamento 4 e que


no supervisionam um empregado que trabalha no departamento 4.
EMP_DEP4 NumDep = 4(EMPREGADO)
RESULT1 NumBI(EMP_DEP4)
RESULT2 SuperBI(EMP_DEP4)
RESULT RESULT1 RESULT2

RESULT

NumBI
342342324

Ricardo Rocha DCC-FCUP

18

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Produto Cartesiano
Permite combinar numa nova relao todos os tuplos de duas relaes.
O produto cartesiano representado pela expresso
RS
em que o operador de produto cartesiano e R e S so duas relaes quaisquer.
O produto cartesiano entre R(A1, A2, , An) e S(B1, B2, , Bm) tem como
resultado a relao T(A1, A2, , An, B1, B2, , Bm) onde existe um tuplo para
cada combinao possvel de tuplos de R com tuplos de S.
Se R tiver NR tuplos e S tiver NS tuplos, ento R S tem NR * NS tuplos.

19

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Produto Cartesiano
R

A1

A2

B1

B2

B3

a1_val1 a2_val1

b1_val1 b2_val1 b3_val1

a1_val2 a2_val2

b1_val2 b2_val2 b3_val2

a1_val3 a2_val3

RS

A1

A2

B1

B2

B3

a1_val1 a2_val1 b1_val1 b2_val1 b3_val1


a1_val1 a2_val1 b1_val2 b2_val2 b3_val2
a1_val2 a2_val2 b1_val1 b2_val1 b3_val1
a1_val2 a2_val2 b1_val2 b2_val2 b3_val2
a1_val3 a2_val3 b1_val1 b2_val1 b3_val1
a1_val3 a2_val3 b1_val2 b2_val2 b3_val2

Ricardo Rocha DCC-FCUP

20

10

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Produto Cartesiano
Obtenha o nome dos dependentes dos empregados do sexo feminino.
EMP_FEM Sexo = F(EMPREGADO)
FEM_DEPS NumBI = EmpBI(EMP_FEM DEPENDENTES)
RESULT Nome(FEM_DEPS)
Alternativa de resoluo mais eficiente:
EMP_FEM NumBI(Sexo = F(EMPREGADO))
DEPS_NOME EmpBI, Nome(DEPENDENTES)
FEM_DEPS NumBI = EmpBI(EMP_FEM DEPS_NOME)
RESULT Nome(FEM_DEPS)

21

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Juno
Permite combinar tuplos de duas relaes que obedecem a uma condio de
juno.
A operao de juno (ou juno-) representada pela expresso
R COND S

em que o operador de juno, COND a condio de juno e R e S so duas


relaes quaisquer.
A condio COND da forma
Ai Bj
em que um operador de comparao {=, <, >, , , }, Ai um atributo de R e
Bj um atributo de S.
A condio COND tambm pode ser composta por vrias clusulas ligadas pelo
operador lgico AND.

Ricardo Rocha DCC-FCUP

22

11

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Juno
A operao de juno entre R(A1, A2, , An) e S(B1, B2, , Bm) tem como
resultado a relao T(A1, A2, , An, B1, B2, , Bm) onde existe um tuplo para
cada combinao possvel de tuplos de R com tuplos de S que satisfaz a condio
de juno.
A operao de juno equivale s operaes de produto cartesiano e de seleco:
R COND S = COND(R S)
A operao de juno muito utilizada em BD pois permite lidar com os
relacionamentos entre relaes.

23

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Juno
Obtenha o nome dos dependentes dos empregados do sexo feminino.
EMP_FEM Sexo = F(EMPREGADO)

RESULT Nome(EMP_FEM NumBI = EmpBI DEPENDENTES)


Obtenha o nome e o endereo de todos os empregados que trabalham no
departamento de Produo.
EMP_DEP EMPREGADO NumDep = Num DEPARTAMENTO
RESULT NomeP, NomeF, Endereo(Nome = Produo(EMP_DEP))
Para todos os projectos localizados no Porto, obtenha o nome do projecto e o ltimo
nome do respectivo gerente.
PROJ_PORTO PLocal = Porto((PNome, PNum, PLocal, PDep)(PROJECTO))
PORTO_DEP PROJ_PORTO PDep = Num DEPARTAMENTO
RESULT
EMPREGADO)
Ricardo Rocha DCC-FCUP

PNome,

NomeF(PORTO_DEP

GerenteBI

NumBI

24

12

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Equi-Juno
EquiOperao de juno em que se utiliza apenas o operador de comparao = na
condio de juno.
A relao resultante de uma operao de equi-juno tem pelo menos um par de
atributos em duplicado (com os mesmos valores em todos os tuplos).
Os atributos em duplicado so os atributos envolvidos na condio de juno. Por
exemplo, na relao DEP_GER, GerenteBI e NumBI tm os mesmos valores em
todos os tuplos:
DEP_GER DEPARTAMENTO GerenteBI = NumBI EMPREGADO
DEP_GER

Nome

Num GerenteBI GerenteData NomeP NomeF

NumBI

...

Vendas

798764544

01-01-2000

Joo

Santos 798764544

...

Produo

345673451

15-10-2003

Ins

Pereira 345673451

...

Ps-Venda

487563546

01-06-1995

Rui

Silva

487563546

...

25

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Juno Natural


Operao de equi-juno em que para cada par de atributos em duplicado um dos
atributos removido.
A operao de juno natural (ou juno-*) representada pela expresso
R*S
em que * o operador de juno natural e R e S so duas relaes com pelo menos
um par de atributos com o mesmo nome (atributos de juno).
Os atributos de juno tm de ter o mesmo nome, pelo que pode ser necessrio
fazer renomeao de atributos.
(Nome, Num, NumBI, GerenteData)(DEPARTAMENTO) * EMPREGADO
Nome

Num

NumBI

Vendas

798764544

01-01-2000

Joo

Santos

...

Produo

345673451

15-10-2003

Ins

Pereira

...

Ps-Venda

487563546

01-06-1995

Rui

Silva

...

Ricardo Rocha DCC-FCUP

GerenteData NomeP NomeF

...

26

13

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operaes de Juno Interna e de Juno Externa


Nas operaes de juno anteriores, todos os tuplos que no satisfazem a condio
de juno so removidos da relao resultante. As operaes deste tipo so
designadas por operaes de juno interna.
Um outro conjunto de operaes permite manter parte ou a totalidade dos tuplos
das relaes a combinar mesmo que estes no satisfaam a condio de juno. As
operaes deste tipo so designadas por operaes de juno externa.
Existem trs tipos de operaes de juno externa:
Juno externa esquerda
Juno externa direita
Juno externa completa

27

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operaes de Juno Externa


Juno externa esquerda (R

COND S)

Mantm todos os tuplos da relao esquerda R, e para os tuplos que no satisfazem a


condio de juno preenche os atributos da relao direita S com valores NULL.

Juno externa direita (R

COND S)

Mantm todos os tuplos da relao direita S, e para os tuplos que no satisfazem a


condio de juno preenche os atributos da relao esquerda R com valores NULL.

Juno externa completa (R

COND S)

Mantm todos os tuplos de ambas as relaes e para os tuplos que no satisfazem a


condio de juno preenche os atributos da relao combinada com valores NULL.

Ricardo Rocha DCC-FCUP

28

14

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operaes de Juno Externa


Obtenha o nmero do BI dos empregados que no tm dependentes.
EMP_DEPS EMPREGADO

NumBI = EmpBI DEPENDENTES

RESULT NumBI(EmpBI = NULL(EMP_DEPS))


EMP_DEPS NomeP NomeF

NumBI

...

EmpBI

Nome

DataNasc

GrauParentesco

Joo

Santos 798764544 ... 798764544 Joana 23-05-1970

Esposa

Ins

Pereira 345673451 ...

NULL

NULL

NULL

NULL

Rui

Silva

487563546 ... 487563546 Maria 18-07-1975

Rui

Silva

487563546

Ana

Feio

342342324 ... 342342324 Pedro 22-11-1983

487563546 Carlos 03-09-1999

RESULT

Esposa
Filho
Marido

NumBI
345673451

29

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Diviso
Permite obter os valores de uma relao que esto combinados com todos os tuplos
de outra relao.
A operao de diviso representada pela expresso
RS
em que o operador de diviso e R e S so duas relaes em que os atributos de
S so um subconjunto dos atributos de R.
O resultado da operao R(Z) S(X) a relao T(Y), com Y = Z X, que inclui
todos os tuplos t para os quais existe um subconjunto R de R tal que Y(R) = t e
X(R) = S.
A operao de diviso pode ser expressa utilizando os operadores , e :
R(Z) S(X)

Ricardo Rocha DCC-FCUP

Y(R) Y((S Y(R)) R), com Y = Z X.

30

15

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Diviso
R

a1

b1

a1

a2

b1

a2

a3

b1

a3

a4

b1

a1

b2

a3

b2

a2

b3

a3

b3

a4

b3

a1

b4

a2

b4

b1

a3

b4

b4

RS

31

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Diviso
Obtenha o nome dos empregados que trabalham em TODOS os projectos nos quais
o Rui Silva tambm trabalha.
EMP_SILVA NomeP = Rui AND NomeF = Silva(EMPREGADO)
SILVA_PROJ
EMP_SILVA)

NumProj(TRABALHA_EM

EmpBI

NumBI

BI_PROJ EmpBI, NumProj(TRABALHA_EM)


RESULT_BI (NumBI)(BI_PROJ SILVA_PROJ)
RESULT NomeP, NomeF(RESULT_BI * EMPREGADO)

Ricardo Rocha DCC-FCUP

32

16

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Agregao
Permite agrupar tuplos e sumariar informao a partir de funes de agregao.
A operao de agregao representada pela expresso
ATRIBS FUNS(R)
em que o operador de agregao, ATRIBS a lista de atributos de R a agrupar
e FUNS a lista das funes de agregao.
A lista FUNS da forma
Ai
em que uma funo de agregao {SUM, AVERAGE, MAXIMUM,
MINIMUM, COUNT} e Ai um atributo de R.
A relao resultante da operao de agregao tem apenas os atributos definidos
em ATRIBS mais um atributo por cada item da lista FUNS, cujo nome resulta da
concatenao do nome da funo de agregao com o nome do atributo de R.

33

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Operao de Agregao
Obtenha o valor do salrio mximo, do salrio mnimo e da soma do salrio de
todos os empregados.
MAX Salrio, MIN Salrio, SUM Salrio(EMPREGADO)
Obtenha o nmero de empregados por departamento e a respectiva mdia salarial.
NumDep COUNT NumBI, AVERAGE Salrio(EMPREGADO)
NumDep COUNT_NumBI AVERAGE_Salrio
4

5500

2000

1500

Obtenha o nome dos empregados com dois ou mais dependentes.


DEPS_COUNT (NumBI, NumDeps)(EmpBI COUNT Nome(DEPENDENTE))
RESULT NomeP, NomeF(NumDeps 2(DEPS_COUNT) * EMPREGADO)
Ricardo Rocha DCC-FCUP

34

17

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Clculo Relacional
Modelo formal que se baseia na lgica de predicados e que permite manipular
relaes no modelo relacional.
O clculo relacional tem o mesmo poder expressivo da lgebra relacional. Uma
expresso do clculo relacional igualmente uma relao que representa o
resultado de uma consulta base de dados.
As expresses do clculo podem ser especificadas em termos de variveis sobre os
tuplos, clculo relacional por tuplos (ou CRT), ou em termos de variveis sobre
o domnio dos atributos, clculo relacional por domnios (ou CRD).
O clculo relacional uma linguagem no-procedimental. Nas expresses do
clculo no se especifica o modo de obter o resultado mas sim o tipo de
informao que se pretende obter. Isto difere da lgebra relacional onde
necessrio especificar a sequncia de operaes a aplicar para obter o resultado.
A linguagem SQL baseia-se em parte no clculo relacional por tuplos.

35

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Clculo Relacional por Tuplos


O CRT baseado na especificao de variveis sobre os tuplos, onde cada varivel
pode tomar como valor qualquer um dos tuplos de uma determinada relao.
A forma mais simples de uma expresso do CRT
{t | COND(t)}
em que t uma varivel que representa os tuplos de uma relao e COND(t) uma
condio sobre t. O resultado desta expresso o conjunto dos tuplos t que
satisfazem COND(t).
A forma genrica de uma expresso do CRT
{t1.A1, t2.A2, ..., tn.An | COND(t1, t2, ..., tn)}
em que t1, t2, ..., tn so variveis que representam tuplos de relaes, cada Ai um
atributo da relao na qual ti toma valores e COND(t1, t2, ..., tn) uma frmula
bem-formada do clculo.

Ricardo Rocha DCC-FCUP

36

18

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Clculo Relacional por Tuplos


Uma frmula do CRT pode ser formada por condies da forma
R(ti) ou ti.A tj.B ou ti.A VAL
em que R uma relao, ti e tj so variveis que representam tuplos de relaes, A
e B so atributos das relaes nas quais ti e tj tomam valores, um operador de
comparao {=, <, >, , , } e VAL dom(ti.A).
Uma frmula do CRT tambm pode ser composta por vrias frmulas ligadas
pelos operadores lgicos AND, OR ou NOT
F1 AND F2 ou F1 OR F2 ou NOT F1
em que F1 e F2 so frmulas.

37

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Clculo Relacional por Tuplos


Obtenha os empregados que trabalham no departamento 4.
{e | EMPREGADO(e) AND e.NumDep = 4}
Na lgebra relacional seria:

NumDep = 4(EMPREGADO)
Obtenha o nmero do BI dos empregados que trabalham no departamento 4 e cujo
salrio superior a 2000 euros.
{e.NumBI | EMPREGADO(e) AND e.NumDep = 4 AND e.Salrio > 2000}
Na lgebra relacional seria:

NumBI(NumDep = 4 AND Salrio > 2000(EMPREGADO))

Ricardo Rocha DCC-FCUP

38

19

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Quantificadores
Nas frmulas do CRT podemos ainda usar os quantificadores universal e
existencial
( t)(F) ou ( t)(F)
em que e so os quantificadores universal e existencial, t uma varivel que
representa os tuplos de uma relao e F uma frmula.
Uma varivel que representa os tuplos de uma relao diz-se livre se no estiver
quantificada. Por exemplo, na frmula
( t)(t.EmpBI = u.NumBI)
t uma varivel quantificada e u uma varivel livre.
Numa expresso do CRT, as nicas variveis que devem aparecer livres so as que
aparecem esquerda da barra |.

39

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Quantificadores
( t)(F) verdadeiro se F for verdadeiro para todos os tuplos t em que t uma
varivel livre de F. Caso contrrio ( t)(F) falso.
( t)(F) verdadeiro se F for verdadeiro para algum tuplo t em que t uma varivel
livre de F. Caso contrrio ( t)(F) falso.
O quantificador universal pode ser transformado no existencial e vice-versa:
( t)(F) NOT ( t)(NOT F)
( t)(F) NOT ( t)(NOT F)

Ricardo Rocha DCC-FCUP

40

20

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Quantificadores
Obtenha o nome dos empregados que trabalham no departamento de Produo.
{e.NomeP, e.NomeF | EMPREGADO(e) AND ( d)(DEPARTAMENTO(d)
AND d.Nome = Produo AND d.Num = e.NumDep)}
Para todos os projectos localizados no Porto, obtenha o nome do projecto e o
ltimo nome do respectivo gerente.
{p.Nome, g.NomeF | PROJECTO(p) AND p.Localizao = Porto
AND EMPREGADO(g) AND ( d)(DEPARTAMENTO(d)
AND d.Num = p.NumDep AND d.GerenteBI = g.NumBI)}
Obtenha o nome dos empregados que trabalham em pelo menos um projecto
controlado pelo departamento 4.
{e.NomeP, e.NomeF | EMPREGADO(e) AND ( p)( t)(PROJECTO(p)
AND p.NumDep = 4 AND TRABALHA_EM(t)
AND t.EmpBI = e.NumBI AND p.Num = t.NumProj)}
41

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Quantificadores
Obtenha o nmero do BI dos empregados que no tm dependentes.
{e.NumBI | EMPREGADO(e) AND NOT ( d)(DEPENDENTE(d)
AND d.EmpBI = e.NumBI)}
Alternativa de resoluo utilizando a regra de transformao:
{e.NumBI | EMPREGADO(e) AND ( d)(NOT DEPENDENTE(d)
OR d.EmpBI e.NumBI)}
Obtenha o nome dos empregados que trabalham em todos os projectos controlados
pelo departamento 4.
{e.NomeP, e.NomeF | EMPREGADO(e) AND ( p)(NOT PROJECTO(p)
OR p.NumDep 4 OR ( t)(TRABALHA_EM(t)
AND t.EmpBI = e.NumBI AND t.NumProj = p.Num))}

Ricardo Rocha DCC-FCUP

42

21

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Clculo Relacional por Domnios


O CRD baseado na especificao de variveis sobre o domnio dos atributos,
onde cada varivel pode tomar como valor os valores de um determinado domnio.
A forma genrica de uma expresso do CRD
{v1, v2, ..., vn | COND(v1, v2, ..., vn,vn+1, vn+2, ..., vn+m)}
em que v1, v2, ..., vn,vn+1, vn+2, ..., vn+m so variveis que representam valores de
domnios e COND(v1, v2, ..., vn,vn+1, vn+2, ..., vn+m) uma frmula bem-formada do
clculo.
O resultado desta expresso a relao de grau n que corresponde s variveis v1,
v2, ..., vn e cujos valores satisfazem COND(v1, v2, ..., vn,vn+1, vn+2, ..., vn+m).

43

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Clculo Relacional por Domnios


Uma frmula do CRD pode ser formada por condies da forma
R(v1, v2, ..., vn) ou vi vj ou vi VAL
em que R uma relao, cada vi uma varivel que representa valores do domnio
do atributo Ai de R, um operador de comparao {=, <, >, , , } e VAL
dom(Ai).
Uma frmula do CRD tambm pode ser composta por vrias frmulas ligadas
pelos operadores lgicos AND, OR ou NOT ou usar os quantificadores universal e
existencial
F1 AND F2 ou F1 OR F2 ou NOT F1
( v)(F1) ou ( v)(F1)
em que F1 e F2 so frmulas, e so os quantificadores universal e existencial e
v uma varivel que representa valores de um domnio.

Ricardo Rocha DCC-FCUP

44

22

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Clculo Relacional por Domnios


Obtenha a data de aniversrio do empregado Rui Silva.
{g | ( a)( b)( c)( d)( e)( f)( h)( i)(EMPREGADO(a,b,c,d,e,f,g,h,i)
AND a = Rui AND b = Silva)}
Simplificao de notao: no utilizar vrgulas para separar as variveis nas
relaes e assumir que as variveis que no aparecem em qualquer condio so
quantificadas existencialmente.
{g | ( a)( b)(EMPREGADO(abcdefghi) AND a = Rui AND b = Silva)}
Simplificao de notao: utilizar valores directamente nas relaes e assumir que
as variveis que no aparecem esquerda da barra so quantificadas
existencialmente.
{g | EMPREGADO(Rui,Silva,c,d,e,f,g,h,i)}
45

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

Clculo Relacional por Domnios


Para todos os projectos localizados no Porto, obtenha o nome do projecto e o
ltimo nome do respectivo gerente.
{pb | ( m)( n)( r)( s)(EMPREGADO(abcdefghi)
AND DEPARTAMENTO(lmno) AND PROJECTO(pqrs)
AND r = Porto AND s = m AND n = c)}
Obtenha o nmero do BI dos empregados que no tm dependentes.
{c | EMPREGADO(abcdefghi)
AND NOT ( v)(DEPENDENTE(vwxyz) AND c = v)}
Alternativa de resoluo utilizando a simplificao de notao:
{c | EMPREGADO(abcdefghi) AND NOT DEPENDENTE(cwxyz)}

Ricardo Rocha DCC-FCUP

46

23

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

lgebra e Clculo Relacional


Considere as relaes R(A,B,C,D) e S(A,B). Escreva uma expresso no clculo
relacional por tuplos e no clculo relacional por domnios para a seguinte
expresso da lgebra relacional:

A,B(R) I S
CRT

{r.A,r.B | R(r) AND ( s)(S(s) AND r.A = s.A AND r.B = s.B)}
CRD

{ab | R(abcd) AND ( e)( f)(S(ef) AND a = e AND b = f)}


{ab | R(abcd) AND S(ab)}

47

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

lgebra e Clculo Relacional


Considere as relaes R(A,B,C,D) e S(A,B). Escreva uma expresso no clculo
relacional por tuplos e no clculo relacional por domnios para a seguinte
expresso da lgebra relacional:
R * (A,B(R) S)
CRT

{r | R(r) AND NOT ( s)(S(s) AND r.A = s.A AND r.B = s.B)}
CRD

{abcd | R(abcd) AND NOT ( e)( f)(S(ef) AND a = e AND b = f)}


{abcd | R(abcd) AND NOT S(ab)}

Ricardo Rocha DCC-FCUP

48

24

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

lgebra e Clculo Relacional


Considere as relaes R(A,B,C,D) e S(A,B). Escreva uma expresso no clculo
relacional por tuplos e no clculo relacional por domnios para a seguinte
expresso da lgebra relacional:

C = D((R * A(S)) * B(S))


CRT

{r | R(r) AND ( s1)(S(s1) AND r.A = s1.A)


AND ( s2)(S(s2) AND r.B = s2.B) AND r.C = r.D}
CRD

{abcd | R(abcd) AND ( e)(S(ef) AND e = a)


AND ( h)(S(gh) AND h = b) AND c = d}
{abcc | R(abcc) AND S(ax) AND S(yb)}
49

Ricardo Rocha DCC-FCUP

Bases de Dados 2010/2011

Parte IV: lgebra e Clculo Relacional

lgebra e Clculo Relacional


Considere as relaes R(A,B,C,D) e S(A,B). Escreva uma expresso no clculo
relacional por tuplos e no clculo relacional por domnios para a seguinte
expresso da lgebra relacional:

A,B,D(R) S
CRT

{r1.D | R(r1) AND ( s)(NOT S(s) OR ( r2)


(R(r2) AND s.A = r2.A AND s.B = r2.B AND r1.D = r2.D))}
{r1.D | R(r1) AND NOT ( s)(S(s) AND ( r2)
(NOT R(r2) OR s.A r2.A OR s.B r2.B OR r1.D r2.D))}
CRD

{d | R(abcd) AND ( e)( f)(NOT S(ef) OR R(efxd))}


Ricardo Rocha DCC-FCUP

50

25

Você também pode gostar