You are on page 1of 72

MC536

Linguagens de Manipulação de Dados

Sumário
Linguagens de consulta Exemplo Álgebra Relacional
Seleção Projeção Renomeação União Intersecção Diferença Produto Cartesiano Junção Divisão Exemplos

Sumário
Linguagens de consulta Exemplo Álgebra Relacional
Seleção Projeção Renomeação União Intersecção Diferença Produto Cartesiano Junção Divisão Exemplos

Usuário descreve o que ele quer. usuário descreve o que quer fazer. ao invés de como deve ser computado o que ele quer.Linguagens de consulta/manipulação Linguagens de Consulta (Query Languages): Possibilitam a manipulação e recuperação de dados do banco de dados. . SQL): Álgebra Relacional: operacional. Cálculo Relacional: não operacional. Linguagens de Consulta matemáticas formam as bases para linguagens “reais” (ex. declarativo.

Sumário Linguagens de consulta Exemplo Álgebra Relacional Seleção Projeção Renomeação União Intersecção Diferença Produto Cartesiano Junção Divisão Exemplos .

Exemplo – cliente usa táxi CliId Nome data Placa Marca Modelo Ano Cliente 1 N Corrida N 1 Taxi CPF d CGC Cliente Particular Cliente Empresa .

Tabelas Cliente Particular (CP) CliId 0101 0202 0303 Nome Nina Miúcha Bóris Cliente Empresa (CE) CliId 0102 0202 0203 0304 Nome Lulu Miúcha Bidu Scooby .Exemplo .

Tabelas Táxi (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 .

Exemplo de consultas Qual a marca de carro mais requisitada pelos clientes? Em que mês do ano mais corridas são feitas? Qual o nome dos clientes que trabalham na empresa que mais se utiliza do serviço de táxi? .

Sumário Linguagens de consulta Exemplo Álgebra Relacional Seleção Projeção Renomeação União Intersecção Diferença Produto Cartesiano Junção Divisão Exemplos .

produto cartesiano Operações desenvolvidas p/ BDs relacionais: Seleção. junção e renomeação . projeção. intersecção. diferença de conjuntos.Álgebra Relacional Linguagem operacional Entrada e saída das operações são relações Operações Operações da teoria de conjunto matemática União.

Sumário Linguagens de consulta Exemplo Álgebra Relacional Seleção Projeção Renomeação União Intersecção Diferença Produto Cartesiano Junção Divisão Exemplos .

≠. ¬ (não) Termo: <atributo> op <atributo> <atributo> op <constante> op pode ser: =.Operação de Seleção Seleciona um conjunto de tuplas que satisfaçam um dado predicado (uma condição lógica) nos valores dos atributos Notação: σ p(R) P: predicado de seleção Constituído por termos ligados por: ∧ (e). ∨ (ou). < ou ≤ . ≥. >.

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 .Seleção .

Seleção .Exemplo σAno>2001(TX) Placa CCC0303 Marca Ma3 Modelo Mo3 Mo4 Mo5 Ano 2002 2003 2004 DDD0404 Ma4 EEE0505 Ma5 .

Propriedades A operação de seleção é unária A operação σ <condição de seleção>(R) produz relação com mesmo esquema R O grau (número de atributos) de uma relação resultante de uma seleção é o mesmo grau de R O número de tuplas resultante da seleção é: | σ p(R) | ≤ | R | É comutativa: σ <condição 1>(σ< condição 2>( R)) = σ <condição 2 (σ< condição 1>(R)) Cascatas de seleções = uma seleção com conjunção de condições: σ <condição 1>(σ < condição 2> (σ <condição 3> (R))) = σ <condição 1> AND < condição 2> AND < condição 3> (R) .Seleção .

Sumário Linguagens de consulta Exemplo Álgebra Relacional Seleção Projeção Renomeação União Intersecção Diferença Produto Cartesiano Junção Divisão Exemplos .

Ak : atributos da relação R Resultado: relação com as selecionadas k colunas Duplicatas são removidas . ….. . Notação: πA1. A2... Ak (R) A1.Operação de Projeção Seleciona certas colunas da tabela. deixando alguns atributos de lado.

Exemplo πMarca.Projeção .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 .

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 .Projeção .

Modelo(TX) Marca Ma1 Ma2 Ma3 Ma1 Ma5 Modelo Mo1 Mo2 Mo3 Mo1 Mo5 .Exemplo πMarca.Projeção .

Modelo(TX) Marca Ma1 Ma2 Ma3 Ma5 Modelo Mo1 Mo2 Mo3 Mo5 .Exemplo πMarca.Projeção .

Projeção - Propriedades
O número de tuplas na relação resultado | π <lista> (R) | ≤ | R | Não é comutativa

Sumário
Linguagens de consulta Exemplo Álgebra Relacional
Seleção Projeção Renomeação União Intersecção Diferença Produto Cartesiano Junção Divisão Exemplos

Renomeação
Dada R(A1, A2, ... An)
ρ D1 (A1, A2, ... An) (D) D1 (A1, A2, ... An) ← D

σMarca=‘Ma1’TX) Ano 2000 2001 2002 2003 2004 Placa AAA0101 FFF0606 Marca Ma1 Ma1 Modelo Mo1 Mo2 TY Ano 2000 2004 .Renomeação TX Placa AAA0101 BBB0202 CCC0303 DDD0404 EEE0505 Marca Ma1 Ma2 Ma3 Ma1 Ma5 Modelo Mo1 Mo2 Mo3 Mo1 Mo5 ρ(TY.

Sumário Linguagens de consulta Exemplo Álgebra Relacional Seleção Projeção Renomeação União Intersecção Diferença Produto Cartesiano Junção Divisão Exemplos .

União R ∪ S: Relação que contém as tuplas que estão em R. S devem ter igual número de atributos Os domínios dos atributos têm de compatíveis ser .Operações de Conjuntos . S ou ambas R ∪ S = {t | t ∈ R ou t ∈ S} Para R ∪ S ser válida: R.

União Cliente Particular (CP) CliId 0101 0202 0303 Nome Nina Miúcha Bóris CP ∪ CE CliId 0102 0202 0203 0304 0101 0303 Nome Lulu Miúcha Bidu Scooby Nina Bóris Cliente Empresa (CE) CliId 0102 0202 0203 0304 Nome Lulu Miúcha Bidu Scooby .Operações de Conjuntos .

Sumário Linguagens de consulta Exemplo Álgebra Relacional Seleção Projeção Renomeação União Intersecção Diferença Produto Cartesiano Junção Divisão Exemplos .

Intersecção R ∩ S: Relação que contém as tuplas que estão em ambas R e S .Operações de Conjuntos .

Operações de Conjuntos .Intersecção Cliente Particular (CP) CliId 0101 0202 0303 Nome Nina Miúcha Bóris CP ∩ CE CliId 0202 Nome Miúcha Cliente Empresa (CE) CliId 0102 0202 0203 0304 Nome Lulu Miúcha Bidu Scooby .

Sumário Linguagens de consulta Exemplo Álgebra Relacional Seleção Projeção Renomeação União Intersecção Diferença Produto Cartesiano Junção Divisão Exemplos .

Operações de Conjuntos .S: Relação que contém as tuplas que estão em R e que não estão em S .Diferença R .

Diferença Cliente Particular (CP) CliId 0101 0202 0303 Nome Nina Miúcha Bóris CP .CE CliId 0101 0303 Nome Nina Bóris Cliente Empresa (CE) CliId 0102 0202 0203 0304 Nome Lulu Miúcha Bidu Scooby .Operações de Conjuntos .

Propriedades União e interseção são comutativas: R∪S=S∪R R∩S=S∩R E associativas: R ∪ (S ∪ T) = (R ∪ S) ∪ T (R ∩ S) ∩ T = R ∩ (S ∩ T) Diferença não é comutativa R-S≠S–R .Operações de Conjuntos .

Sumário Linguagens de consulta Exemplo Álgebra Relacional Seleção Projeção Renomeação União Intersecção Diferença Produto Cartesiano Junção Divisão Exemplos .

.. B2. . B1.Produto Cartesiano Permite combinar informações de duas relações R(A1. An. Bm) é uma relação Q(A1... Bm ) |RxS|=|R|*|S| . ... .. A2...... A2. An) x S(B1. B2..Operações de Conjunto .

Operações de Conjunto .Produto Cartesiano CP x C CliId 0101 0101 Nome Nina Nina Miúcha Miúcha Bóris Bóris 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 Miúcha Bóris 0202 0202 0303 0303 Corrida (C) CliId 0101 0203 Placa AAA0101 DDD0404 Data 10/01/2001 20/02/2002 .

Sumário Linguagens de consulta Exemplo Álgebra Relacional Seleção Projeção Renomeação União Intersecção Diferença Produto Cartesiano Junção Divisão Exemplos .

An) S(B1. Dadas as relações: R(A1.. ... Bm) R <condição da junção> S contém todas as tuplas do produto cartesiano que satisfazem a condição. B2.Junção Combina as tuplas relacionadas em duas relações R e S dentro de uma tupla única.. A2.. .. .

exemplo CP CliId 0101 0101 Nome Nina Nina Miúcha Miúcha Bóris Bóris CP.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 condição Produto cartesiano 0202 0202 0303 0303 .CliId<C.Junção .

CliIdC CliId 0203 0203 Placa DDD0404 DDD0404 Data 20/02/2002 20/02/2002 .exemplo CP CliId 0101 0202 Nome Nina Miúcha CP.CliId<C.Junção .

B2.. An.. B1. .. 0 ≤| R S |≤|R|*|S| . A2. Bm ) Número de tuplas na junção: ...Junção R S é uma relação Q(A1..

.Equi-Junção Um caso especial de junção condicional em que a condição contém somente igualdades.

exemplo CP CliId 0101 0101 Nome Nina Nina Miúcha Miúcha Bóris Bóris 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-junção em CliId .Equi-Junção .

Equi-Junção .exemplo CP CliId 0101 Nome Nina CliIdC CliId 0101 Placa AAA0101 Data 10/01/2001 .

((R-S) ∪ (S-R)) R |X|<condição>S = σ<condição>(R X S) . -.Conjunto Completo de Operadores {π. σ . X} Qualquer outro operador pode ser expresso através dos operadores deste conjunto R ∩ S = (R ∪ S) . ∪.

Sumário Linguagens de consulta Exemplo Álgebra Relacional Seleção Projeção Renomeação União Intersecção Diferença Produto Cartesiano Junção Divisão Exemplos .

Divisão Não é tem um operador primitivo É útil para expressar consultas como: Encontre clientes que tenham andado em táxis de uma certa marca .

há uma tupla xy em A. Ou: Se o conjunto de valores y (marca do táxi) associados com valores x (clientes) em A contiverem todos os valores y em B.Divisão x e y podem ser quaisquer listas de campos x ∪ y é a lista de campos na relação A y é a lista de campos na relação B A/B A/B = { <x> | ∃ <x. o valor x está em A/B. .y> ∈ A ∀ <y> ∈ B} A/B contém todas tuplas x (clientes) tal que para cada tupla y (táxi de marca MA1) em B.

Divisão .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 A/B1 A/B2 A/B3 .

Divisão 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 táxis da marca Ma1 0202 0303 0404 0404 0404 .

Placa(Corrida)) ρ(Taxi2.πPlaca(TY)) Taxi2 Placa AAA0101 FFF0606 .πClId.Divisão Corrida2 CliId 0101 0101 0202 0202 0303 0404 0404 0404 Placa AAA0101 FFF0606 FFF0606 BBB0202 DDD0404 AAA0101 FFF0606 DDD0404 ρ(Corrida2.

Divisão 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 .

Sumário Linguagens de consulta Exemplo Álgebra Relacional Seleção Projeção Renomeação União Intersecção Diferença Produto Cartesiano Junção Divisão Exemplos .

nomef) D(numfd.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 .nomed.Exercícios – Funcionários e Dependentes F(numfd.

Exercícios Quais os nomes e parentescos de todos os dependentes? .

Exercícios Quais os nomes e parentescos de todos os dependentes? πnomed.par (D) .

Exercícios Quais funcionários possuem dependentes filhas? .

Exercícios Quais funcionários possuem dependentes filhas? πnumfd (σpar=‘filha’ (D)) .

Exercícios Quais funcionários dependentes? não possuem .

Exercícios Quais funcionários dependentes? não possuem πnumfd (F) .πnumfd (D) .

Quais funcionários não têm Alice como dependente? .Exercícios Dê os nomes dos funcionários que possuem algum dependente. Dê o nome de cada funcionário que possui uma dependente chamada Alice.

Exercícios Dê os nomes dos funcionários possuem algum dependente. que πnomef (F |X| D) .

Exercícios Dê o nome de cada funcionário que possui uma dependente chamada Alice. πnomef (F |X|(σnomed=‘Alice’ (D))) .

Exercícios Quais funcionários não têm Alice como dependente? πnumfd (D) .πnumfd (σnomed=‘Alice’ (D)) .

Exercícios .

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

Banco . uma conta.consultas Determinar todos os empréstimos superiores a $1200 Encontrar os números dos empréstimos de montante superior a $1200 Listar os nomes de todos os clientes que têm um empréstimo. Determinar todos os clientes que têm um empréstimo na agência de Perryridge. Determinar todos os clientes que têm um empréstimo na agência de Perryridge. Listar os nomes dos clientes que possuem um empréstimo na agência de Perryridge mas que não tem nenhuma conta no banco. Determinar o saldo mais elevado entre todas as contas . ou ambas as coisas Encontrar os clientes que têm um empréstimo e uma conta no banco.

idade) fármacos(codF.nomeP.nomeF) consultas(nConsulta.nBI.especialidade) pacientes(nBI.nConsulta.nomeM.morada.Clínica médicos(nEmpr.nEmpr) receitas(codF.quantidade) .data.telefone.

Clínica .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 fármacos que já foram receitados em consultas da clínica? Quais os fármacos que nunca foram receitados? Qual a idade do paciente mais velho? E quais os (nomes dos) pacientes com essa idade? .