Banco de Dados I 2007 - Computação Unioesteclodis/BDI/BDI_2007_Modulo3_2.pdf · Álgebra...

22
Módulo III: Linguagens de Consulta (Aula 2) Clodis Boscarioli Banco de Dados I 2007

Transcript of Banco de Dados I 2007 - Computação Unioesteclodis/BDI/BDI_2007_Modulo3_2.pdf · Álgebra...

Módulo III: Linguagens de Consulta

(Aula 2)

Clodis Boscarioli

Banco de Dados I

2007

� Álgebra Relacional;

� Operador Divisão;

� Álgebra Relacional Estendida.

Agenda:

Operações Adicionais

� Divisão

�Operação adicional, binária. Denotada pelo símbolo ÷.

� Implementa o quantificador universal “Para todos”.

� A relação r ÷ s, é uma relação no esquema r – s, ou seja, uma relação contendo todos os atributos do esquema R que não estão em S, com as tuplas que satisfazem as condições abaixo:

� t está em ππππR-S(r)

� Para toda tupla ts em s existe uma tupla tr em r satisfazendo ambas as condições

� tr[S] = ts[S]

� tr[R-S] = t

Operações Adicionais

� Divisão – A fórmula:

r ÷ s = ππππR-S (r) - ππππR-S ((ππππR-S (r) x s) – r)

� Exemplo: encontre todos os clientes que tenham conta em todas as agências localizadas no Brooklyn.

Operações Adicionais

� Resolvendo:

π nome_cliente, nome_agência (depositante |x| conta)

π nome_agência ( σ cidade_agência = “Brooklyn” (agência))

BrightonJones

BrightonJohnson

RedwoodLindsay

PerryridgeWilliams

Round HillTurner

PerryridgeHayes

MianusSmith

DowntownJones

nome_agêncianome_cliente

Downtown

Brighton

nome_agência÷÷÷÷

= Jones

÷÷÷÷

Álgebra Relacional Estendida

� Projeção Generalizada� Permite que funções aritméticas sejam usadas em

listas de projeções.π F1, F2, ..., Fn (E)

Onde E é qualquer expressão em álgebra relacional e cada F1, F2, ... Fn são expressões aritméticas envolvendo constantes e atributos no esquema E.

Suponha o esquema info-crédito(nome_cliente, limite, saldo_crédito). Quanto uma pessoa ainda pode gastar?

π nome_cliente, limite - saldo_crédito (info_crédito)

Álgebra Relacional Estendida

� Junção Externa� Suponha os esquemas:

empregado (nome_empregado, rua, cidade)

trabalhador_ti (nome_empregado, nome_agência, salário)

Uma relação simples que combina todas as informações acima é possível com a seguinte expressão:

empregado |x| trabalhador_ti

Analise o seguinte exemplo de execução desta consulta:

Álgebra Relacional Estendida

SeatleSeaviewWilliams

Death ValleyRevolverSmith

CarrotvilleTunnelRabbit

HollywoodToonCoyote

cidaderuanome_empregado

1500ReadmondWilliams

5300RedmondGates

1300MesaRabbit

1500MesaCoyote

salárionome_agêncianome_empregado

empregado |x| trabalhador_ti

1500RedmondSeatleSeaviewWilliams

1300MesaCarrotvilleTunnelRabbit

1500MesaHollywoodToonCoyote

salárionome_agênciacidaderuanome-empregado

Álgebra Relacional Estendida

� Note que as informações sobre Smith não entraram na relação� Informações sobre a rua do Smith� Informações sobre a agência e salário de Gates

� Junção externa pode ser usada para resolver esse problema. Ela pode assumir três formas:

� Junção externa à esquerda:� Junção externa à direita:� Junção externa total:

Álgebra Relacional Estendida

NulonuloDeath VilleyRevolverSmith

1500RedmondSeatleSeaviewWilliams

1300MesaCarrotvilleTunnelRabbit

1500MesaHollywoodToonCoyote

salárionome_agênciacidaderuanome-empregado

5300RedmondnulonuloGates

1500RedmondSeatleSeaviewWilliams

1300MesaCarrotvilleTunnelRabbit

1500MesaHollywoodToonCoyote

salárionome_agênciacidaderuanome-empregado

NulonuloDeath VilleyRevolverSmith

5300RedmondnulonuloGates

1500RedmondSeatleSeaviewWilliams

1300MesaCarrotvilleTunnelRabbit

1500MesaHollywoodToonCoyote

salárionome_agênciacidaderuanome-empregado

Álgebra Relacional Estendida

� Funções Agregadas:

São aquelas que, quando aplicadas, tomam uma coleção de valores e retornam um valor simples como resultado.

� Sum (soma): toma uma coleção de valores e retorna a soma deles.

� Avg (média): retorna a média dos valores dados.

� Count (contar): retorna o número de elementos de uma coleção.

� Min e Max: retornam, respectivamente, o valor mínimo e máximo de uma coleção.

Álgebra Relacional Estendida

1300PerryridgeBrown

1500PerryridgeAdams

5300PerryridgeGopal

1500AustinRao

1600AustinSato

2500DowntownPeterson

1300DowntownLoreena

1500DowntownJohnson

SalárioNome-agênciaNome-empregado

sum salário (trabalhador_ti) 16500

count-distinct nome_agência (trabalhadores-ti) 3

Por agrupamento: nome_agência ϑ sum salário (trabalhadores-ti) Downtown 5300Austin 3100 Perryridge 8100

Álgebra Relacional Estendida

nome_agência ϑ sum salario max salario (trabalhadores_ti)

53007900Perryridge

16003100Austin

25005500Downtown

salário máximosoma salárionome_agência

Modificações no Banco de Dados

� Exclusão: exclusão de tuplas inteiras:

r � r – E

� Excluir todas as contas do cliente Smithconta � conta - σ nome_cliente = “Smith” (conta)

� Excluir todos os empréstimos cujos totais estejam entre 0 e 50.empréstimos � empréstimo - σ total ≥ 0 AND total ≤ 50 (empréstimo)

� Excluir todas as contas das agências localizadas em Needham.r1 � σ cidade_agência = “Nedham” (contas |x| agência)r2 � π nome_agência, número_conta, saldo (r1)

conta � conta – r2

Modificações no Banco de Dados

� Inserção: inserção de tuplas inteiras:

r � r ∪ E

� Inserção de informações explícitas:

conta � conta ∪ {(“Perryridge”,973,1200)}depositante � depositante ∪ {(“Smith”,973)}

� Oferecer uma nova caderneta de poupança de 200 dólares para todos os clientes com empréstimo na agência Perryridge, sendo o número do empréstimo o mesmo número usado para essa conta poupança.

r1 � (σ cidade_agência = “Perryridge” (devedor |x| empréstimo))r2 � π nome_agência, número_empréstimo (r1)conta � conta ∪ (r2 X {(200)})

depositante � depositante ∪ π nome_cliente, número_empréstimo (r1)

Modificações no Banco de Dados

� Atualização: atualiza o valor de um atributo da tuplasem mudar os valores de todos os seus atributos.

� Atualizando todos os valores de um atributor � π F1, F2, ... Fn (r)

� Selecionando algumas tuplas de r e as atualizandor � π F1, F2, ... Fn (σP(r)) ∪ (r - σP(r))

Onde F é uma função de atualização do atributo, uma projeção generalizada.

Modificações no Banco de Dados

� Exemplo de atualização:

� Suponha que a taxa de juros tenha sido alterada e que todos os saldos serão aumentados em 5%.

conta � π nome_agência, número_saldo, saldo � saldo * 1,05 (conta)

� Suponha que as contas com saldos acima de 10 mil dólares recebam 6% de juros, apesar de todos os outros receberem 5%.

conta � π nome_agência, número_saldo, saldo � saldo * 1,06 ( σ saldo > 10000 (conta)) ∪π nome_agência, número_saldo, saldo � saldo * 1,05 ( σ saldo ≤ 10000 (conta))

Visões do Banco de Dados

� Qualquer relação que não faça parte do modelo lógico, mas seja visível ao usuário como uma relação virtual é chamada de visão.

� Definição de visão é dada pelo comando create view.

� Sintaxe:

create view v as <expressões de consulta>

onde <expressões de consulta> é uma expressão válida genérica em Álgebra Relacional. O nome da visão é representado por v.

Visões do Banco de Dados

� Exemplo: Considere uma visão consistindo de agências e seus clientes, chamada de todos_clientes.

� A definição dessa visão é:

create view todos_clientes as

ππππ nome_agência, nome_cliente (depositante |x| conta)

∪∪∪∪ ππππ nome_agência, nome_cliente (devedor |x| empréstimo)

Exercícios

Assumindo o esquema abaixo, escreva, em Álgebra Relacional, as consultas a seguir.

empregado (nome_empregado, rua , cidade)

trabalha (nome_empregado, nome_companhia, salário)

companhia (nome_companhia, cidade)

gerente (nome_empregado, nome_gerente)

a) Encontre os nomes de todos os empregados que trabalham para a XYZ Ltda.

b) Encontre todos os nomes das cidades dos empregados que trabalham na XYZ Ltda.

c) Encontre os nomes, endereço e cidade da residência de todos os empregados da XYZ Ltda. que ganham mais de dez mil dólares.

d) Encontre os nomes de todos os empregados que moram na mesma cidade da companhia em que trabalham.

e) Encontre os nomes de todos os empregados que moram na mesma cidade e na mesma rua de seu gerente.

f) Encontre os nomes de todos os empregados que não trabalham para a XYZ Ltda.

g) Encontre os nomes de todos os empregados que ganham mais que os empregados da Byte Corporation.

h) Assuma que as companhias possam estar localizadas em diversascidades. Encontre todas as companhias localizadas em todas as cidades onde haja unidades da Small Bank Corporation.

Obs.: Exercício extraído Korth et. al, 1999, págs. 104-105.

Referências Bibliográficas

� Sistemas de Banco de Dados. (Cap. 3) AbrahamSilberchatz, Henry F. Korth e S. Sudarshan. 3ª Edição.Makron Books, 1999.

� Sistemas de Banco de Dados. (Cap. 6) Ramez Elsmari, 4ª Edição. Shamkant B. Navathe. EditoraPearson Addison Wesley, 2005.