You are on page 1of 72

MC536

Linguagens de Manipulao de Dados

Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos

Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos

Linguagens de consulta/manipulao
Linguagens de Consulta (Query Languages):
Possibilitam a manipulao e recuperao de dados do banco de dados.

Linguagens de Consulta matemticas formam as bases para linguagens reais (ex. SQL):
lgebra Relacional: operacional, usurio descreve o que quer fazer. Clculo Relacional: no operacional, declarativo. Usurio descreve o que ele quer, ao invs de como deve ser computado o que ele quer.

Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos

Exemplo cliente usa txi


CliId Nome data Placa Marca Modelo Ano

Cliente

N Corrida N

Taxi

CPF

d
CGC

Cliente Particular

Cliente Empresa

Exemplo - Tabelas
Cliente Particular (CP)
CliId 0101 0202 0303 Nome Nina Micha Bris

Cliente Empresa (CE)


CliId 0102 0202 0203 0304 Nome Lulu Micha Bidu Scooby

Exemplo - Tabelas
Txi (TX)
Placa AAA0101 BBB0202 CCC0303 DDD0404 EEE0505 Marca Ma1 Ma2 Ma3 Ma4 Ma5 Modelo Mo1 Mo2 Mo3 Mo4 Mo5 Ano 2000 2001 2002 2003 2004

Corrida (C)
CliId 0101 0203 Placa AAA0101 DDD0404 Data
10/01/2001 20/02/2002

Exemplo de consultas
Qual a marca de carro mais requisitada pelos clientes? Em que ms do ano mais corridas so feitas? Qual o nome dos clientes que trabalham na empresa que mais se utiliza do servio de txi?

Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos

lgebra Relacional
Linguagem operacional
Entrada e sada das operaes so relaes

Operaes
Operaes da teoria de conjunto matemtica
Unio, interseco, diferena de conjuntos, produto cartesiano

Operaes desenvolvidas p/ BDs relacionais:


Seleo, projeo, juno e renomeao

Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos

Operao de Seleo
Seleciona um conjunto de tuplas que satisfaam um dado predicado (uma condio lgica) nos valores dos atributos Notao: p(R) P: predicado de seleo
Constitudo por termos ligados por: (e), (ou), (no) Termo:

<atributo> op <atributo> <atributo> op <constante> op pode ser: =, , >, , < ou

Seleo - Exemplo

Ano>2001(TX)
Placa AAA0101 BBB0202 CCC0303 DDD0404 EEE0505 Marca Ma1 Ma2 Ma3 Ma4 Ma5 Modelo Mo1 Mo2 Mo3 Mo4 Mo5 Ano 2000 2001 2002 2003 2004

Seleo - Exemplo

Ano>2001(TX)
Placa CCC0303 Marca Ma3 Modelo Mo3 Mo4 Mo5 Ano 2002 2003 2004 DDD0404 Ma4 EEE0505 Ma5

Seleo - Propriedades
A operao de seleo unria A operao <condio de seleo>(R) produz relao com mesmo esquema R
O grau (nmero de atributos) de uma relao resultante de uma seleo o mesmo grau de R

O nmero de tuplas resultante da seleo :


| p(R) | | R |

comutativa:
<condio 1>(< condio 2>( R)) = <condio 2 (< condio 1>(R))

Cascatas de selees = uma seleo com conjuno de condies:


<condio 1>( < condio 2> ( <condio 3> (R))) = <condio 1> AND < condio 2> AND < condio 3> (R)

Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos

Operao de Projeo
Seleciona certas colunas da tabela, deixando alguns atributos de lado. Notao:

A1, A2, , Ak (R)


A1, ..., Ak : atributos da relao R Resultado: relao com as selecionadas k colunas

Duplicatas so removidas

Projeo - Exemplo

Marca,Modelo(TX)
Placa AAA0101 BBB0202 CCC0303 Marca Ma1 Ma2 Ma3 Modelo Mo1 Mo2 Mo3 Mo1 Mo5 Ano 2000 2001 2002 2003 2004

DDD0404 Ma1 EEE0505 Ma5

Projeo - Exemplo

Marca,Modelo(TX)
Placa AAA0101 BBB0202 CCC0303 Marca Ma1 Ma2 Ma3 Modelo Mo1 Mo2 Mo3 Mo1 Mo5 Ano 2000 2001 2002 2003 2004

DDD0404 Ma1 EEE0505 Ma5

Projeo - Exemplo

Marca,Modelo(TX)
Marca Ma1 Ma2 Ma3 Ma1 Ma5 Modelo Mo1 Mo2 Mo3 Mo1 Mo5

Projeo - Exemplo

Marca,Modelo(TX)
Marca Ma1 Ma2 Ma3 Ma5 Modelo Mo1 Mo2 Mo3 Mo5

Projeo - Propriedades
O nmero de tuplas na relao resultado | <lista> (R) | | R | No comutativa

Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos

Renomeao
Dada R(A1, A2, ... An)
D1 (A1, A2, ... An) (D) D1 (A1, A2, ... An) D

Renomeao
TX
Placa AAA0101 BBB0202 CCC0303 DDD0404 EEE0505 Marca Ma1 Ma2 Ma3 Ma1 Ma5 Modelo Mo1 Mo2 Mo3 Mo1 Mo5

(TY,Marca=Ma1TX)
Ano 2000 2001 2002 2003 2004 Placa AAA0101 FFF0606 Marca Ma1 Ma1 Modelo Mo1 Mo2

TY
Ano 2000 2004

Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos

Operaes de Conjuntos - Unio


R S:
Relao que contm as tuplas que esto em R, S ou ambas

R S = {t | t R ou t S} Para R S ser vlida:


R, S devem ter igual nmero de atributos Os domnios dos atributos tm de compatveis ser

Operaes de Conjuntos - Unio


Cliente Particular (CP)
CliId 0101 0202 0303 Nome Nina Micha Bris

CP CE
CliId 0102 0202 0203 0304 0101 0303 Nome Lulu Micha Bidu Scooby Nina Bris

Cliente Empresa (CE)


CliId 0102 0202 0203 0304 Nome Lulu Micha Bidu Scooby

Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos

Operaes de Conjuntos - Interseco


R S:
Relao que contm as tuplas que esto em ambas R e S

Operaes de Conjuntos - Interseco


Cliente Particular (CP)
CliId 0101 0202 0303 Nome Nina Micha Bris

CP CE
CliId 0202 Nome Micha

Cliente Empresa (CE)


CliId 0102 0202 0203 0304 Nome Lulu Micha Bidu Scooby

Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos

Operaes de Conjuntos - Diferena


R - S:
Relao que contm as tuplas que esto em R e que no esto em S

Operaes de Conjuntos - Diferena


Cliente Particular (CP)
CliId 0101 0202 0303 Nome Nina Micha Bris

CP - CE
CliId 0101 0303 Nome Nina Bris

Cliente Empresa (CE)


CliId 0102 0202 0203 0304 Nome Lulu Micha Bidu Scooby

Operaes de Conjuntos - Propriedades


Unio e interseo so comutativas: RS=SR RS=SR E associativas: R (S T) = (R S) T (R S) T = R (S T) Diferena no comutativa

R-SSR

Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos

Operaes de Conjunto - Produto Cartesiano


Permite combinar informaes de duas relaes R(A1, A2, ..., An) x S(B1, B2, ..., Bm) uma relao Q(A1, A2, ..., An, B1, B2, ..., Bm )

|RxS|=|R|*|S|

Operaes de Conjunto - Produto Cartesiano


CP x C
CliId 0101 0101 Nome Nina Nina Micha Micha Bris Bris CliId 0101 0203 0101 0203 0101 0203 Placa
AAA0101 DDD0404 AAA0101 DDD0404 AAA0101 DDD0404

Data
10/01/2001 20/02/2002 10/01/2001 20/02/2002 10/01/2001 20/02/2002

CP
CliId 0101 0202 0303 Nome Nina Micha Bris

0202 0202 0303 0303

Corrida (C)
CliId 0101 0203 Placa AAA0101 DDD0404 Data
10/01/2001 20/02/2002

Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos

Juno
Combina as tuplas relacionadas em duas relaes R e S dentro de uma tupla nica. Dadas as relaes:
R(A1, A2, ..., An) S(B1, B2, ..., Bm)

R <condio da juno> S contm todas as tuplas do produto cartesiano que satisfazem a condio.

Juno - exemplo
CP
CliId 0101 0101 Nome Nina Nina Micha Micha Bris Bris

CP.CliId<C.CliIdC
CliId 0101 0203 0101 0203 0101 0203 Placa
AAA0101 DDD0404 AAA0101 DDD0404 AAA0101 DDD0404

Data
10/01/2001 20/02/2002 10/01/2001 20/02/2002 10/01/2001 20/02/2002

Tuplas que satisfazem a condio

Produto cartesiano

0202 0202 0303 0303

Juno - exemplo
CP
CliId 0101 0202 Nome Nina Micha

CP.CliId<C.CliIdC
CliId 0203 0203 Placa
DDD0404 DDD0404

Data
20/02/2002 20/02/2002

Juno
R S uma relao Q(A1, A2, B1, B2, ..., Bm ) Nmero de tuplas na juno: ..., An,

0 | R

||R|*|S|

Equi-Juno
Um caso especial de juno condicional em que a condio contm somente igualdades.

Equi-Juno - exemplo
CP
CliId 0101 0101 Nome Nina Nina Micha Micha Bris Bris

CliIdC
CliId 0101 0203 0101 0203 0101 0203 Placa
AAA0101 DDD0404 AAA0101 DDD0404 AAA0101 DDD0404

Data
10/01/2001 20/02/2002 10/01/2001 20/02/2002 10/01/2001 20/02/2002

Produto cartesiano

0202 0202 0303 0303

Tuplas que satisfazem equi-juno em CliId

Equi-Juno - exemplo
CP
CliId 0101 Nome Nina

CliIdC
CliId 0101 Placa
AAA0101

Data
10/01/2001

Conjunto Completo de Operadores


{, , , -, X}
Qualquer outro operador pode ser expresso atravs dos operadores deste conjunto R S = (R S) - ((R-S) (S-R))
R |X|<condio>S = <condio>(R X S)

Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos

Diviso
No tem um operador primitivo til para expressar consultas como:
Encontre clientes que tenham andado em txis de uma certa marca

Diviso
x e y podem ser quaisquer listas de campos
x y a lista de campos na relao A y a lista de campos na relao B

A/B
A/B = { <x> | <x,y> A <y> B} A/B contm todas tuplas x (clientes) tal que para cada tupla y (txi de marca MA1) em B, h uma tupla xy em A. Ou: Se o conjunto de valores y (marca do txi) associados com valores x (clientes) em A contiverem todos os valores y em B, o valor x est em A/B.

Diviso - exemplo
X x1 X1 X1 X1 x2 x2 x3 X4 x4 Y y1 y2 y3 y4 y1 y2 y2 y2 y4 x1 x2 x3 x4 x1 x4 x1 X X X y2 Y y2 y4 Y y1 y2 y4 Y

B1

B2

B3

A/B1

A/B2

A/B3

Diviso
TY
Placa AAA0101 FFF0606 Marca Ma1 Ma1 Modelo Mo1 Mo2 Ano 2000 2004 CliId 0101 0101 0202 Placa AAA0101 FFF0606 FFF0606 BBB0202 DDD0404 AAA0101 FFF0606 DDD0404
19/02/2002 20/02/2002

Corrida (C)
Data
10/01/2001

Consulta: Encontrar clientes que tenham andado em txis da marca Ma1

0202 0303 0404 0404 0404

Diviso
Corrida2
CliId 0101 0101 0202 0202 0303 0404 0404 0404 Placa AAA0101 FFF0606 FFF0606 BBB0202 DDD0404 AAA0101 FFF0606 DDD0404

(Corrida2,ClId,Placa(Corrida))

(Taxi2,Placa(TY))

Taxi2
Placa AAA0101 FFF0606

Diviso
Corrida2
CliId 0101 0101 0202 0202 0303 0404 0404 0404 Placa AAA0101 FFF0606 FFF0606 BBB0202 DDD0404 AAA0101 FFF0606 DDD0404

Taxi2
Placa AAA0101 FFF0606

Corrida2/Taxi2
CliId 0101 0404

Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos

Exerccios Funcionrios e Dependentes


F(numfd,nomef) D(numfd,nomed,par)

F numfd 01 02 03 04 nomef F1 F2 F3 F4 numfd 01 02 02 03

D nomed Alice Alice Clara Jos

par filha esposa filha filho

Exerccios
Quais os nomes e parentescos de todos os dependentes?

Exerccios
Quais os nomes e parentescos de todos os dependentes?

nomed,par (D)

Exerccios
Quais funcionrios possuem dependentes filhas?

Exerccios
Quais funcionrios possuem dependentes filhas?

numfd (par=filha (D))

Exerccios
Quais funcionrios dependentes? no possuem

Exerccios
Quais funcionrios dependentes? no possuem

numfd (F) - numfd (D)

Exerccios
D os nomes dos funcionrios que possuem algum dependente. D o nome de cada funcionrio que possui uma dependente chamada Alice. Quais funcionrios no tm Alice como dependente?

Exerccios
D os nomes dos funcionrios possuem algum dependente. que

nomef (F |X| D)

Exerccios
D o nome de cada funcionrio que possui uma dependente chamada Alice.

nomef (F |X|(nomed=Alice (D)))

Exerccios
Quais funcionrios no tm Alice como dependente?
numfd (D) - numfd (nomed=Alice (D))

Exerccios

Banco
branch (branch-name, branch-city, assets) customer (customer-name, customer-street, customer-only) account (account-number, branch-name, balance) loan (loan-number, branch-name, amount) depositor (customer-name, account-number) borrower (customer-name, loan-number)

Banco - consultas
Determinar todos os emprstimos superiores a $1200 Encontrar os nmeros dos emprstimos de montante superior a $1200 Listar os nomes de todos os clientes que tm um emprstimo, uma conta, ou ambas as coisas Encontrar os clientes que tm um emprstimo e uma conta no banco. Determinar todos os clientes que tm um emprstimo na agncia de Perryridge. Listar os nomes dos clientes que possuem um emprstimo na agncia de Perryridge mas que no tem nenhuma conta no banco. Determinar todos os clientes que tm um emprstimo na agncia de Perryridge. Determinar o saldo mais elevado entre todas as contas

Clnica
mdicos(nEmpr,nomeM,especialidade) pacientes(nBI,nomeP,telefone,morada,idade) frmacos(codF,nomeF) consultas(nConsulta,data,nBI,nEmpr) receitas(codF,nConsulta,quantidade)

Clnica - consultas
Quais os pacientes com mais de 50 anos de idade? Quais os nomes dos pacientes com mais de 50 anos de idade? Quais os frmacos que j foram receitados em consultas da clnica? Quais os frmacos que nunca foram receitados? Qual a idade do paciente mais velho? E quais os (nomes dos) pacientes com essa idade?