Post on 24-Nov-2018
Álgebra Relacionale
Cálculo Relacional
Prof. Edson Thizon
SISTEMAS DE INFORMAÇÃO
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Linguagens de consultas formais (1)
� Uma linguagem de consulta (Query Language ) é uma linguagem com a qual o usuário pode requisitar ao Sistema de Gerência de Banco de Dados (SGBD) informações armazenadas no Banco de Dados (BD).
� Linguagens de consulta podem ser:– Procedurais
• O usuário descreve o algoritmo de acesso aos dados através de uma seqüência de instruções (COMO)
– Não procedurais• O usuário descreve a informação que deseja obter
sem descrever como obtê-la (O QUÊ)
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Linguagens de consultas formais (2)
� As linguagens de consulta e atualização comerciais para sistemas relacionais baseiam-se na ÁLGEBRA RELACIONAL (procedural) e no CÁLCULO RELACIONAL (não procedural)
� As operações da álgebra e do cálculo exprimem o conjunto de consultas e manipulações possíveis sobre uma base de dados relacional qualquer
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
� A álgebra apresenta o conjunto mínimo de OPERADORES RELACIONAIS que podem ser combinados para extrair da base de dados, praticamente, todas as informações ali armazenadas (dados e seus relacionamentos)
� O cálculo estende (e completa) a potencialidade da álgebra relacional com a introdução dos quantificadores universal (∀) e existencial (∃)
Linguagens de consultas formais (3)
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Álgebra Relacional (AR)
� Operações fundamentais da Álgebra Relacional:
– Restrição/Seleção (select): σ– Projeção (project): π– Produto Cartesiano (cartesian product): x– União (union): ∪– Diferença (set-difference): -
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Álgebra Relacional (AR)
� Além das 5 operações fundamentais, a Álgebra Relacional oferece as operações:
– INTERSEÇÃO: ∩– JUNÇÃO THETA: Ξθ– JUNÇÃO NATURAL: Ξ– DIVISÃO: ÷
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Operações Fundamentais da Álgebra Relacional
� SELEÇÃO e PROJEÇÃO são operações UNÁRIAS.
� As outras três operações (PRODUTO CARTESIANO, UNIÃO e DIFERENÇA) operam, cada uma, sobre um par de relações.
� As operações da AR sempre operam sobre relações e devolvem como resultado uma relação.
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Relações Usadas nos Exemplos:Relação (tabela) “CLIENTES”
Modelo Relacional Álgebra e Cálculo 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 Cálculo Relacional Prof. Edson Thizon
Relações Usadas nos Exemplos:Relação (tabela) “DEPÓSITOS”
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Script Tabela Depósitos
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 Cálculo Relacional Prof. Edson Thizon
Relações Usadas nos Exemplos:Relação (tabela) “EMPRÉSTIMOS”
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Script Tabela Empréstimos
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',1500INSERT INTO EMPRESTIMOS(E_AGENCIA,E_CODIGO, E_NOME, E_VALOR) VALUES('DOWNTOW',14, 'JACKSON',1500INSERT 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',2000INSERT INTO EMPRESTIMOS(E_AGENCIA,E_CODIGO, E_NOME, E_VALOR) VALUES('PERRYRIDGE',25, 'GLENN',2500INSERT INTO EMPRESTIMOS(E_AGENCIA,E_CODIGO, E_NOME, E_VALOR) VALUES('BRIGHTON',10, 'BROOKS',2200);
COMMIT;
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Seleciona tuplas (linhas) de uma relação (tabela) que satisfazem um determinado predicado (condição)– Formato: – Ex.:Selecione as tuplas da relação
EMPRÉSTIMOS para quais o nome da agência é“Perryridge”
A operação de Seleção
R = σe-agência=‘Perryridge’ (EMPRÉSTIMOS)
RelResultado = σpredicado (RelEntrada)
SELECT *FROM EMPRESTIMOSWHERE E_AGENCIA = 'PERRYRIDGE'
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
� Em geral, os predicados permitem expressar comparações do tipo (<, ≤, >, ≥, = e ≠). Além disso, pode-se relacional com operadores lógicos (and, or, not)
� Exemplos:– Selecione tuplas da relação EMPRÉSTIMOS para as
quais o valor do empréstimo é maior que 1200:
RelResult = σe-valor>1200 (EMPRÉSTIMOS)
– Selecione as tuplas da relação EMPRÉSTIMOS para as quais o nome da agência é “Perryridge e o valor do empréstimo excede 1200:
RelResult = σe-valor>1200 and e-agencia = ‘Perryridge’(EMPRÉSTIMOS)
A operação de Seleção
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
� Copia uma relação de entrada, deixando de fora uma ou mais colunas– Formato:
– Ex.: Obter uma tabela que relacione os clientes do banco com as agências onde fizeram empréstimos:
A Operação de Projeção
Res=πe-agencia, e-nome(EMPRÉSTIMOS)
RelResult=πcolunas a copiar(RelEntrada)
SELECT E_AGENCIA, E_NOMEFROM EMPRESTIMOS
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
� É possível compor operações mais complexas da álgebra relacional através do aninhamento de operações mais simples
� Exemplo: listar os nomes dos clientes que fizeram empréstimos superiores a 1200:
RelResult = ππππe-nome (σσσσe-valor>1200 (EMPRÉSTIMOS))
� A operação de seleção que gera uma relação como resultado pode ser usada como relação de entradapara a operação de projeção
A Operação de Projeção
SELECT DISTINCT E_NOMEFROM (SELECT E_NOME
FROM EMPRESTIMOSWHERE E_VALOR >1200)
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
O Produto Cartesiano� As operações de seleção e projeção permitem
extrair informações de somente uma relação de cada vez.
� A operação de PRODUTO CARTESIANO permite relacionar informações de duas relações.
� Dadas duas relações de entrada, R1 com N tuplase R2 com M tuplas, o produto cartesiano delas éuma relação, contendo (MxN) tuplas. A operação CONCATENA cada tupla de R1 com todas as tuplas de R2.
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
O Produto Cartesiano� Quando, devido a concatenação de tuplas de duas relações
diferentes, RelResult apresenta duas colunas de mesmo nome, cada uma delas recebe, como prefixo, o nome de sua relação de origem
� Exemplo: listar o nome dos clientes que moram em Rye e fizeram empréstimo de menos de 1000.a)RelResult1= CLIENTES x EMPRÉSTIMOS
b)RelResult2= σc-name = e-name (RelResult1)c)RelResult3= σe-valor<1000 and c-cidade = Rye (RelResult2)
SELECT C_NOMEFROM CLIENTES, EMPRESTIMOSWHERE C_NOME = E_NOME ANDE_VALOR < 1000 AND C_CIDADE = 'RYE'
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
A Operação de União� Considere agora que se deseje listar os clientes associados
à agência de “Perryridge”, independente do seu relacionamento com aquela agência (depósito ou empréstimo)
� R1 = ππππ d-nome (σd-agencia = “Perryridge” (DEPÓSITOS)) � R2 = ππππ e-nome (σe-agencia = “Perryridge” (EMPRÉSTIMOS))� Result = R1 U R2
SELECT D_NOME NOMEFROM DEPOSITOSWHERE D_AGENCIA = 'PERRYRIDGE'UNIONSELECT E_NOME NOMEFROM EMPRESTIMOSWHERE E_AGENCIA = 'PERRYRIDGE'
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
A Operação de Diferença� Listar aqueles clientes da agência “Perryridge” que não
fizeram empréstimos naquela agência (têm só conta corrente lá). O que se pede nesta consulta é o conjunto de clientes que têm conta na agência menos o conjunto de nomes de clientes que fizeram empréstimo nesta agência.
� R1 = ππππ d-nome (σd-agencia = “Perryridge” (DEPÓSITOS)) � R2 = ππππ e-nome (σe-agencia = “Perryridge” (EMPRÉSTIMOS))� Result = R1 - R2
SELECT D_NOME NOMEFROM DEPOSITOSWHERE D_AGENCIA = 'PERRYRIDGE'MINUSSELECT E_NOME NOMEFROM EMPRESTIMOSWHERE E_AGENCIA = 'PERRYRIDGE'
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Operações de União e Diferença
� Para as operações UNIÃO e DIFERENÇA serem consideradas corretas, duas condições devem ser satisfeitas:– As relações R1 e R2 têm que apresentar o
mesmo número de atributos.
– Os domínios (tipo de dado) do i-ésimo atributo de R1 e do i-ésimo atributo de R2 devem ser iguais.
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Operadores Adicionais
� Os operadores a seguir não acrescentam qualquer poder à Álgebra Relacional, somente simplificam a construção de consultas.
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
A Operação de Interseção� A INTERSEÇÃO entre duas relações é uma
relação que contém somente as tuplascomuns das duas relações argumentos
� Os requisitos válidos para a UNIÃO e DIFERENÇA valem também para a INTERSEÇÃO
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
A Operação de Interseção
Listar os nomes dos clientes da agência “Perryridge” que tem conta corrente e fizeram empréstimo lá
R1 = ππππ d-nome (σd-agencia = “Perryridge” (DEPÓSITOS)) R2 = ππππ e-nome (σe-agencia = “Perryridge” (EMPRÉSTIMOS))Result = R1 ∩∩∩∩ R2
TR1 ∩∩∩∩ TR2 = TR1 – (TR1 – TR2)
SELECT D_NOME NOMEFROM DEPOSITOSWHERE D_AGENCIA = 'PERRYRIDGE'INTERSECTSELECT E_NOME NOMEFROM EMPRESTIMOSWHERE E_AGENCIA = 'PERRYRIDGE'
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
A Operação de Junção Theta
� Usualmente, consultas que envolvem o produto cartesiano de duas relações incluem também uma operação de seleção sobre as tuplas do produto.
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
A Operação de Junção ThetaA JUNÇÃO THETA é uma operação binária que
combina o produto cartesiano e a seleção em uma única operação. Por exemplo: listar o nome e a cidade vive de cada uma dos clientes devedores da agência “Perryridge”.
ππππ e-nome,c-cidade (σc-nome = e-nome and e-agencia = ‘Perryridge’
(CLIENTES x EMPRÉSTIMOS))
SELECT E_NOME, C_CIDADEFROM CLIENTES, EMPRESTIMOSWHERE C_NOME = E_NOME ANDE_AGENCIA = 'PERRYRIDGE'
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Cálculo Relacional de TuplasLinguagem NÃO PROCEDURAL (declarativa):� O usuário descreve a INFORMAÇÃO que deseja
obter sem descrever como obtê-la ( O QUÊ)
� O Cálculo Relacional de Tuplas (CRT) permite que se defina conjuntos de tuplas a partir de expressões do tipo: {t | P(t)}
� Uma expressão do cálculo relacional representa um conjunto de tuplas onde, para cada tupla t, o predicado P(t) é verdadeiro:
� T ∈ Result ⇒ P(t)
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Cálculo Relacional de Tuplas� Uma Variável Tupla (VT) representa, a cada
instante, uma tupla T de uma determinada relação R. Uma fórmula P(t) pode apresentar mais de uma variável tupla. Em uma determinada fórmula, uma VT pode aparecer como:– Variável Destino: quando estiver associada a um
quantificador existencial ∋ (existe) ou universal ∀ (para todo)
– Variável Livre: em caso contrário ao anteriorExemplo:
AR => σe-agencia = ‘Perryridge’ (EMPRÉSTIMOS)
CRT => {t | t ∈ EMPRÉSTIMOS ^ t[e-agencia]=‘Perryridge’}
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Expressando Operação da Álgebra Relacional em Cálculo Relacional
� Selecione as tuplas da relação EMPRÉSTIMOS para as quais o valor do empréstimo é maior que 1200.
AR => σe-valor > 1200 (EMPRÉSTIMOS)
CRT => {t | t ∈ EMPRÉSTIMOS ^ t[e-valor]>1200}
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Expressando Operação da Álgebra Relacional em Cálculo Relacional
� Listar os nomes dos clientes que moram em Rye e fizeram empréstimo de menos de 1000.AR => ππππ e-nome (σe-valor<1000 and c-cidade = ‘Rye’
(σc-name = e-name (CLIENTES x EMPRÉSTIMOS)))
CRT => {t | ∋ s ∈ CLIENTES (s[c-cidade] = ‘Rye’ ^ ∋ u ∈ EMPRÉSTIMOS (s [c-nome] = u[e-nome] ^ u[e-valor]<1000 ^ t[e-nome] = u[e-nome]))}
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
� Com AR (relacionamento)
� Com CRT (exists)
SELECT C_NOMEFROM CLIENTES, EMPRESTIMOSWHERE C_NOME = E_NOME ANDE_VALOR < 1000 AND C_CIDADE = 'RYE'
SELECT C_NOMEFROM CLIENTESWHERE EXISTS (SELECT E_NOME
FROM EMPRESTIMOSWHERE C_NOME = E_NOME ANDE_VALOR < 1000 AND C_CIDADE = 'RYE')
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
n Em SQL (Subconsulta)
SQL
SELECT C_NOMEFROM CLIENTESWHERE C_NOME IN (SELECT E_NOME
FROM EMPRESTIMOSWHERE E_VALOR < 1000 AND C_CIDADE = 'RYE')
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Outer Join
� Retorna linhas ausentes na outra tabela. O sinal de adição (+) é colocado ao lado do join que não possui as informações. Esse tipo de relacionamento não pode usar operadores In ou OR.
� O que mudou no resultado? Porque?
SELECT C_NOMEFROM CLIENTES, EMPRESTIMOSWHERE C_NOME = E_NOME (+) ANDE_VALOR (+) < 1000 AND C_CIDADE = 'RYE'
Modelo Relacional Álgebra e Cálculo 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 '????'
endfrom test_case_when;
Modelo Relacional Álgebra e Cálculo Relacional Prof. Edson Thizon
Referências Bibliográficas
� KORTH, Henry F. & SILBERSCHATZ, Abraham. Sistemas de Bancos de Dados , São Paulo. Ed. Makron Books, 1999.
� IOCHPE, Cirano. Institudo de Informática - UFRGS.