Vous êtes sur la page 1sur 20

lgebra Relacional

lgebra Relacional
um conjunto bsico de operaes do modelo relacional. Essas operaes permitem ao usurio especificar requisitos bsicos de consulta aos dados armazenados no banco de dados.
Uma consulta feita sobre uma relao ou mais relaes e o seu resultado de uma consulta uma nova relao. A lgebra apresenta um conjunto mnimo de operadores relacionais que podem ser combinados para extrair da base de dados todas as informaes ali armazenadas. As operaes da lgebra relacional so normalmente divididas em dois grupos.
O primeiro deles inclui um conjunto de operaes da teoria de conjuntos. As operaes so UNIO, INTERSEO, DIFERENA e PRODUTO CARTESIANO. O segundo grupo consiste de operaes desenvolvidas especificamente para bases de dados relacionais, tais como: SELEO, PROJEO e JUNO entre outras.

Projeto de Banco de Dados Exemplo


Cliente
Codcli 23 35 44 57 89 Nomcli Alice Joyce Marcos Joaquim Raul Endcli Rua X Rua Y Rua Z Rua D Rua G fonecli 3611090 3613111 1 3611220 0 3625111 1 3617282 8 codcli 44 57 23 44 89 Credcli 100,00 200,00 50,00 150,00 0,00 Stacli Bom Bom Mdio Mdio Ruim

Pedido Itens_Pedido
Codped 001 001 002 002 003 003 003 004 004 005 Codprod P1 P2 P1 P2 P2 P3 P4 P3 P5 P1 Qtde 1 2 3 4 5 6 7 8 9 10 Codped 001 002 003 004 005 Dtped 22/10/04 22/10/04 23/01/05 02/02/05 02/02/05

Produto
Codpro P1 P2 P3 P4 P5 nomepro Vassoura Sabo Detergent e Esponja Amaciant e precopro 1,00 3,45 0,90 0,50 5,00

Operao Seleo ()
A operao de seleo, representada graficamente pela letra grega sigma , usada para selecionar um subconjunto de linhas de uma tabela que satisfaz uma condio de seleo, tambm chamada de predicado.
O predicado aparece subscrito a e o argumento, a relao de entrada, representada entre parnteses. Forma Geral: <condio de seleo> (<nome da relao>)

Em geral, os predicados permitem expressar comparaes do tipo <,>, , , e = . Tambm pode-se utilizar os operadores lgicos AND, OR, NOT. Por exemplo, a seleo de um subconjunto de tuplas da relao CLIENTE que possua crdito maior ou igual a R$50,00
Credcli >=50 (Cliente)
Codcli 23 35 44 57 Nomcli Alice Joyce Marcos Joaquim Endcli Rua X Rua Y Rua Z Rua D fonecli 3611090 36131111 36112200 36251111 Credcli 100,00 200,00 50,00 150,00 Stacli Bom Bom Mdio Mdio

Operao Projeo ()
A operao de projeo, representada graficamente pela letra grega pi , usada para selecionar um subconjunto de colunas (atributos) de uma tabela. Os atributos desejados como resultado aparecem subscritos a , e o argumento, a relao de entrada, representada entre parnteses. A forma geral do operador PROJEO :
<lista de atributos>

(<nome da relao>)

Por exemplo, suponha uma consulta que deseje listar apenas os nomes e os preos dos produtos:
nomepro,precopro

(Produto)
nomepro Vassoura Sabo Detergente Esponja Amaciante precopro 1,00 3,45 0,90 0,50 5,00

Seqncia de Operaes
Em geral, existe a necessidade de se aplicar vrias operaes da lgebra relacional uma aps a outra. Pode-se escrever essas operaes em apenas uma nica expresso da lgebra relacional ou aplicar uma nica operao por vez e criar relaes intermedirias. Neste ltimo caso, deve-se dar nomes s relaes intermedirias. Por exemplo, deseja-se recuperar os cdigos dos pedidos que foram feitos no dia 22/10/2004. Isto pode ser feito aplicando-se as operaes de SELEO E PROJEO: Codped (Dtped=22/10/04(Pedido)) Alternativamente, pode-se explicitar a seqncia de operaes, dando um nome para cada relao intermediria: R1 Dtped=22/10/04(Pedido) R2 Codped (R1)
Codped 001 002

Para resolver
Buscar os nomes e telefones dos clientes que possuem status timo. Buscar os cdigos dos clientes e dos pedidos feitos no mes de janeiro de 2005. Buscar todas as informaes de produtos que possuem preo maior do que R$ 20.00.

Operaes da Teoria dos Conjuntos


Elas se aplicam ao modelo relacional porque uma relao definida como um conjunto de tuplas. Existem vrias operaes da teoria de conjuntos que so utilizadas para agrupar elementos de dois conjuntos, entre elas esto: UNIO, INTERSEO e DIFERENA. Estas operaes so binrias; isto , elas necessitam de dois conjuntos. Quando essas operaes so adaptadas para a base de dados relacional, deve-se assegurar que essas operaes resultem sempre em relaes vlidas. Para conseguir isso, as duas relaes aplicadas a qualquer uma das trs operaes acima devem ter o mesmo tipo de tuplas; esta condio chamada unio compatvel.

Compatibilidade de Unio
Duas relaes R(A1, A2, ..., An ) e S(B1 , B2 , ..., Bn) so unio compatvel se:
tiverem o mesmo grau n, e dom(Ai )=dom(Bi) para 1 i n.

Isso significa que as duas relaes tm o mesmo nmero de atributos e que cada par de atributos correspondentes tem o mesmo domnio.

Operao de Unio (U)


Dadas duas relaes R e S, o resultado da operao de unio, denotado por R S, uma relao que inclui todas as tuplas de R e todas as tuplas de S. Tuplas duplicadas so eliminadas.

RG 333444555 888665555

RG 123456789 333444555 453453453

RUS

RG 123456789 333444555 453453453 888665555

Operao de Interseco ()
Dadas duas relaes R e S, o resultado da operao de interseco, denotado por R S, uma relao que inclui todas as tuplas que so comuns a R e a S.

RG 333444555 888665555

RG 123456789 333444555 453453453

RS

RG 333444555

Operao de Diferena (-)


Dadas duas relaes R e S, o resultado da operao de diferena, denotado por R-S, uma relao que inclui todas as tuplas de R mas que no esto em S.

RG 333444555 888665555

RG 123456789 333444555 453453453

R-S

SSN
888665555

S-R

SSN 123456789 453453453

Observaes
As operaes unio e interseo so comutativas:
R S = S R e RS = S R.

Estas operaes podem ser aplicadas a qualquer nmero de relaes, e ambas so associativas:
R (S T) = (R S) T, e R (S T) = (R S) T.

A operao diferena no comutativa:


R - S S - R.

Para resolver
Buscar todos os clientes que moram na rua x, y e z. Buscar todos os dados de todos os pedidos excetos aqueles feitos pelo cliente 44.

Operao de Produto Cartesiano


A operao Produto Cartesiano, denotada por X, tambm uma operao de conjunto binria, mas as relaes sobre as quais so aplicadas no necessitam ser unio compatvel. Esta operao usada para combinar tuplas de duas relaes quaisquer. Concatena uma tupla de R com todas as tuplas de S. Em geral, o resultado de R(A1 , A2 , ..., An) X S(B1 , B2 , ..., Bm) a relao Q com n + m atributos Q(A1 , A2 , ..., An , B1 , B2 , ..., Bm) nesta ordem. A relao resultante Q tem uma tupla para cada combinao de tuplas. Assim, se R tem nR tuplas e S tem nS tuplas, ento RXS ter nR*nS tuplas. Para ilustrar, considere que se deseja recuperar para cada pedido, o nome de todos os produtos; isso pode ser feito da seguinte forma:

Codped 001 001 001 001 001 001 001 001 001 001 002 002 002 002 002 002 002 002 002 002 003 003 003 003 003 003 003 003 003 003 003 003 003 003 003 004 004 004 004 004 004 004 004 004 004 005 005 005

Codprod P1 P1 P1 P1 P1 P2 P2 P2 P2 P2 P1 P1 P1 P1 P1 P2 P2 P2 P2 P2 P2 P2 P2 P2 P2 P3 P3 P3 P3 P3 P4 P4 P4 P4 P4 P3 P3 P3 P3 P3 P5 P5 P5 P5 P5 P1 P1 P1

Qtde 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6 6 6 6 6 7 7 7 7 7 8 8 8 8 8 9 9 9 9 9 10 10 10

Codpro P1 P2 P3 P4 P5 P1 P2 P3 P4 P5 P1 P2 P3 P4 P5 P1 P2 P3 P4 P5 P1 P2 P3 P4 P5 P1 P2 P3 P4 P5 P1 P2 P3 P4 P5 P1 P2 P3 P4 P5 P1 P2 P3 P4 P5 P1 P2 P3

nomepro Vassoura Sabo Detergente Esponja Amaciante Vassoura Sabo Detergente Esponja Amaciante Vassoura Sabo Detergente Esponja Amaciante Vassoura Sabo Detergente Esponja Amaciante Vassoura Sabo Detergente Esponja Amaciante Vassoura Sabo Detergente Esponja Amaciante Vassoura Sabo Detergente Esponja Amaciante Vassoura Sabo Detergente Esponja Amaciante Vassoura Sabo Detergente Esponja Amaciante Vassoura Sabo Detergente

precopro 1,00 3,45 0,90 0,50 5,00 1,00 3,45 0,90 0,50 5,00 1,00 3,45 0,90 0,50 5,00 1,00 3,45 0,90 0,50 5,00 1,00 3,45 0,90 0,50 5,00 1,00 3,45 0,90 0,50 5,00 1,00 3,45 0,90 0,50 5,00 1,00 3,45 0,90 0,50 5,00 1,00 3,45 0,90 0,50 5,00 1,00 3,45 0,90

R1 Itens_Pedido X Produto R2 Codpro= Codprod (R1) R3 Codped,nomepro (R2)

Resultado da Consulta

Codped 001 001 002 002 003 003 003 004 004 005

nomepro Vassoura Sabo Vassoura Sabo Sabo Detergente Esponja Detergente Amaciante Vassoura

Para resolver
Buscar os nomes e endereos dos clientes que fizeram pedidos Buscar os nomes dos produtos e as quantidades que estavam no pedido 003.

Operao JOIN (Juno)


A operao JOIN usada para combinar tuplas relacionadas de relaes em uma nica tupla. Esta combinao realizada de acordo com uma condio indicada. Equivale seguinte seqncia de operaes:
Produto cartesiano de R X S Seleo da condio para a juno

O resultado de JOIN uma relao Q com n+m atributos Q(A1, A2, ..., An ,B1 ,B2 , ..., Bm) nesta ordem; Q tem um tupla para cada combinao de tuplas - uma de R e uma de S- onde quer que a combinao satisfaa a condio join. Esta a principal diferena entre produto cartesiano e juno; Em juno, apenas combinaes de tuplas que satisfazem a condio de juno que aparecer no resultado, j no produto cartesiano, todas as combinaes de tuplas so includas no resultado. A condio de juno especificada sobre atributos de R e de S, e avaliada para cada combinao de tuplas. De uma forma geral, a juno de R e S representada por:

<condio de juno>

Operao JOIN (Juno)


Para ilustrar a operao JOIN, suponha que se deseja recuperar os nomes dos cliente que efetuaram pedidos. Para obter-se o nome dos clientes, necessrio combinar cada tupla de CLIENTE com tuplas de PEDIDO cujo valor CODCLI seja igual ao valor de CODCLI na tupla CLIENTE. Isto feito usando a operao JOIN, ento projetase o resultado sobre aqueles atributos necessrios:
R1 Cliente codcli=codcli Pedido R2 Nomcli (R1)
Nomcli Alice Marcos Joaquim Raul

Observao
O exemplo utilizado para ilustrar o produto cartesiano pode ser especificado usando o operador JOIN trocando as duas operaes:
R1 Itens_Pedido X Produto R2 codpro= codprod (R1)

por

R1 Itens_Pedido

Produto

codpro=codpro

Vous aimerez peut-être aussi