You are on page 1of 52

Engenharia da Computao Banco de Dados I Aula 17

(08/11) mario.godoy@univasf.edu.br http://www.univasf.edu.br/~mario.godoy/

Universidade Federal do Vale do So Francisco - UNIVASF Colegiado de Engenharia de Computao CECOMP

MOODLE

MOODLE Atividade 3
MOODLE ATIVIDADE 3 Entregar resumo sobre a FN Boyce/Codd: 21/novembro s 23:55h. Via MOODLE.

3 2010.2 - Prof. Mario Godoy

REVISANDO: Operao Produto Cartesiano r1 X r2

Operao Produto Cartesiano


Funcionamento do Produto cartesiano.

1 2 3

1 2

1 2 3 4 5 6

5 2010.2 - Prof. Mario Godoy

Operao Produto Cartesiano


Para encontrar outros clientes que moram na mesma rua e cidade, devemos nos referir relao cliente mais uma vez.

nome-cliente ( cliente2.rua = cliente.rua ^ cliente2.cidade = cliente.cidade


(cliente X ( rua, cidade ( nome-cliente =Maria ( cliente2 (cliente))))))
PASSO: 4 Produto Cartesiano
CLIENTE Num-cli Nome-cli Rua Cidade 001 002 003 004 005 006 Z Ana Pedro Joo Clara Maria X Y W X J x PNZ SSA MCZ PNZ REC PNZ CLIENTE2 Rua Cidade X X X X X X PNZ PNZ PNZ PNZ PNZ PNZ
6 2010.2 - Prof. Mario Godoy

Operao Produto Cartesiano


Para encontrar outros clientes que moram na mesma rua e cidade, devemos nos referir relao cliente mais uma vez.

nome-cliente ( cliente2.rua = cliente.rua ^ cliente2.cidade = cliente.cidade


(cliente X ( rua, cidade ( nome-cliente =Maria ( cliente2 (cliente))))))
PASSO: 4 Produto Cartesiano OUTRA REPRESENTAO

Num-cli Nome-cli Cliente.Rua Cliente.Cidade Cliente2.Rua Cliente2.Cidade


001 002 003 004 005 006 Z Ana Pedro Joo Clara Maria X Y W X J x PNZ SSA MCZ PNZ REC PNZ X X X X X X PNZ PNZ PNZ PNZ PNZ PNZ
7 2010.2 - Prof. Mario Godoy

Operao Produto Cartesiano


Para encontrar outros clientes que moram na mesma rua e cidade, devemos nos referir relao cliente mais uma vez.

nome-cliente ( cliente2.rua = cliente.rua ^ cliente2.cidade = cliente.cidade


(cliente X ( rua, cidade ( nome-cliente =Maria ( cliente2 (cliente))))))
PASSO: 5 Resultado da seleo (temp.)
Num-cli Nome-cli Cliente.Rua Cliente.Cidade Cliente2.Rua Cliente2.Cidade

001 004 006

Z Joo Maria

X X x

PNZ PNZ PNZ

X X X

PNZ PNZ PNZ

8 2010.2 - Prof. Mario Godoy

Outro exemplo...

Operao Produto Cartesiano


Produto Cartesiano: permite combinar informaes de duas relaes quaisquer. Representado por r x s, ou seja, o total de tuplas de r * o total de tuplas de s.

Ex: Qual o produto cartesiano entre as relaes devedor e emprestimo. (devedor X emprestimo) = {nome_cliente, num_emprstimo, nome_agencia, num_emprstimo, total}
Obs: para evitar a duplicidade de nomes de atributos, insere-se o nome da relao antes do atributo:
(nome_cliente, devedor.num_emprstimo, nome_agencia, emprstimo.num_emprstimo, total)

10 2010.2 - Prof. Mario Godoy

Operao Produto Cartesiano


Produto Cartesiano: permite combinar informaes de duas relaes quaisquer. Representado por r x s.

(Devedor X Emprstimo)

11 2010.2 - Prof. Mario Godoy

Operao Produto Cartesiano


Produto Cartesiano: permite combinar informaes de duas relaes quaisquer. Representado por r x s.

Agora, deve-se encontrar todos os nomes de clientes que tenham um emprstimo na agncia SAL-1, atravs da operao:

nome_agncia = SAL-1(devedor X emprstimo)


12

2010.2 - Prof. Mario Godoy

Operao Produto Cartesiano


Agora, deve-se encontrar todos os nomes de clientes que tenham um emprstimo na agncia SAL-1, atravs da operao: nome_agncia = SAL-1(devedor x emprstimo)

devedor.num_emprstimo = emprstimo.num_emprstimo (

nome_agncia = SAL-1 (devedor x emprstimo))

13 2010.2 - Prof. Mario Godoy

Operao Diferena (-)

14

Operao Diferena de Conjuntos


Permite encontrar tuplas que esto em uma relao e no esto em outra.
Representao:

r1 r2

Exemplo:
Conta = (nmero-conta, nmero-cliente, saldo,agncia) Emprstimo = (nmero-emprstimo, nmero-cliente, valor, agncia)

Obter todos os clientes da agncia Centro que tenham uma conta, mas no tenham emprstimo

nmero-cliente( agncia =Centro (conta)) nmero-cliente( agncia =Centro (emprstimo))

15 2010.2 - Prof. Mario Godoy

Operao Diferena de Conjuntos


Exemplo:

16 2010.2 - Prof. Mario Godoy

Operaes de Conjuntos - Caractersticas

T
c8

R
2010.2 - Prof. Mario Godoy

c1 c2 c3

c4

c5 c6 c7

S
17

Juno Natural
(natural join)

r1 |X| r2

18

Operao Juno Natural (natural join)


Geralmente, uma consulta que envolve um produto cartesiano inclui uma operao de seleo no resultado desse produto. Funo da Juno Natural: simplificar certas consultas que envolvem produto cartesiano.
Representao:

r1 |X| r2

19 2010.2 - Prof. Mario Godoy

Operao Juno Natural (natural join)


A juno natural: Forma um produto cartesiano de seus dois argumentos. Fora uma igualdade sobre os atributos que aparecem em ambos os esquemas. Remove colunas duplicadas.

Exemplo:
Emprstimo = (nmero-emprstimo, nmero-cliente, valor, agncia) Cliente = (nmero-cliente, nome-cliente, rua, cidade)

Apenas nmero-cliente comum nas duas relaes. A juno natural considera apenas tuplas que tm o mesmo valor para este atributo.

20 2010.2 - Prof. Mario Godoy

Operao Juno Natural (natural join)


Exemplo:
Emprstimo = (nmero-emprstimo, nmero-cliente, valor, agncia) Cliente = (nmero-cliente, nome-cliente, rua, cidade)

Obter todos os clientes que tm um emprstimo e suas cidades. ENTO:

emprstimo.nmero-cliente, cidade (emprstimo.nmero-cliente = cliente.nmero-cliente (emprstimo X cliente))


similar a:

nmero-cliente, cidade (emprstimo |X| cliente))


21 2010.2 - Prof. Mario Godoy

Operao Juno Natural (natural join)


ENTO...

emprstimo.nmero-cliente, cidade (emprstimo.nmero-cliente = cliente.nmero-cliente (emprstimo X cliente))

similar a:

emprstimo.nmero-cliente, cidade (emprstimo |X| cliente))

22 2010.2 - Prof. Mario Godoy

Operao Juno Natural (natural join)


Juno Natural Exemplos:

23 2010.2 - Prof. Mario Godoy

Atribuio

24

Operao Atribuio
Armazena o resultado de uma consulta em uma varivel temporria. Finalidade: usar a varivel temporria em operaes subseqentes. O resultado somente armazenado, no mostrado ao usurio.

Representao:

temp <consulta>

25 2010.2 - Prof. Mario Godoy

Operao Atribuio
Exemplo:

Conta = (nmero-conta, nmero-cliente, saldo, nmero-agncia)

Momento 1:

Var_Cliente_agncia nmero-cliente, nmero-agncia (conta)

Momento 2:

nmero-cliente = c0013 (Var_Cliente_agncia)

26 2010.2 - Prof. Mario Godoy

Operao de Diviso

27

Operao de Diviso
Produz como resultado a projeo de TODOS os atributos da primeira tabela que se relacionam com TODOS os atributos da segunda tabela. Operao de Diviso: a diviso de duas relaes R S, onde os atributos de S esto contidos nos atributos de R, resulta na relao T, onde A(T) = { A(R) A(S) }, onde para cada tupla t que aparece no resultado, os valores de t devem aparecer em R, combinando com cada tupla de S. Esta operao utilizada nas consultas em que se emprega a frase para todos;

a2? a1?

28 2010.2 - Prof. Mario Godoy

Operao de Diviso
Produz como resultado a projeo de TODOS os atributos da primeira tabela que se relacionam com TODOS os atributos da segunda tabela. Exemplo:

R1 A1 A2

R2 A2 R1

R2

Z?

29 2010.2 - Prof. Mario Godoy

Operao de Diviso
Produz como resultado a projeo de TODOS os atributos da primeira tabela que se relacionam com TODOS os atributos da segunda tabela. Exemplo:

CONTA

Agncia

Conta

Agncia

30 2010.2 - Prof. Mario Godoy

Resumo
Tabela de Resumo:

31 2010.2 - Prof. Mario Godoy

lgebra Relacional Estendida

32

Projeo Generalizada

33

Projeo Generalizada
Funes aritmticas podem ser utilizadas em listas de projees.

Representao:

F1, F2, ..., Fn (E)

E qualquer expresso em lgebra relacional. F1, F2, ..., Fn so expresses aritmticas envolvendo constantes e atributos do esquema E.

34 2010.2 - Prof. Mario Godoy

Projeo Generalizada
Exemplo:
Crdito (nmero-cliente, limite-crdito, saldo-crdito)

Obter quanto os clientes podem gastar, de acordo com o seu crdito no banco.

nmero-cliente, limite-crdito - saldo-crdito (Crdito)

35 2010.2 - Prof. Mario Godoy

Juno Externa (outer join)

36

Juno Externa (outer join)


Extenso da operao de juno natural. Evita perda de dados gerada pela juno natural |X|. Representao:

|X|

- Juno natural - Juno esquerda

Juno Externa

- Juno direita - Juno total


37

2010.2 - Prof. Mario Godoy

Juno Natural
Exemplo:
FUNCIONRIO

Cdigo Nom e_funcionrio 1 Ana 2 Joo 3 Sim one 9 Rodrigo

Rua Brom lias D. Pedro 4 de abril Chacrinha

Cidade M arlia Pom pia Prom isso G ara

C d ig o 1 2 5 9

MENSALISTA n o m e_agn cia C entro C entro V ila V erde V ila V erde

S alrio 1500 2000 2500 3000

Funcionrio |X| Mensalista


CdigoNome_funcionrio 1 Ana 2 Joo 9 Rodrigo Rua Bromlias D. Pedro Chacrinha Cidade Marlia Pompia Gara
nome_agncia Salrio

Centro Centro Vila Verde

1500 2000 3000


38

2010.2 - Prof. Mario Godoy

Juno Externa - Juno esquerda


Exemplo:
FUNCIONRIO MENSALISTA nome_agncia Salrio Centro 1500 Centro 2000 Vila Verde 2500 Vila Verde 3000

Cdigo Nom e_funcionrio 1 Ana 2 Joo 3 Sim one 9 Rodrigo

Rua Brom lias D. Pedro 4 de abril Chacrinha

Cidade M arlia Pom pia Prom isso G ara

Cdigo 1 2 5 9

Funcionrio

Mensalista
nom e_agncia

C digoN e_funcionrio R om ua C idade 1 A na Brom lias M arlia 2 Joo D Pedro Pom . pia 3 S one im 4deabril Prom isso 9 R odrigo C hacrinha G ara
2010.2 - Prof. Mario Godoy

C entro C entro nulo V Verde ila

Salrio 1500 2000 nulo 3000


39

Juno Externa - Juno direita


Exemplo:
FUNCIONRIO MENSALISTA nome_agncia Salrio Centro 1500 Centro 2000 Vila Verde 2500 Vila Verde 3000

Cdigo Nom e_funcionrio 1 Ana 2 Joo 3 Sim one 9 Rodrigo

Rua Brom lias D. Pedro 4 de abril Chacrinha

Cidade M arlia Pom pia Prom isso G ara

Cdigo 1 2 5 9

Funcionrio
Cdigo 1 2 5 9 Nome_funcionrio Ana Joo nulo Rodrigo Rua Bromlias D. Pedro nulo Chacrinha

Mensalista
Cidade nome_agncia Marlia Centro Pompia Centro nulo Vila Verde Gara Vila Verde Salrio 1500 2000 2500 3000
40

2010.2 - Prof. Mario Godoy

Juno Externa - Juno Total


Exemplo:
FUNCIONRIO MENSALISTA nome_agncia Centro Centro Vila Verde Vila Verde

C digo N e_funcionrio R om ua 1 Ana Brom lias 2 Joo D Pedro . 3 Sim one 4de abril 9 R odrigo C hacrinha

C idade M arlia Pom pia Prom isso G ara

Cdigo 1 2 5 9

Salrio 1500 2000 2500 3000

Funcionrio
Cdigo 1 2 3 9 5 Nome_funcionrio Rua Ana Bromlias Joo D. Pedro Simone 4 de abril Rodrigo Chacrinha nulo nulo

Mensalista
Cidade Marlia Pompia Promisso Gara nulo
nome_agncia Salrio

Centro Centro nulo Vila Verde Vila Verde

1500 2000 nulo 3000 2500


41

2010.2 - Prof. Mario Godoy

Funes Agregadas

42

Funes agregadas
Retorna um valor nico como resultado de um conjunto de valores. Representao:

Funo <expresso> (relao)


Funes: sum avg count max min
retorna a soma de um conjunto de valores. retorna a mdia de um conjunto de valores. retorna a quantidade de elementos da coleo. retorna o maior valor da coleo. retorna o menor valor da coleo.

43 2010.2 - Prof. Mario Godoy

Funes agregadas
Exemplo:

MENSALISTA
Nome_funcionrio nome_agncia Ana Centro Joo Centro Roberta Vila Verde Rodrigo Vila Verde Salrio 1500 2000 2500 3000

sum salrio (mensalista) 9000


Obs: o resultado uma relao com um atributo simples, contendo uma nica linha.
44 2010.2 - Prof. Mario Godoy

Funes agregadas
Exemplo:

MENSALISTA
Nome_funcionrio nome_agncia Ana Centro Joo Centro Roberta Vila Verde Rodrigo Vila Verde Salrio 1500 2000 2500 3000

min salrio (mensalista)

1500

45 2010.2 - Prof. Mario Godoy

Funes agregadas
Clusula distinct
Exemplo:

eliminao de duplicidade.

Usada em conjunto com as funes definidas anteriormente.

MENSALISTA
Nome_funcionrio nome_agncia Ana Centro Joo Centro Roberta Vila Verde Rodrigo Vila Verde Salrio 1500 2000 2500 3000

count nome-agncia (mensalista)

count-distinct

nome-agncia (mensalista)

2
46

2010.2 - Prof. Mario Godoy

Funes agregadas - Agrupamento


Agrupamento diviso das tuplas em grupos para aplicao das funes agregadas.
Representao:

<atributo-agrupamento>

G funo
?
sum avg count max min

<expresso>

(relao)

47 2010.2 - Prof. Mario Godoy

Funes agregadas - Agrupamento


Exemplo 1:

MENSALISTA
Nome_funcionrio nome_agncia Ana Centro Joo Centro Roberta Vila Verde Rodrigo Vila Verde Salrio 1500 2000 2500 3000

nome-agncia

G sum

salrio

(mensalista)

RESULTADO
nome_agncia soma Centro 3500 Vila Verde 5500
48 2010.2 - Prof. Mario Godoy

Funes agregadas - Agrupamento


Exemplo 2 Mais de uma funo agregada.

MENSALISTA
Nome_funcionrio nome_agncia Ana Centro Joo Centro Roberta Vila Verde Rodrigo Vila Verde Salrio 1500 2000 2500 3000

nome-agncia

G sum
mximo 2000 3000

salrio,

maxsalrio (mensalista)

RESULTADO
nome_agncia soma Centro 3500 Vila Verde 5500

49 2010.2 - Prof. Mario Godoy

Exerccios
Considere os seguintes esquemas de relao: Cliente (cli-cdigo,cli-nome,cli-endereo, cli-data-nasc) Produto (pro-cdigo,pro-descrio,pro-preo-compra,pro-preo-venda) Venda (ven-cdigo,ven-data,cli-cdigo) ItemVenda (ven-cdigo, pro-cdigo,vi-quantidade,vi-valor-unit) Clibanco (cli-cdigo, clib-cdigo, clib-nm-conta, clib-data-abertura)
Usando os conceitos de lgebra Relacional estudados, escreva consultas que atenda s solicitaes a seguir. 1. Todas as descries, quantidade, valor unitrio de todos os produtos vendidos. 2. O lucro que se obtm de cada unidade vendida de produto (preo venda preo compra). Mostre a descrio do produto e o lucro por unidade. 3. Todas as descries dos produtos comprados pelo cliente Pedro. 4. Todas as descries, quantidades e valor unitrio dos produtos vendidos no ms de fevereiro de 2005. 5. Todas as vendas realizadas no ms de janeiro de 2005, mostrando: cdigo da venda, nome do cliente, data, descrio do produto, quantidade, valor unitrio e valor total do item.
50 2010.2 - Prof. Mario Godoy

Exerccios
Considere os seguintes esquemas de relao: Cliente (cli-cdigo,cli-nome,cli-endereo, cli-data-nasc) Produto (pro-cdigo,pro-descrio,pro-preo-compra,pro-preo-venda) Venda (ven-cdigo,ven-data,cli-cdigo) ItemVenda (ven-cdigo, pro-cdigo,vi-quantidade,vi-valor-unit) Clibanco (cli-cdigo, clib-cdigo, clib-nm-conta, clib-data-abertura) 6. O valor total de cada venda. Mostre o nmero da venda, a data e o valor total.

7. A quantidade de clientes que compraram no ms de janeiro de 2005 (eliminar as duplicaes) 8. Uma lista completa de clientes e seus respectivos bancos e nmeros de conta (usar outer join). 9. O valor do produto mais caro. 10. O valor mdio do preo de venda dos produtos. 11. A data de nascimento mais antiga dos clientes. 12. O maior valor de venda (somando todos os produtos vendidos). 13. O cdigo do cliente que mais comprou (considerando o valor total da venda). 51
2010.2 - Prof. Mario Godoy

Exerccios
Considere os seguintes esquemas de relao: Cliente (cli-cdigo,cli-nome,cli-endereo, cli-data-nasc) Produto (pro-cdigo,pro-descrio,pro-preo-compra,pro-preo-venda) Venda (ven-cdigo,ven-data,cli-cdigo) ItemVenda (ven-cdigo, pro-cdigo,vi-quantidade,vi-valor-unit) Clibanco (cli-cdigo, clib-cdigo, clib-nm-conta, clib-data-abertura) 14. O nome do cliente que mais comprou (considerando o valor total da venda). 15. O nome do cliente que mais comprou em janeiro deste ano (considerando o valor total da venda). 16. A quantidade vendida de cada produto no ms de maio deste ano. 17. A descrio do produto mais vendido no ms de maio deste ano (considere a quantidade vendida) 18. A quantidade de clientes que efetuou compras no ms de maio deste ano. 19. O lucro obtido no ms de maio deste ano. 20. A quantidade mdia diria de clientes que efetuaram compras no primeiro semestre do ano.
52 2010.2 - Prof. Mario Godoy