Este documento descreve as principais operações da álgebra relacional, incluindo união, interseção, diferença, produto cartesiano, seleção, projeção e junção. Também explica como consultas SQL são baseadas nestas operações e incluem cláusulas como SELECT, FROM, WHERE, GROUP BY e HAVING.
Anotações de aula da disciplina Modelagem de Sistemas de Informação de Rede do curso de Gestão de Tecnologia da Informação - 3º semestre - UNIP Paulista.
Anotações de aula da disciplina Modelagem de Sistemas de Informação de Rede do curso de Gestão de Tecnologia da Informação - 3º semestre - UNIP Paulista.
Transformação conceitual para Lógico
Tabelas, Campos, Registros
Restrições de Integridade
Chaves Primaria / Estrangeira
SQL para Definição de dados: DDL
Requisitos
Funcionais
Não-funcionais
Problemas
Possíveis Soluções
UML
Diagrama de Casos de Uso
Diagrama de Atividades
Diagramas de Caso de Uso no Rose
Diagramas de Atividades no Rose
Transformação conceitual para Lógico
Tabelas, Campos, Registros
Restrições de Integridade
Chaves Primaria / Estrangeira
SQL para Definição de dados: DDL
Requisitos
Funcionais
Não-funcionais
Problemas
Possíveis Soluções
UML
Diagrama de Casos de Uso
Diagrama de Atividades
Diagramas de Caso de Uso no Rose
Diagramas de Atividades no Rose
Você sabe o que é ou o que faz um Banco de Dados? Veja essa apresentação e sua continuação (vou postar em breve) e conheça um pouquinho mais sobre tecnologia.
Banco de Dados - Introdução - Projeto de Banco de Dados - DERRangel Javier
Material sobre Banco de Dados para aulas da disciplina na Faculdade Vale do Salgado - Icó.
Roteiro do Material:
- Introdução
- Modelos de Dados
- Projeto de Banco de Dados
- Abordagem Entidade-Relacionamento
3. Álgebra Relacional
• Álgebra relacional é uma linguagem de consulta
téorica
– usuários não a usam diretamente. É muito
complicada para ser usada diretamente.
• Porém, a álgebra relacional é usada
internamente em todos os SGBDs
– outras linguagens de consulta são traduzidas em
álgebra relacional.
4. Operações da Álgebra Relacional
• Operações derivadas da teoria dos conjuntos
– União
– Interseção
– Diferença
– Produto Cartesiano
• Operações relacionais especiais
– Seleção
– Projeção
– Junção (natural)
5. Operações da Álgebra Relacional
União:
R U S: Obtém a união das tuplas em R e S.
Ilegal se R e S têm números diferentes de atributos.
R S
R A B A B
a1 b1 a2 b2
S a2 b2 a3 b3
A B
R S a1 b1
a2 b2
a3 b3
6. Operações da Álgebra Relacional
Diferença
R-S: obtém as tuplas em R que não estão em S.
Ilegal se R e S têm números diferentes de atributos
R R A B S A B
S a1 b1 a2 b2
a2 b2 a3 b3
S
R - S A B
a1 b1
7. Operações da Álgebra Relacional
Interseção
R S: Obtém a interseção das tuplas de R e S.
Ilegal se R e S têm números diferentes de atributos.
R R A B S A B
S a1 b1 a2 b2
a2 b2 a3 b3
R S A B
a2 b2
8. Operações da Álgebra Relacional
Seleção:
Seleciona todas as tuplas que satisfazem à condição de
seleção de uma relação R.
R
R A B
a1 b1
a2 b2
R [A = ‘a1’]
A B
a1 b1
R [expressão de seleção]
9. Operações da Álgebra Relacional
Projeção:
Produz uma nova relação com apenas alguns atributos
de R, removendo tuplas duplicadas.
R
R A B
a1 b1
a2 b2
R [B] B
b1
b2
R [A1, ... , An]
10. Operações da Álgebra Relacional
Produto Cartesiano:
A relação resultante consiste de todas as possíveis
tuplas resultantes da combinação de duas tuplas, uma
de cada relação envolvida na operação.
R A B R x S A B C D
a1 b1 a1 b1 c2 d2
a2 b2 a1 b1 c3 d3
a2 b2 c2 d2
S C D a2 b2 c3 d3
c2 d2
c3 d3
11. Operações da Álgebra Relacional
Junção:
A junção de R com S = (R x S) [ expressão de seleção]
R R x S [ B = C]
A B
a1 b1
A B C D
a2 b2
a1 b1 b1 d3
a2 b2 b2 d2
S C D
b2 d2
b1 d3
12. Operações da Álgebra Relacional
Junção Natural:
Quando a condição de junção for a igualdade do valor de um atributo
comum e o atributo comum aparecer só uma vez no resultado.
R A B R * S
a1 b1
a2 b2 A B D
a1 b1 d3
a2 b2 d2
S C D
b2 d2
b1 d3
14. Estrutura Básica de consultas SQL
• SQL é baseada em operações de conjuntos e de álgebra
relacional com algumas modificações e extensões
• Uma consulta SQL básica tem a forma:
Select A1, A2, ..., Na
From r1, r2, ..., rm
Where P
– Ai’s representam atributos
– Ri’s representam relações
– P é um predicado.
• O resultado de uma consulta SQL é uma relação.
15. A cláusula SELECT
• A cláusula select corresponde à operação de
projeção
• É utilizada para listar os atributos pretendidos no
resultado da consulta.
• NOTA:
– O SQL não permite o caracter ‘-’ nos nomes,
portanto deverá utilizar, por exemplo, nome_cliente
em vez de nome-cliente num sistema existente.
• NOTE:
– As maiúsculas e minúsculas não são distinguidas
em nomes da linguagem SQL.
16. A cláusula SELECT
• Exemplos
– Listar os nomes de todos os clientes
– Um asterisco na cláusula select denota
“todos os atributos”
Select nome Select *
From Cliente From Cliente
17. A cláusula SELECT
• O SQL permite duplicações nas relações e nos
resultados de consultas.
• Para forçar a eliminação de duplicações, inserir a
palavra-chave distinct após select.
– Apresentar os endereços de todos clientes, sem
repetições
Select distinct endereço
From Cliente
• A palavra-chave all indica que os duplicados não
devem ser removidos.
Select all endereço
From Cliente
18. A cláusula SELECT
• A cláusula select pode conter expressões aritméticas
envolvendo as operações, +, –, *, e /, com
argumentos constantes ou atributos
• Dependendo das implementações, encontram-se
normalmente definidas uma biblioteca de funções.
• A consulta:
Select procodigo, preço, taxa*100
From Produto
• Devolve uma relação idêntica à relação Produto,
exceto que o atributo taxa é multiplicado por 100.
19. A cláusula FROM
• A cláusula from corresponde à operação de
produto cartesiano
• Indica as relações a consultar na avaliação da
expressão.
– Encontrar o produto cartesiano Cliente x Pedido
Select *
From Cliente, Pedido
20. A cláusula WHERE
• A cláusula where corresponde ao predicado de
seleção
• É formada por um predicado envolvendo
atributos de relações que aparecem na
cláusula from.
– Encontrar telefone dos clientes que se chamam
‘João da Silva’
Select telefone
From Cliente
Where nome=‘João da Silva’
21. A cláusula WHERE
• Os resultados de comparações podem ser
combinados por intermédio dos conectivos lógicos
and, or, e not.
• Podem-se aplicar comparações ao resultado de
expressões aritméticas.
– Encontrar os códigos dos produtos do pedido número 203,
cujas quantidades são superiores a dois itens
Select produto
From Itens
Where pedido=203 and quantidade>2
22. A cláusula WHERE
• Operador de comparação between para
especificar condições em que um valor
deve estar contido num intervalo de
valores (incluindo os seus extremos).
• Para negar a condição pode-se colocar
o conectivo not antes de between.
23. A cláusula WHERE
• Apresentar os códigos dos produtos
cujos preços estão entre R$5,00 e
R$30,00
Select procodigo
From Produto
Where preço between 5 and 30
• Para negar a condição pode-se colocar
o conectivo not antes de between.
Select procodigo
From Produto
Where taxa not between 0,2 and 0,35
24. Operações com cadeias de
Caracteres
• SQL inclui um mecanismo de concordância de padrões para
comparações envolvendo cadeias de caracteres.
• Os padrões são descritos recorrendo a dois caracteres especiais:
– percentagem(%): concorda com qualquer subcadeia.
– sublinhado (_): concorda com qualquer carácter.
• A SQL suporta uma variedade de operações com cadeias de
caracteres, tais como:
– concatenação (utilizando “||”), conversão de maiúsculas para
minúsculas (e vice versa), calcular o comprimento, extração de
subcadeias, etc.
25. Operações com cadeias de Caracteres
• Listar todos os clientes cujo endereço inclua
“Rua Nélio Rodrigues” .
Select nome
From Cliente
Where endereço like ‘% Rua Nélio Rodrigues %’
• Encontrar uma cadeia de caracteres que de
fato contenha o símbolo de porcentagem
– Ex.: 10%
like ‘10%’
26. A operação de renomeação AS
• A linguagem SQL permite a renomeação
de relações e atributos recorrendo à
cláusula as :
old_name as new_name
• Listar os nome e códigos dos pedidos
de cada cliente, renomeando a coluna
pedcodigo para codPedido
Select c.nome, p.pedcodigo as codPedido
From Cliente as c, Pedido as p
Where c.ccodigo = p.pedcodigo
27. A operação de renomeação AS
• Caso se pretenda utilizar um nome com
espaços, esse nome deverá ser
colocado entre aspas.
Select c.nome, p.pedcodigo as “codigo do Pedido”
From Cliente as c, Pedido as p
Where c.ccodigo = p.pedcodigo
28. A operação de ordenação ORDER
BY
• Listar em ordem alfabética os nomes de todos os clientes que
possuem algum pedido
Select distinct nome
From Cliente as c, Pedido as p
Where c.ccodigo = p.pedcodigo
Order by nome;
• Pode-se especificar desc para ordenação descrescente ou
asc para ordenação ascendente, para cada atributo; por
omissão, assume-se ordem ascendente.
Order by nome desc;
• Pode-se ter mais do que uma chave de ordenação, separando-as
com vírgulas
29. Funções de Agregação
• Estas funções aplicam-se a multiconjuntos
de valores de uma coluna de uma relação,
devolvendo um único valor como resultado
– avg: valor médio
– min: valor mínimo
– max: valor máximo
– sum: soma dos valores
– count: número de valores
30. Funções de Agregação
• Determinar o preço médio dos produtos comprados no dia
16/03/2008.
Select AVG(preço)
From Pedido as p, Itens as i, Produto as pr
Where p.data=’16/03/2008’ and
p.pedcodigo=i.produto and
i.produto=pr.procodigo
• Calcular a quantidade de clientes
Select COUNT(ccodigo)
From Cliente
• Encontrar o número de clientes com nomes diferentes
Select COUNT(distinct nome)
From Cliente
31. Funções de agregação – GROUP BY
• Listar o número de pedidos por cliente.
Select c.nome, COUNT(p.pedcodigo)
From Cliente as c, Pedido as p
Where c.ccodifgo=p.cliente
Group By c.nome;
• Atenção:
– Atributos na cláusula select fora de funções de
agregação têm de aparecer na lista group by
– Se aparecer mais do que um atributo em group
by, então cada grupo é formado pelas tuplas com
valores iguais em todos esses os atributos
32. Funções de agregação – Having
• Listar o número de pedidos por cliente, para clientes
que tiverem mais de 5 pedidos
Select c.nome, COUNT(p.pedcodigo) as numeroPedidos
From Cliente as c, Pedido as p
Where c.ccodifgo=p.cliente
Group By c.nome
Having numeroPedidos > 5
• Nota:
– predicados na cláusula having são aplicados depois
da formação dos grupos, enquanto que os predicados
na cláusula where são aplicados antes da formação
dos grupos.
33. Operações com Conjuntos
• As operações com conjuntos union, intersect, e
except (minus no Oracle9i) operam sobre relações e
correspondem aos operadores
• Cada uma das operações anteriores elimina as duplicações
automaticamente.
• Para reter duplicados deve-se utilizar as respectivas versões
multiconjunto union all, intersect all e except all
• Suponha que uma tupla ocorre m vezes em R e n vezes
em S, então ele ocorre:
– m + n vezes em R union all S
– min(m,n) vezes em R intersect all S
– max(0, m – n) vezes em R except all S
34. Operações com Conjuntos - Union
• Listar todos os clientes que realizaram pedidos
com mais de 5 itens ou contendo algum
produto de preço>R$30,00
(Select c.nome
From Cliente as c, Pedido as p, Produto as pr
Where c.ccodifgo=p.cliente and
p.pedcodigo=i.pedido and
i.quantidade>5)
UNION
(Select c.nome
From Cliente as c, Pedido as p, Produto as pr
Where c.ccodifgo=p.cliente and
p.pedcodigo=i.pedido and
i.produto=pr.procodigo and
i.preço>30)
35. Operações com Conjuntos - Intersect
• Listar todos os clientes que realizaram pedidos
com mais de 5 itens e contendo algum
produto de preço>R$30,00
(Select c.nome
From Cliente as c, Pedido as p, Produto as pr
Where c.ccodifgo=p.cliente and
p.pedcodigo=i.pedido and
i.quantidade>5)
INTERSECT
(Select c.nome
From Cliente as c, Pedido as p, Produto as pr
Where c.ccodifgo=p.cliente and
p.pedcodigo=i.pedido and
i.produto=pr.procodigo and
i.preço>30)
36. Operações com Conjuntos - Except
• Listar todos os clientes que realizaram pedidos
com mais de 5 itens mas não contendo algum
produto de preço>R$30,00
(Select c.nome
From Cliente as c, Pedido as p, Produto as pr
Where c.ccodifgo=p.cliente and
p.pedcodigo=i.pedido and
i.quantidade>5)
EXCEPT
(Select c.nome
From Cliente as c, Pedido as p, Produto as pr
Where c.ccodifgo=p.cliente and
p.pedcodigo=i.pedido and
i.produto=pr.procodigo and
i.preço>30)
38. Exercício de Fixação
• Atividades:
– 1. Fazer o esquema relacional acima;
– 2.Inserir o empregado André que trabalham no projeto
chamado CID do departamento de computação;
– 3.Inserir o empregado Suzana que trabalha no projeto
chamado CID do departamento de computação;
– 4. Inserir o empregado Lívia que é gerente dos
empregados André e Suzana;
– 5. Inserir o departamento de estatística e seus projetos:
KDE, SUDO, MQRO, ACLT.
39. Ora, a fé é a certeza daquilo que
esperamos e a prova das coisas que
não vemos.
Hebreus 11:1
Até a próxima aula!