Você está na página 1de 26

Banco de Dados

Mdulo 6 - Modelo Relacional


lgebra e Clculo Relacional

modulo06.PRZ

10/05/01

Tpicos
Introduo lgebra Relacional Clculo Relacional

modulo06.PRZ

10/05/01

Introduo
Linguagem de Definio de Dados (LDD):
comandos para definio do esquema lgico e fsico do BD

Linguagem de Manipulao de Dados (LMD):


comandos para especificao de consultas ao BD comandos para manipulao dos dados no BD: insero atualizao remoo

Classificao das linguagens:


procedimentais: declarativas: consultas especificam a ordem de execuo das operaes necessrias para obter a resposta consultas especificam a resposta, sem indicar que operaes devem ser realizadas para obt-la

modulo06.PRZ

10/05/01

Introduo
Clculo Relacional
linguagem declarativa paradigma para as linguagens relacionais

lgebra Relacional
procedimental mesmo poder de expresso que o Clculo Relacional variantes da lgebra Relacional so usadas internamente pelos SGBDs relacionais durante a otimizao de consultas

SQL - Structured Query Language


originria do Clculo Relacional semi-declarativa interface padro dos SGBDs relacionais

modulo06.PRZ

10/05/01

lgebra Relacional
lgebra Relacional:
operaes mapeiam uma ou mais relaes em uma nova relao algumas operaes impem restries nas relaes de entrada

Operaes:
Bsicas: oriundas da teoria de conjuntos: especficas para relaes: Adicionais oriundas da teoria de conjuntos: especficas para relaes: Produto Cartesiano, Unio e Diferena Seleo, Projeo e Renomeo Interseo Diviso e Juno

Notas:
as operaes bsicas so suficientes para exprimir as mesmas consultas que o Clculo Relacional as operaes adicionais ajudam a formular certas consultas que seriam muito complexas de exprimir usando apenas as operaes bsicas
modulo06.PRZ 5 10/05/01

lgebra Relacional
Operaes oriundas da Teoria dos Conjuntos:
Operao unio diferena prod. cart. interseo Notao Grau do resultado Cardinalidade do resultado Restr. 1, 2 1, 2 -1, 2

rs r-s rs rs

gr(r)=gr(s) gr(r)=gr(s) gr(r)+gr(s) gr(r)=gr(s)

> n(r) + n(s) > n(r)


n(r) x n(s)

> min(n(r),n(s))

Restries: 1. As relaes r e s devem ter o mesmo grau (ou aridade) 2. Os atributos correspondentes devem ser compatveis

modulo06.PRZ

10/05/01

lgebra Relacional
Exemplos:
Banco de Dados: Operaes: Que disciplinas esto sendo oferecidas..

DiscGR (1) na GR ou PG?


Cod End Matr 15315 11239 Cod End Matr 15315 11239 24217 Matr 15315 inf1731 L520 inf1732 L510

DiscGR  DiscPG

inf1731 L520 inf1732 L510 inf2324 L520

DiscPG
Cod End Matr 24217 11239

(2) s na GR? DiscGR - DiscPG


Cod End inf1731 L520

inf2324 L520 inf1732 L510

(3) na GR e na PG? DiscGR  DiscPG


Cod End Matr 11239
10/05/01

inf1732 L510
modulo06.PRZ 7

lgebra Relacional
Exemplos:
Banco de Dados: Operao:

DiscGR
Cod End Matr 15315 11239

DiscGR x Prof
Cod End Matr 15315 15315 15315 11239 11239 11239 Matr Nome

inf1731 L520 inf1732 L510

inf1731 L520 inf1731 L520 inf1731 L520 inf1732 L510

15315 Pedro 11239 Manuel 24217 Jos 15315 Pedro 11239 Manuel 24217 Jos

Prof
Matr Nome

inf1732 L510 inf1732 L510

15315 Pedro 11239 Manuel 24217 Jos


modulo06.PRZ 8

10/05/01

lgebra Relacional
Operaes especficas para relaes:
Operao seleo projeo Notao Descrio tuplas de r que satisfazem o predicado de seleo P projeo das tuplas de r na lista de atributos A1, ...,An

"P (r) A1,...,An (r)

renomeao !S[B1,...,Bk] (e) nomeia o resultado da expresso e como S[B1,...,Bk] juno equijuno diviso
modulo06.PRZ

r_Ps r_s rs

concatenao das tuplas de r e s que satisfazem o predicado de juno P concatenao das tuplas de r e s que coincidem nos atributos em comum, eliminando os atributos em duplicata

R-S (r) - ( ( R-S (r)  s ) - R-S,S (r) )


9 10/05/01

lgebra Relacional
Exemplos:
Banco de Dados: Consultas:

DiscGR
Cod End Matr 15315 11239

(1) Que disciplinas de GR ocupam a sala L520?

Cod

End

Matr 15315

inf1731 L520

inf1731 L520 inf1732 L510

"End=L520 (DiscGR)
(2) Quais as salas so usadas por quais disciplinas de GR?

Cod

End

inf1731 L520 inf1732 L510

Cod,End (DiscGR)
(3) renomeie e2 , resultado de (2), para DS[Disc,Sala]
modulo06.PRZ 10

Disc

Sala

inf1731 L520

!DS[Disc,Sala] (e2)

10/05/01 inf1732 L510

lgebra Relacional
Exemplos:
Banco de Dados: Consulta:

DiscGR
Cod End Matr 15315

(1) Que professores lecionam na graduao? DiscGR _DiscGR.Matr=Prof.Matr Prof


Cod End L520 L510 Matr 15315 11239 Matr Nome

inf1731 L520 inf1732 L510

11239

inf1731

15315 Pedro 11239 Manuel

(juno)

Prof
Matr Nome

inf1732

15315 Pedro 11239 Manuel 24217 Jos

DiscGR _Prof
Cod End Matr Nome

(equijuno)

inf1731 L520 inf1732 L510

15315 15315 Pedro 11239 Manuel 11239


10/05/01

modulo06.PRZ

11

lgebra Relacional
Exemplos:
Banco de Dados: Consulta:

DiscGR
Cod End Matr 15315 11239

(1) Quais disciplinas da GR Pedro leciona?

inf1731 L520 inf1732 L510

Cod((DiscGR _Matr ("Nome='Pedro' (Prof)))


Matr Nome 15315 Pedro

Prof
Matr
Matr Nome

15315
Cod End Matr 15315

15315 Pedro 11239 Manuel 24217 Jos

Matr 15315

inf1731 L520 Cod

modulo06.PRZ

12 inf1731

10/05/01

lgebra Relacional
Definio da diviso:
PD Cod inf1731 inf1732 Matr 15315 11239 15315 24217

Sejam R e S esquemas de relaes e r e s relaes com os esquemas R e S tFrs (1) sse

inf1732 inf2324

t F R-S (r) (2) para todo ts F s, existe tr F r tal que (2.1) tr [S] = ts [S] e (2.2) tr [R-S] = t

DGr

Cod inf1731 inf1732

Exemplos:
Qual a matrcula dos professores que lecionam todas as disciplinas da GR?
R := PD  DGr
modulo06.PRZ 13

Matr 15315

10/05/01

lgebra Relacional
Uma linguagem baseada na lgebra Relacional:
<programa> ::= <atribuio> | <atribuio> ';' <programa> <atribuio> ::= <esquema> ':=' <expresso> <expresso> ::= <operao binria> | <seleo> | <projeo> | <juno> <operao binria>::=<nome><operador binrio><nome> <seleo> ::= 'selecione' <nome> 'onde' <predicado de seleo> <projeo> ::= 'projete' <nome> 'em' <lista de atributos> <juno> ::= 'junte' <nome> 'e' <nome> 'onde' <predicado de juno> <operador binrio>::= '' | '-' | '' | ' ' | '' <esquema> ::= <nome>{'['<lista de atributos>']'} <nome> ::= <char> | <char><nome> <lista de atributos> ::= <nome> | <nome><lista de atributos> <char> ::= 'a' | 'b' | ...

modulo06.PRZ

14

10/05/01

lgebra Relacional
Uma linguagem baseada na lgebra Relacional (cont.):
<predicado de seleo> ::= <termo-seleo><comparao><termo-seleo> | '' <predicado de seleo> | '('<predicado de seleo><conectivo><predicado de seleo>')'; <termo-seleo> ::= <nome-atributo> | <valor>;

<predicado de juno> ::= <termo-juno><comparao><termo-juno> | '' <predicado de seleo> | '('<predicado de seleo><conectivo><predicado de seleo>')'; <termo-juno> <comparao> <conectivo> <nome-atributo> <nome-relao> ::= <nome-relao>'.'<nome-atributo>; ::= '<' | '>' | '=' | 'P' | '>' ; ::= 'e' | 'ou' ; ::= <nome> ::= <nome>

modulo06.PRZ

15

10/05/01

lgebra Relacional
Expresso EF,E-F,EF R := E Restries gr(E)=gr(F) e E e F tm atributos compatveis omite-se a lista de atributos de R quando for possvel determin-los a partir de E P predicado de seleo para R, ou seja, os termos de P s envolvem atributos de R A1,...,An so atributos de R P predicado de juno para R e S, ou seja, os termos s envolvem expresses da forma R.A, onde A um atributo de R, ou da forma S.A, onde A um atributo de S e as comparaes so sobre termos de relaes diferentes
16 10/05/01

selecione R onde P

projete R em A1, ... An

junte R e S onde P

modulo06.PRZ

lgebra Relacional
Exemplos:
Esquema Relacional do Banco de Dados: Disc[Cod, End, Matr, Nvel] Prof[Matr, Nome, Idade]

Estado do Banco de Dados:


Disc Cod End Matr Nvel Prof Matr Nome Idade 46 33 66

inf1731 L520 inf1732 L510 inf1732 L520 inf2324 L520

15315 GR 11239 GR 15315 GR 24217 PG

15315 Pedro 11239 Manuel 24217 Jos

modulo06.PRZ

17

10/05/01

lgebra Relacional
Exemplos (cont.):
Qual a matrcula dos professores que lecionam disciplinas na L520?
R1 := selecione Disc onde End = L520; R2 := projete R1 em Matr;

ou, equivalentemente:
R1 := projete Disc em End, Matr; R2 := selecione R1 onde End = L520; R3 := projete R2 em Matr;

modulo06.PRZ

18

10/05/01

lgebra Relacional
Exemplos (cont.):
Qual o nome dos professores com mais de 45 anos que lecionam disciplinas na GR?
R1 := junte Disc e Prof onde DiscPG.Matr = Prof.Matr; R2 := selecione R1 onde Nvel = GR e Idade > 45; R3 := projete R2 em Nome;

ou, equivalentemente:
R1 := selecione Disc onde Nvel = GR; R2 := selecione Prof onde Idade > 45; R3 := junte R1 e R2 onde R1.Matr = R2.Matr; R4 := projete R3 em Nome;

modulo06.PRZ

19

10/05/01

lgebra Relacional
Exemplos (cont.):
Qual a matrcula dos professores que lecionam todas as disciplinas da GR?
R1 := selecione Disc onde Nvel = GR; R2 := projete R1 em Cod; R3 := projete Disc em Cod, Matr; R4 := R3  R2;
R1 Cod End Matr Nvel R2 Cod inf1731 inf1732 R3 Cod inf1731 inf1732 inf1732 inf2324
modulo06.PRZ 20

Disc

Cod

End

Matr

Nvel

inf1731 L520 inf1732 L510 inf1732 L520 inf2324 L520

15315 GR 11239 GR 15315 GR 24217 PG

Matr 15315 11239 15315 24217

R4 Matr 15315

inf1731 L520 inf1732 L510 inf1732 L520

15315 GR 11239 GR 15315 GR

10/05/01

lgebra Relacional
Propriedades dos operadores:
Comutatividade e distributividade da seleo:

"P (Q (r)) = "Q (P (r)) "P Q (r) = "P (Q (r))
Comutatividade e associatividade da juno:

r_Ps=s_Pr (r _ P s) _ Q t = r _ P (s _ Q t)
Comutatividade entre seleo e projeo:

P (A1,...,An (r)) = A1,...,An (P (r))


(muitas outras propriedades teis otimizao de consultas...)

modulo06.PRZ

21

10/05/01

lgebra Relacional
Representao de expresses por rvores:
R1 := junte Disc e Prof onde DiscPG.Matr = Prof.Matr; R2 := selecione R1 onde Nvel = GR e Idade > 45; R3 := projete R2 em Nome;

 Nome " Nvel = GR e Idade > 45 _ Disc.Matr = Prof.Matr


Disc Prof

R1 := selecione Disc onde Nvel = GR; R2 := selecione Prof onde Idade > 45; R3 := junte R1 e R2 onde R1.Matr = R2.Matr; R4 := projete R3 em Nome;

 Nome _ Disc.Matr = Prof.Matr " Nvel = GR " Idade > 45


22

modulo06.PRZ

Disc

Prof

10/05/01

Clculo Relacional
Expresso do Clculo Relacional: { r / P(r) }
onde r P(r) uma varivel varrendo tuplas uma frmula cuja nica varivel livre r

modulo06.PRZ

23

10/05/01

Clculo Relacional
Frmulas atmicas: r1 . R r1[A1]  r2[A2] r1[A1]  c
onde r1 e r 2 A1 e A2 R  so variveis varrendo tuplas so atributos definidos para r1 e r2 um nome de relao um operador de comparao

se P1 e P2 so frmulas, ento as expresses tambm so frmulas:


(P1) P1 (P1 P2) ( r1 . R)(Q) ( r1 . R)(Q) (P1
P2) (P1

0P )
2

modulo06.PRZ

24

10/05/01

Clculo Relacional
Restrio:
as frmulas devem ser seguras exemplos:
(r1

FR) no segura

(r1 FT)((r1 FR)) segura r1 FT (r1 FR) segura r1 FT (r1 FR) no segura

modulo06.PRZ

25

10/05/01

Clculo Relacional
Exemplos (cont.):
Qual a matrcula dos professores que lecionam disciplinas na L520?
{ t / ( s . Disc ) ( t = s[Matr] s[End] = L520 ) }

Qual o nome dos professores com mais de 45 anos que lecionam disciplinas na GR?
{ n / ( r . Prof ) ( s . Disc ) (n = r[Nome] r[Idade] > 45 s[Nvel] = GR r[Matr] = s[Matr] ) }

Qual a matrcula dos professores que lecionam todas as disciplinas da GR?


{ m / ( p. Prof ) ( m = p[Matr] (( ^s . Disc ) (s[Nivel]=GR ( t . Disc ) ( p[Matr] = t[Matr] s[Cod] = t[Cod] ))))}

modulo06.PRZ

26

10/05/01

Você também pode gostar