Banco de Dados I 2007 Módulo III: Linguagens de Consulta (Aula 2) Clodis Boscarioli
Agenda: Álgebra Relacional; Operador Divisão; Álgebra Relacional Estendida.
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)) nome_cliente Jones Smith Hayes nome_agência Downtown Mianus Perryridge nome_agência Brighton Downtown Turner Round Hill = Jones Williams Perryridge Lindsay Redwood Johnson Brighton Jones Brighton
Á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 F 1, F 2,... F n 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 Seatle Seaview Williams Death Valley Revolver Smith Carrotville Tunnel Rabbit Hollywood Toon Coyote cidade rua nome_empregado Readmond Williams 5300 Redmond Gates 1300 Mesa Rabbit Mesa Coyote salário nome_agência nome_empregado empregado x trabalhador_ti Redmond Seatle Seaview Williams 1300 Mesa Carrotville Tunnel Rabbit Mesa Hollywood Toon Coyote salário nome_agência cidade rua nome-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 Nulo nulo Death Villey Revolver Smith Redmond Seatle Seaview Williams 1300 Mesa Carrotville Tunnel Rabbit Mesa Hollywood Toon Coyote salário nome_agência cidade rua nome-empregado 5300 Redmond nulo nulo Gates Redmond Seatle Seaview Williams 1300 Mesa Carrotville Tunnel Rabbit Mesa Hollywood Toon Coyote salário nome_agência cidade rua nome-empregado Nulo nulo Death Villey Revolver Smith 5300 Redmond nulo nulo Gates Redmond Seatle Seaview Williams 1300 Mesa Carrotville Tunnel Rabbit Mesa Hollywood Toon Coyote salário nome_agência cidade rua nome-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 Nome-empregado Johnson Loreena Peterson Sato Rao Gopal Adams Brown Nome-agência Downtown Downtown Downtown Austin Austin Perryridge Perryridge Perryridge Salário 1300 2500 1600 5300 1300 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 5300 Austin 3100 Perryridge 8100
Álgebra Relacional Estendida nome_agênciaϑsum salario max salario (trabalhadores_ti) nome_agência Downtown Austin Perryridge soma salário 5500 3100 7900 salário máximo 2500 1600 5300
Modificações no Banco de Dados Exclusão: exclusão de tuplas inteiras: r r E Excluir todas as contas do cliente Smith conta 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: Inserção de informações explícitas: r r E 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 tupla sem mudar os valores de todos os seus atributos. Atualizando todos os valores de um atributo r π F1, F2,... Fn (r) Selecionando algumas tuplas de r e as atualizando r π 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 diversas cidades. 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) Abraham Silberchatz, 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. Editora Pearson Addison Wesley, 2005.