Está en la página 1de 36

SISTEMAS DE INFORMAO

lgebra Relacional
e
Clculo Relacional

Prof. Edson Thizon


Linguagens de consultas formais (1)
 Uma linguagem de consulta (Query Language) uma
linguagem com a qual o usurio pode requisitar ao
Sistema de Gerncia de Banco de Dados (SGBD)
informaes armazenadas no Banco de Dados (BD).

 Linguagens de consulta podem ser:


Procedurais
O usurio descreve o algoritmo de acesso aos
dados atravs de uma seqncia de instrues
(COMO)
No procedurais
O usurio descreve a informao que deseja obter
sem descrever como obt-la (O QU)

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Linguagens de consultas formais (2)

 As linguagens de consulta e atualizao comerciais


para sistemas relacionais baseiam-se na LGEBRA
RELACIONAL (procedural) e no CLCULO
RELACIONAL (no procedural)

 As operaes da lgebra e do clculo exprimem o


conjunto de consultas e manipulaes possveis
sobre uma base de dados relacional qualquer

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Linguagens de consultas formais (3)

 A lgebra apresenta o conjunto mnimo de


OPERADORES RELACIONAIS que podem ser
combinados para extrair da base de dados,
praticamente, todas as informaes ali
armazenadas (dados e seus relacionamentos)

 O clculo estende (e completa) a potencialidade


da lgebra relacional com a introduo dos
quantificadores universal () e existencial ()

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


lgebra Relacional (AR)

 Operaes fundamentais da lgebra Relacional:

Restrio/Seleo (select):
Projeo (project):
Produto Cartesiano (cartesian product): x
Unio (union):
Diferena (set-difference): -

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


lgebra Relacional (AR)

 Alm das 5 operaes fundamentais, a lgebra


Relacional oferece as operaes:

INTERSEO:
JUNO THETA:
JUNO NATURAL:
DIVISO:

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Operaes Fundamentais da
lgebra Relacional
 SELEO e PROJEO so operaes
UNRIAS.
 As outras trs operaes (PRODUTO
CARTESIANO, UNIO e DIFERENA) operam,
cada uma, sobre um par de relaes.
 As operaes da AR sempre operam sobre
relaes e devolvem como resultado uma
relao.

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Relaes Usadas nos Exemplos:
Relao (tabela) CLIENTES

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Script Tabela Clientes

CREATE TABLE CLIENTES


(C_NOME VARCHAR2(20) NOT NULL PRIMARY KEY,
C_ENDERECO VARCHAR2(20) NOT NULL,
C_CIDADE VARCHAR2(20) NOT NULL);

INSERT INTO CLIENTES(C_NOME, C_ENDERECO, C_CIDADE) VALUES ('JONES','MAIN','HARRISON');


INSERT INTO CLIENTES(C_NOME, C_ENDERECO, C_CIDADE) VALUES ('SMITH','NORTH','RYE');
INSERT INTO CLIENTES(C_NOME, C_ENDERECO, C_CIDADE) VALUES ('HAYES','MAIN','HARRISON');
INSERT INTO CLIENTES(C_NOME, C_ENDERECO, C_CIDADE) VALUES ('CURRY','NORTH','RYE');
INSERT INTO CLIENTES(C_NOME, C_ENDERECO, C_CIDADE) VALUES ('LINDSAY','PARK','PITTSFIELD');
INSERT INTO CLIENTES(C_NOME, C_ENDERECO, C_CIDADE) VALUES ('TURNER','PUTNAM','STAMFORD');
INSERT INTO CLIENTES(C_NOME, C_ENDERECO, C_CIDADE) VALUES ('WILLIAMS','NASSAU','PRINCETON');
INSERT INTO CLIENTES(C_NOME, C_ENDERECO, C_CIDADE) VALUES ('ADAMS','SPRING','PITTSFIELD');
INSERT INTO CLIENTES(C_NOME, C_ENDERECO, C_CIDADE) VALUES ('JOHNSON','ALMA','PALO ALTO');
INSERT INTO CLIENTES(C_NOME, C_ENDERECO, C_CIDADE) VALUES ('GLENN','SAND HILL','WOODSIDE');
INSERT INTO CLIENTES(C_NOME, C_ENDERECO, C_CIDADE) VALUES ('BROOKS','SENATOR','BROOKLYN');
INSERT INTO CLIENTES(C_NOME, C_ENDERECO, C_CIDADE) VALUES ('GREEN','WALNUT','STAMFORD');
INSERT INTO CLIENTES(C_NOME, C_ENDERECO, C_CIDADE) VALUES ('JACKSON','WAL','FORD');

COMMIT;

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Relaes Usadas nos Exemplos:
Relao (tabela) DEPSITOS

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Script Tabela Depsitos

CREATE TABLE DEPOSITOS


(D_AGENCIA VARCHAR2(20) NOT NULL,
D_CONTA NUMBER(10) NOT NULL,
D_NOME VARCHAR2(20) NOT NULL,
D_SALDO NUMBER(10,2) NOT NULL,
CONSTRAINT DEPOSITOS_CLIENTES_FK FOREIGN KEY (D_NOME)
REFERENCES CLIENTES (C_NOME));

INSERT INTO DEPOSITOS(D_AGENCIA,D_CONTA, D_NOME, D_SALDO) VALUES('DOWNTOW',101, 'JOHNSON',500);


INSERT INTO DEPOSITOS(D_AGENCIA,D_CONTA, D_NOME, D_SALDO) VALUES('MIANUS',215, 'SMITH',700);
INSERT INTO DEPOSITOS(D_AGENCIA,D_CONTA, D_NOME, D_SALDO) VALUES('PERRYRIDGE',102, 'HAYES',400);
INSERT INTO DEPOSITOS(D_AGENCIA,D_CONTA, D_NOME, D_SALDO) VALUES('ROUND',305, 'TURNER',350);
INSERT INTO DEPOSITOS(D_AGENCIA,D_CONTA, D_NOME, D_SALDO) VALUES('PERRYRIDGE',201, 'WILLIAMS',900);
INSERT INTO DEPOSITOS(D_AGENCIA,D_CONTA, D_NOME, D_SALDO) VALUES('REDWOOD',222, 'LINDSAY',700);
INSERT INTO DEPOSITOS(D_AGENCIA,D_CONTA, D_NOME, D_SALDO) VALUES('BRIGHTON',217, 'GREEN',750);

COMMIT;

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Relaes Usadas nos Exemplos:
Relao (tabela) EMPRSTIMOS

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Script Tabela Emprstimos

CREATE TABLE EMPRESTIMOS


(E_AGENCIA VARCHAR2(20) NOT NULL,
E_CODIGO NUMBER(10) NOT NULL,
E_NOME VARCHAR2(20) NOT NULL,
E_VALOR NUMBER(10,2) NOT NULL,
CONSTRAINT EMPRESTIMOS_CLIENTES_FK FOREIGN KEY (E_NOME)
REFERENCES CLIENTES (C_NOME));

INSERT INTO EMPRESTIMOS(E_AGENCIA,E_CODIGO, E_NOME, E_VALOR) VALUES('DOWNTOW',17, 'JONES',1000);


INSERT INTO EMPRESTIMOS(E_AGENCIA,E_CODIGO, E_NOME, E_VALOR) VALUES('REDWOOD',23, 'SMITH',2000);
INSERT INTO EMPRESTIMOS(E_AGENCIA,E_CODIGO, E_NOME, E_VALOR) VALUES('PERRYRIDGE',15, 'HAYES',1500
INSERT INTO EMPRESTIMOS(E_AGENCIA,E_CODIGO, E_NOME, E_VALOR) VALUES('DOWNTOW',14, 'JACKSON',1500
INSERT INTO EMPRESTIMOS(E_AGENCIA,E_CODIGO, E_NOME, E_VALOR) VALUES('MIANUS',93, 'CURRY',500);
INSERT INTO EMPRESTIMOS(E_AGENCIA,E_CODIGO, E_NOME, E_VALOR) VALUES('ROUND HILL',11, 'TURNER',900);
INSERT INTO EMPRESTIMOS(E_AGENCIA,E_CODIGO, E_NOME, E_VALOR) VALUES('PWNAL',29, 'WILLIAMS',1200);
INSERT INTO EMPRESTIMOS(E_AGENCIA,E_CODIGO, E_NOME, E_VALOR) VALUES('NORTH',16, 'ADAMS',1300);
INSERT INTO EMPRESTIMOS(E_AGENCIA,E_CODIGO, E_NOME, E_VALOR) VALUES('DOWNTOW',18, 'JOHNSON',2000
INSERT INTO EMPRESTIMOS(E_AGENCIA,E_CODIGO, E_NOME, E_VALOR) VALUES('PERRYRIDGE',25, 'GLENN',2500
INSERT INTO EMPRESTIMOS(E_AGENCIA,E_CODIGO, E_NOME, E_VALOR) VALUES('BRIGHTON',10, 'BROOKS',2200);

COMMIT;

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


A operao de Seleo
Seleciona tuplas (linhas) de uma relao
(tabela) que satisfazem um determinado
predicado (condio)
Formato: RelResultado = predicado (RelEntrada)
Ex.:Selecione as tuplas da relao
EMPRSTIMOS para quais o nome da agncia
Perryridge

R=
e-agncia=Perryridge (EMPRSTIMOS)

SELECT *
FROM EMPRESTIMOS
WHERE E_AGENCIA = 'PERRYRIDGE'
Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon
A operao de Seleo
 Em geral, os predicados permitem expressar
comparaes do tipo (<, , >, , = e ). Alm disso,
pode-se relacional com operadores lgicos (and,
or, not)
 Exemplos:
Selecione tuplas da relao EMPRSTIMOS para as
quais o valor do emprstimo maior que 1200:

RelResult = e-valor>1200 (EMPRSTIMOS)
Selecione as tuplas da relao EMPRSTIMOS para as
quais o nome da agncia Perryridge e o valor do
emprstimo excede 1200:
RelResult = e-valor>1200 and e-agencia = Perryridge(EMPRSTIMOS)

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


A Operao de Projeo
 Copia uma relao de entrada, deixando de
fora uma ou mais colunas
Formato: RelResult=colunas a copiar(RelEntrada)
Ex.: Obter uma tabela que relacione os
clientes do banco com as agncias onde
fizeram emprstimos:
Res=
e-agencia, e-nome(EMPRSTIMOS)

SELECT E_AGENCIA, E_NOME


FROM EMPRESTIMOS

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


A Operao de Projeo
 possvel compor operaes mais complexas da
lgebra relacional atravs do aninhamento de
operaes mais simples
 Exemplo: listar os nomes dos clientes que fizeram
emprstimos superiores a 1200:
RelResult = e-nome(
e-valor>1200 (EMPRSTIMOS))

SELECT DISTINCT E_NOME


FROM (SELECT E_NOME
FROM EMPRESTIMOS
WHERE E_VALOR >1200)

 A operao de seleo que gera uma relao como


resultado pode ser usada como relao de entrada
para a operao delgebra
Modelo Relacional
projeo
e Clculo Relacional Prof. Edson Thizon
O Produto Cartesiano
 As operaes de seleo e projeo permitem
extrair informaes de somente uma relao de
cada vez.
 A operao de PRODUTO CARTESIANO permite
relacionar informaes de duas relaes.
 Dadas duas relaes de entrada, R1 com N tuplas
e R2 com M tuplas, o produto cartesiano delas
uma relao, contendo (MxN) tuplas. A operao
CONCATENA cada tupla de R1 com todas as
tuplas de R2.

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


O Produto Cartesiano
 Quando, devido a concatenao de tuplas de duas relaes
diferentes, RelResult apresenta duas colunas de mesmo
nome, cada uma delas recebe, como prefixo, o nome de sua
relao de origem
 Exemplo: listar o nome dos clientes que moram em Rye e
fizeram emprstimo de menos de 1000.
a)RelResult1= CLIENTES x EMPRSTIMOS
b)RelResult2= c-name = e-name (RelResult1)
c)RelResult3= e-valor<1000 and c-cidade = Rye (RelResult2)
SELECT C_NOME
FROM CLIENTES, EMPRESTIMOS
WHERE C_NOME = E_NOME AND
E_VALOR < 1000 AND C_CIDADE = 'RYE'

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


A Operao de Unio
 Considere agora que se deseje listar os clientes associados
agncia de Perryridge, independente do seu
relacionamento com aquela agncia (depsito ou
emprstimo)
 R1 = d-nome (d-agencia = Perryridge (DEPSITOS))
 R2 = e-nome (e-agencia = Perryridge (EMPRSTIMOS))
 Result = R1 U R2
SELECT D_NOME NOME
FROM DEPOSITOS
WHERE D_AGENCIA = 'PERRYRIDGE'
UNION
SELECT E_NOME NOME
FROM EMPRESTIMOS
WHERE E_AGENCIA = 'PERRYRIDGE'
Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon
A Operao de Diferena
 Listar aqueles clientes da agncia Perryridge que no
fizeram emprstimos naquela agncia (tm s conta
corrente l). O que se pede nesta consulta o conjunto de
clientes que tm conta na agncia menos o conjunto de
nomes de clientes que fizeram emprstimo nesta agncia.
 R1 = d-nome (d-agencia = Perryridge (DEPSITOS))
 R2 = e-nome (e-agencia = Perryridge (EMPRSTIMOS))
 Result = R1 - R2
SELECT D_NOME NOME
FROM DEPOSITOS
WHERE D_AGENCIA = 'PERRYRIDGE'
MINUS
SELECT E_NOME NOME
FROM EMPRESTIMOS
WHERE E_AGENCIA = 'PERRYRIDGE'
Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon
Operaes de Unio e Diferena
 Para as operaes UNIO e DIFERENA
serem consideradas corretas, duas
condies devem ser satisfeitas:
As relaes R1 e R2 tm que apresentar o
mesmo nmero de atributos.
Os domnios (tipo de dado) do i-simo atributo
de R1 e do i-simo atributo de R2 devem ser
iguais.

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Operadores Adicionais

 Os operadores a seguir no acrescentam


qualquer poder lgebra Relacional,
somente simplificam a construo de
consultas.

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


A Operao de Interseo
 A INTERSEO entre duas relaes uma
relao que contm somente as tuplas
comuns das duas relaes argumentos

 Os requisitos vlidos para a UNIO e


DIFERENA valem tambm para a
INTERSEO

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


A Operao de Interseo
TR1 TR2 = TR1 (TR1 TR2)
Listar os nomes dos clientes da agncia
Perryridge que tem conta corrente e fizeram
emprstimo l
R1 = d-nome (d-agencia = Perryridge (DEPSITOS))
R2 = e-nome (e-agencia = Perryridge (EMPRSTIMOS))
Result = R1 R2
SELECT D_NOME NOME
FROM DEPOSITOS
WHERE D_AGENCIA = 'PERRYRIDGE'
INTERSECT
SELECT E_NOME NOME
FROM EMPRESTIMOS
WHERE E_AGENCIA = 'PERRYRIDGE'
Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon
A Operao de Juno Theta

 Usualmente, consultas que envolvem o


produto cartesiano de duas relaes
incluem tambm uma operao de seleo
sobre as tuplas do produto.

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


A Operao de Juno Theta
A JUNO THETA uma operao binria que
combina o produto cartesiano e a seleo em
uma nica operao. Por exemplo: listar o nome e
a cidade vive de cada uma dos clientes devedores
da agncia Perryridge.
e-nome,c-cidade (c-nome = e-nome and e-agencia = Perryridge
(CLIENTES x EMPRSTIMOS))
SELECT E_NOME, C_CIDADE
FROM CLIENTES, EMPRESTIMOS
WHERE C_NOME = E_NOME AND
E_AGENCIA = 'PERRYRIDGE'

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Clculo Relacional de Tuplas
Linguagem NO PROCEDURAL (declarativa):
 O usurio descreve a INFORMAO que deseja
obter sem descrever como obt-la ( O QU)
 O Clculo Relacional de Tuplas (CRT) permite
que se defina conjuntos de tuplas a partir de
expresses do tipo: {t | P(t)}
 Uma expresso do clculo relacional representa
um conjunto de tuplas onde, para cada tupla t, o
predicado P(t) verdadeiro:
 T Result P(t)

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Clculo Relacional de Tuplas
 Uma Varivel Tupla (VT) representa, a cada
instante, uma tupla T de uma determinada relao
R. Uma frmula P(t) pode apresentar mais de uma
varivel tupla. Em uma determinada frmula, uma
VT pode aparecer como:
Varivel Destino: quando estiver associada a um
quantificador existencial (existe) ou universal (para
todo)
Varivel Livre: em caso contrrio ao anterior
Exemplo:
AR => e-agencia = Perryridge (EMPRSTIMOS)
CRT => {t | t EMPRSTIMOS ^ t[e-agencia]=Perryridge}

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Expressando Operao da lgebra
Relacional em Clculo Relacional
 Selecione as tuplas da relao
EMPRSTIMOS para as quais o valor do
emprstimo maior que 1200.

AR => e-valor > 1200 (EMPRSTIMOS)


CRT => {t | t EMPRSTIMOS ^ t[e-valor]>1200}

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Expressando Operao da lgebra
Relacional em Clculo Relacional
 Listar os nomes dos clientes que moram em
Rye e fizeram emprstimo de menos de
1000.
AR => e-nome (e-valor<1000 and c-cidade = Rye
(c-name = e-name (CLIENTES x EMPRSTIMOS)))

CRT => {t | s CLIENTES (s[c-cidade] = Rye ^


u EMPRSTIMOS (s [c-nome] = u[e-nome] ^
u[e-valor]<1000 ^ t[e-nome] = u[e-nome]))}

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


 Com AR (relacionamento)

SELECT C_NOME
FROM CLIENTES, EMPRESTIMOS
WHERE C_NOME = E_NOME AND
E_VALOR < 1000 AND C_CIDADE = 'RYE'

 Com CRT (exists)

SELECT C_NOME
FROM CLIENTES
WHERE EXISTS (SELECT E_NOME
FROM EMPRESTIMOS
WHERE C_NOME = E_NOME AND
E_VALOR < 1000 AND C_CIDADE = 'RYE')
Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon
SQL

n Em SQL (Subconsulta)

SELECT C_NOME
FROM CLIENTES
WHERE C_NOME IN (SELECT E_NOME
FROM EMPRESTIMOS
WHERE E_VALOR < 1000 AND C_CIDADE = 'RYE')

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Outer Join
 Retorna linhas ausentes na outra tabela. O sinal
de adio (+) colocado ao lado do join que no
possui as informaes. Esse tipo de
relacionamento no pode usar operadores In ou
OR.

SELECT C_NOME
FROM CLIENTES, EMPRESTIMOS
WHERE C_NOME = E_NOME (+) AND
E_VALOR (+) < 1000 AND C_CIDADE = 'RYE'

 O que mudou no resultado? Porque?

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Uso do Case
create table test_case_when ( a varchar2(5), b varchar2(5) );

insert into test_case_when values ('*','*');


insert into test_case_when values ('+','+');
insert into test_case_when values ('-','-');
insert into test_case_when values ('.','.');

select a,
case
when b = '*' then 'star'
when b = '+' then 'plus'
when b = '-' then 'minus'
else '????'
end
from test_case_when;

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon


Referncias Bibliogrficas

 KORTH, Henry F. & SILBERSCHATZ,


Abraham. Sistemas de Bancos de
Dados, So Paulo. Ed. Makron Books,
1999.

 IOCHPE, Cirano. Institudo de


Informtica - UFRGS.

Modelo Relacional lgebra e Clculo Relacional Prof. Edson Thizon

También podría gustarte