Professional Documents
Culture Documents
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
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
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
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:
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
comutativa:
<condio 1>(< condio 2>( R)) = <condio 2 (< condio 1>(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:
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
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
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
CP CE
CliId 0102 0202 0203 0304 0101 0303 Nome Lulu Micha Bidu Scooby Nina Bris
Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos
CP CE
CliId 0202 Nome Micha
Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos
CP - CE
CliId 0101 0303 Nome Nina Bris
R-SSR
Sumrio
Linguagens de consulta Exemplo lgebra Relacional
Seleo Projeo Renomeao Unio Interseco Diferena Produto Cartesiano Juno Diviso Exemplos
|RxS|=|R|*|S|
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
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
Produto cartesiano
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
Equi-Juno - exemplo
CP
CliId 0101 Nome Nina
CliIdC
CliId 0101 Placa
AAA0101
Data
10/01/2001
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
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
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?
Exerccios
Quais funcionrios dependentes? no possuem
Exerccios
Quais funcionrios dependentes? no possuem
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.
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?