Você está na página 1de 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
Cliente
Taxi
Corrida
1 N
N 1
CliId
Nome
CPF
Cliente
Particular
Cliente
Empresa
CGC
d
data Placa
Marca
Modelo
Ano
Exemplo - Tabelas
CliId Nome
0101 Nina
0202 Micha
0303 Bris
Cliente Particular (CP)
Cliente Empresa (CE)
CliId Nome
0102 Lulu
0202 Micha
0203 Bidu
0304 Scooby
Exemplo - Tabelas
Placa Marca Modelo Ano
AAA0101 Ma1 Mo1 2000
BBB0202 Ma2 Mo2 2001
CCC0303 Ma3 Mo3 2002
DDD0404 Ma4 Mo4 2003
EEE0505 Ma5 Mo5 2004
CliId Placa Data
0101 AAA0101
10/01/2001
0203 DDD0404
20/02/2002
Txi (TX)
Corrida (C)
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 Marca Modelo Ano
AAA0101 Ma1 Mo1 2000
BBB0202 Ma2 Mo2 2001
CCC0303 Ma3 Mo3 2002
DDD0404 Ma4 Mo4 2003
EEE0505 Ma5 Mo5 2004
Seleo - Exemplo

Ano>2001
(TX)
Placa Marca Modelo Ano
CCC0303 Ma3 Mo3 2002
DDD0404 Ma4 Mo4 2003
EEE0505 Ma5 Mo5 2004
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)
A
1
, ..., A
k
: atributos da relao R
Resultado: relao com as k colunas
selecionadas
Duplicatas so removidas
Projeo - Exemplo

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

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

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

Marca,Modelo
(TX)
Marca Modelo
Ma1 Mo1
Ma2 Mo2
Ma3 Mo3
Ma5 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)
D
1
(A1, A2, ... An) (D)
D
1
(A1, A2, ... An) D
Renomeao
(TY,
Marca=Ma1
TX)
TX
Placa Marca Modelo Ano
AAA0101 Ma1 Mo1 2000
BBB0202 Ma2 Mo2 2001
CCC0303 Ma3 Mo3 2002
DDD0404 Ma1 Mo1 2003
EEE0505 Ma5 Mo5 2004
Placa Marca Modelo Ano
AAA0101 Ma1 Mo1 2000
FFF0606 Ma1 Mo2 2004
TY
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 ser
compatveis
Operaes de Conjuntos - Unio
CliId Nome
0101 Nina
0202 Micha
0303 Bris
Cliente Particular (CP)
Cliente Empresa (CE)
CliId Nome
0102 Lulu
0202 Micha
0203 Bidu
0304 Scooby
CliId Nome
0102 Lulu
0202 Micha
0203 Bidu
0304 Scooby
0101 Nina
0303 Bris
CP CE
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
CliId Nome
0101 Nina
0202 Micha
0303 Bris
Cliente Particular (CP)
Cliente Empresa (CE)
CliId Nome
0102 Lulu
0202 Micha
0203 Bidu
0304 Scooby
CliId Nome
0202 Micha
CP CE
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
CliId Nome
0101 Nina
0202 Micha
0303 Bris
Cliente Particular (CP)
Cliente Empresa (CE)
CliId Nome
0102 Lulu
0202 Micha
0203 Bidu
0304 Scooby
CliId Nome
0101 Nina
0303 Bris
CP - CE
Operaes de Conjuntos - Propriedades
Unio e interseo so comutativas:
R S = S R
R S = S R
E associativas:
R (S T) = (R S) T
(R S) T = R (S T)
Diferena no comutativa
R - S S R
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(A
1
, A
2
, ..., A
n
) x S(B
1
, B
2
, ..., B
m
)
uma relao Q(A
1
, A
2
, ..., A
n
, B
1
, B
2
, ...,
B
m
)
| R x S | = | R | * | S |
Operaes de Conjunto - Produto
Cartesiano
CliId Nome
0101 Nina
0202 Micha
0303 Bris
CP
CliId Placa Data
0101 AAA0101
10/01/2001
0203 DDD0404
20/02/2002
Corrida (C)
CP x C
CliId Nome CliId Placa Data
0101 Nina 0101
AAA0101 10/01/2001
0101 Nina 0203
DDD0404 20/02/2002
0202 Micha 0101
AAA0101 10/01/2001
0202 Micha 0203
DDD0404 20/02/2002
0303 Bris 0101
AAA0101 10/01/2001
0303 Bris 0203
DDD0404 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(A
1
, A
2
, ..., A
n
)
S(B
1
, B
2
, ..., B
m
)
R
<condio da juno>
S contm todas as
tuplas do produto cartesiano que
satisfazem a condio.
Juno - exemplo
CP
CP.CliId<C.CliId
C
CliId Nome CliId Placa Data
0101 Nina 0101
AAA0101 10/01/2001
0101 Nina 0203
DDD0404 20/02/2002
0202 Micha 0101
AAA0101 10/01/2001
0202 Micha 0203
DDD0404 20/02/2002
0303 Bris 0101
AAA0101 10/01/2001
0303 Bris 0203
DDD0404 20/02/2002
Produto
cartesiano
Tuplas que
satisfazem
a condio
Juno - exemplo
CP
CP.CliId<C.CliId
C
CliId Nome CliId Placa Data
0101 Nina 0203
DDD0404 20/02/2002
0202 Micha 0203
DDD0404 20/02/2002
Juno
R S uma relao Q(A
1
, A
2
, ..., A
n
,
B
1
, B
2
, ..., B
m
)
Nmero de tuplas na juno:
0 | R S | | R | * | S |
Equi-Juno
Um caso especial de juno condicional
em que a condio contm somente
igualdades.
Equi-Juno - exemplo
CP
CliId
C
CliId Nome CliId Placa Data
0101 Nina 0101
AAA0101 10/01/2001
0101 Nina 0203
DDD0404 20/02/2002
0202 Micha 0101
AAA0101 10/01/2001
0202 Micha 0203
DDD0404 20/02/2002
0303 Bris 0101
AAA0101 10/01/2001
0303 Bris 0203
DDD0404 20/02/2002
Produto
cartesiano
Tuplas que
satisfazem
equi-juno
em CliId
Equi-Juno - exemplo
CP
CliId
C
CliId Nome CliId Placa Data
0101 Nina 0101
AAA0101 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 Y
x1 y1
X1 y2
X1 y3
X1 y4
x2 y1
x2 y2
x3 y2
X4 y2
x4 y4
Y
y2
Y
y2
y4
Y
y1
y2
y4
X
x1
x2
x3
x4
X
x1
x4
X
x1
A
B3
B2
B1
A/B1
A/B2 A/B3
Diviso
CliId Placa Data
0101 AAA0101
10/01/2001
0101 FFF0606
0202 FFF0606
0202 BBB0202
0303 DDD0404
0404 AAA0101
0404 FFF0606
19/02/2002
0404 DDD0404
20/02/2002
TY
Corrida (C)
Placa Marca Modelo Ano
AAA0101 Ma1 Mo1 2000
FFF0606 Ma1 Mo2 2004
Consulta:
Encontrar clientes que tenham
andado em txis da marca Ma1
Diviso
CliId Placa
0101 AAA0101
0101 FFF0606
0202 FFF0606
0202 BBB0202
0303 DDD0404
0404 AAA0101
0404 FFF0606
0404 DDD0404
Corrida2
Placa
AAA0101
FFF0606
(Corrida2,
ClId,Placa
(Corrida))
(Taxi2,
Placa
(TY))
Taxi2
Diviso
CliId Placa
0101 AAA0101
0101 FFF0606
0202 FFF0606
0202 BBB0202
0303 DDD0404
0404 AAA0101
0404 FFF0606
0404 DDD0404
Corrida2
Placa
AAA0101
FFF0606
Taxi2
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)
D
numfd nomed par
01 Alice filha
02 Alice esposa
02 Clara filha
03 Jos filho
F
numfd nomef
01 F1
02 F2
03 F3
04 F4
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 no possuem
dependentes?
Exerccios
Quais funcionrios no possuem
dependentes?

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 que
possuem algum dependente.

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?

Você também pode gostar