Escolar Documentos
Profissional Documentos
Cultura Documentos
Técnicas de
Implementação de
Banco de Dados
Aula 1
Prof. Marcondes Alexandre, MsC
Agenda
- Unidade I – Álgebra Relacional e processamento de consulta
LINGUAGENS FORMAIS
Álgebra Relacional
• Linguagem de consulta procedural que contém um conjunto de
operações que permitem manipular o banco de dados.
• Linguagem baseada na representação de expressões algébricas.
• Assim como na álgebra, é possível combinar as operações,
formando expressões mais complexas.
OPERAÇÕES FUNDAMENTAIS
Operação Seleção
• Na relação empréstimo, quais são os empréstimos (tuplas) cuja cidade da agência é Crato?
CodigoEmprestimo ValorEmprestimo
11 900
14 1500
15 1500
16 300
17 1000
23 2000
93 500
Operação Projeção (cont.)
• Notação: Õa1, a2, ..., ak (r)
• a1, a2, ..., ak são os nomes dos atributos.
• r é o nome da relação.
• O resultado é definido como uma relação de k colunas listadas,
excluindo os atributos não citados.
• Linhas duplicadas são removidas do resultado, pois uma relação é
um conjunto e, por isso, não existe repetição dos elementos.
• Equivale a cláusula SELECT da consulta SQL.
Como combinar duas ou mais
operações da Álgebra Relacional?
Combinação de Operações Algébricas
• Observe que, nos exemplos vistos até agora, todos os resultados das
operações relacionais apresentadas geraram uma nova relação.
• Uma expressão na Álgebra Relacional SEMPRE retorna uma
nova relação, independente da quantidade de tuplas que essa
nova relação possui.
• Exemplo:
NomeCliente
Sicrano
Altrano
Delano
Operação Diferença de Conjuntos (cont.)
• Notação: r – s
• Definida como: r – s = {t | t Î r e t Ï s}
• Para que r – s seja válido, é preciso que:
• r e s precisam possuir mesmo número de atributos
• Os domínios de atributo precisam ser compatíveis
• É importante lembrar que r – s ¹ s – r
• Equivale a operação EXCEPT da linguagem SQL.
Operação Produto Cartesiano
• A partir das relações Cliente e Serviço, combine os clientes com os serviços do
banco.
NomeCliente NumeroConta CodigoServico CodigoServico NomeServico
Fulano 102 2 1 Seguro
Sicrano 101 4 2 Capitalização
Sicrano 201 1 3 Fundos
Beltrano 217 3 4 Empréstimo
Altrano 222 4
Socrano 215 1
Delano 305 2
Operação Produto Cartesiano
(cont.)
• r = Cliente x Servico
Cliente. Cliente. Cliente. Servico. Servico.
NomeCliente NumeroConta CodigoServico CodigoServico NomeServico
Fulano 102 2 1 Seguro
Fulano 102 2 2 Capitalização
Fulano 102 2 3 Fundos
Fulano 102 2 4 Empréstimo
Sicrano 101 4 1 Seguro
Sicrano 101 4 2 Capitalização
Sicrano 101 4 3 Fundos
Sicrano 101 4 4 Empréstimo
... ... ... ... ...
Operação Produto Cartesiano (cont.)
• Definida como: r x s = {t q | t Î r e q Î s}
• Atenção na concatenação de operações.
• Ao cruzar várias relações, utiliza-se o formato
relacao.nome_atributo para distinguir atributos com o mesmo
nome.
• Equivale a listar duas ou mais tabelas na cláusula FROM da consulta
SQL.
Mas essa operação parece inútil...
Ah, e se eu realizar uma seleção?
sServico.NomeServico= “Fundos” (Cliente x Servico)
AINDA INÚTIL!
Operação Renomeação
• Permite nomear relações, permitindo referenciá-la por mais de
um nome na expressão.
• Notação: rx (r)
• Retorna a relação r sob o nome x.
• Permite renomear também expressões algébrica, pois elas
retornam uma nova relação.
• Se uma relação r tiver aridade n, você pode nomear esta relação
e os seus multiplos atributos:
• rx(a1, a2, ..., an)(r)
• Retorna a relação r com o nome x, e com os atributos
renomeados para a1, a2, ..., an.
• Equivale a cláusula AS da linguagem SQL.
ss.NomeServico= “Fundos” (Cliente x rs(Servico))
Cliente. Cliente. Cliente. Servico. Servico.
NomeCliente NumeroConta CodigoServico CodigoServico NomeServico
Fulano A-102 2 3 Fundos
Sicrano A-101 4 3 Fundos
Sicrano A-201 1 3 Fundos
Beltrano A-217 3 3 Fundos
Altrano A-222 4 3 Fundos
Socrano A-215 1 3 Fundos
Delano A-305 2 3 Fundos
Resultado das Expressões Algébricas
• Uma expressão na álgebra relacional retorna um dos seguintes
resultados:
• Uma relação já existente no banco de dados.
• Uma nova relação constante .
• Composta por tuplas descrita dentro de chaves.
• Exemplo: { (1, Herleson, 26), (2, Priscila, 25), ...}.
• Exemplo:
• ÕNomeCliente (Cliente) È ÕNomeCliente (Emprestimo)
Conheça outras operações da Álgebra Relacional
OUTRAS OPERAÇÕES
Operação Interseção
• A partir das relações ClienteCC e ClienteEmp, liste todos os nomes
dos clientes que possuem conta e empréstimo.
NomeCliente NumeroConta NomeCliente NumeroEmprestimo
Fulano 102 John 16
Sicrano 101 Paul 93
Sicrano 201 Fulano 15
Beltrano 217 Mary 14
Altrano 222 Beltrano 17
Socrano 215 Socrano 11
Delano 305 Socrano 23
Bill 17
Operação Interseção (cont.)
• ÕNomeCliente (ClienteCC) Ç ÕNomeCliente (ClienteEmp)
NomeCliente
Fulano
Beltrano
Socrano
Operação Interseção (cont.)
• Notação: r Ç s
• Definida como: r Ç s = {t | t Î r e t Î s}
• Para que r Ç s seja válido, é preciso que:
• r e s precisam possuir mesmo número de atributos
• Os domínios de atributo precisam ser compatíveis
• Relembrar é viver: r Ç s = r – (r – s)
• Equivale a operação INTERSECT da linguagem SQL.
Operação Junção Natural
• Encontre todos os clientes que possuem conta, com o nome dos serviços
contratados.
• Notação: r s
• Definida como: r s = PR È S (sr.i = s.i (r x s)), onde:
• R e S são os atributos das relações r e s respectivamente
• Os atributos r.i e s.i pertencem a r Ç s
NomeCliente
Sicrano
Operação Divisão (cont.)
• Notação: r ÷ s
• Definida como: r ÷ s = {t | t Î PR – S(r) Ù "u Î s (t u Î r)}
• R e S são os atributos das relações r e s respectivamente.
• A tupla t u significa a concatenação das tuplas t (da relação r) e
u (da relação s) para produzir uma única tupla.
• Relaciona todas as tuplas da relação r que possuem todos os valores
da relação s.
• Adequado para consultas que incluem a frase “para todo...”.
• Equivale ao recurso de consultas aninhadas da linguagem SQL.
Operação Atribuição
• Escrever expressões da algébra relacional pode tornar-se complexo,
dependendo do número de operações envolvidas.
• A operação atribuição (¬) fornece uma maneira conveniente de
expressar consultas complexas, permitindo o armazenamento das
relações resultantes em variáveis temporárias.
Operação Atribuição (cont.)
• Com o uso da atribuição, as consultas podem ser escritas como um
programa sequencial, que consistirá em uma série de atribuições,
seguidas de uma expressão cujo valor é exibido como resultado da
consulta.
• A atribuição precisa sempre ser feita para uma variável de
relação temporária.
• Pode usar variável em expressões subsequentes.
Operação Atribuição (cont.)
• Exemplo:
• ÕNomeCliente (Cliente) Ç ÕNomeCliente (Emprestimo)
• Usado a atribuição:
• a ¬ ÕNomeCliente (Cliente)
• b ¬ ÕNomeCliente (Emprestimo)
• result ¬ a Ç b
Operação Projeção Generalizada
• Estende a operação de projeção, permitindo que funções aritméticas sejam
usadas na lista de projeção.
• Notação: Õf1, f2, ..., fk (r)
• f1, f2, ..., fk são expressões aritméticas envolvendo constantes e atributos
no esquema de r.
• r é o nome da relação.
Operação Projeção Generalizada
(cont.)
• Qual a quantidade de filmes disponíveis?
• Notação: Goperacao(atributo)(r)
• Exemplo: Gsum(quantidade)(Filme)
• Eliminação de duplicatas através da operação –distinct
após a operação.
• Suporta o recurso de agrupamento, adicionando
o(s) atributo(s) a sere agrupados antes da função
agregada.
• Exemplo: categoriaGsum(quantidade)(Filme)
Operação Junção Externa
• Encontre todos os clientes que possuem conta, com o nome dos
serviços contratados.
NomeCliente NumeroConta CodigoServico CodigoServico NomeServico
Fulano A-102 2 1 Seguro
Sicrano A-101 4 2 Capitalização
Sicrano A-201 1 3 Fundos
Beltrano A-217 3 4 Empréstimo
Altrano A-222 4 5 Cartão Crédito
Socrano A-215 nulo
Delano A-305 2
Operação Junção Externa (cont.)
• ÕNomeCliente, NumeroConta, NomeServico (Cliente Servico)
Esquerda Direita
(Left) (Right)
Completa
(Full)