Construção de Banco de Dados
Aula5 – Álgebra Relacional - Exercícios
Profa. Marta MattosoCOPPE/ SistemasUniversidade Federal do Rio [email protected]
Organização da Parte I Conceitos Gerais SGBDs e Arquivos Arquiteturas Modelo Relacional• Álgebra Relacional• SQL
Álgebra Relacional
abc
xy
a xa yb xb yc xc y
Seleção ProjeçãoProduto
União Interseção Diferença Junção a1 b1a2 b1a3 b2
b1 c1b2 c2b3 c3
a1 b1 c1a2 b1 c1a3 b2 c2
Peças-Fornecedores
ChavesPrimárias:
NUMFNUMP
NUMPR
NUMPR NOMEJR CIDADE1 Ordenador Rio de Janeiro2 Vídeo Porto Alegre3 Teclado Belo Horizonte4 Console Belo Horizonte5 Disco São Paulo6 Telefone Niterói7 Fita São Paulo
PROJETOS
NUMF NOMEF STATUS CIDADE1 Selma 20 São Paulo2 João 10 Rio de Janeiro3 Branco 30 Rio de Janeiro4 Carlos 20 São Paulo5 Aline 30 Belo Horizonte
FORNECEDORES
NUMF NUMP NUMPR QUANTIDADE1 1 1 2001 1 4 3002 3 1 4002 3 2 5002 3 3 6002 3 4 1002 3 5 6002 3 6 5002 3 7 3002 5 2 4003 3 1 5003 4 2 4004 6 3 6004 6 7 3005 2 2 1005 5 7 7005 6 2 5005 1 4 2005 3 4 3005 4 4 4005 5 4 1005 6 4 500
PEDIDOS
NUMP NOMEP COR PESO CIDADE1 Caixa Vermelha 12 São Paulo2 Parafuso Verde 17 Rio de Janeiro3 Parafuso Azul 17 Porto Alegre4 Parafuso Vermelha 14 São Paulo5 Arruela Azul 12 Rio de Janeiro6 Alavanca Vermelha 19 São Paulo
PEÇAS
Exercícios1. Nomes de fornecedores da peça P22. Nomes de fornecedores que fornecem ao menos uma peça
vermelha3. Todos os pares de fornecedores na mesma cidade4. Nomes de fornecedores que não fornecem a peça número 2
Soluções do Ex 1
• Nomes de fornecedores da peça P2NOMEF ( NUMP=2 ( PEDIDOS * FORNECEDORES))OU
NOMEF (FORNECEDORES * ( NUMP=2(PEDIDOS)) )
ouFOR_PEDIDO PEDIDOS * FORNECEDORESFOR_P2 NUMP=2 (FOR_PEDIDO)
RESULTADO NOMEF (FOR_P2)
Solução do Ex 1 (Passo 1)
FOR_PEDIDO PEDIDOS * FORNECEDORES
NUMF NUMP NUMPR QUANTIDADE NOMEF STATUS CIDADE1 1 1 200 Selma 20 São Paulo1 1 4 300 João 10 Rio de Janeiro2 3 1 400 João 10 Rio de Janeiro2 3 2 500 João 10 Rio de Janeiro2 3 3 600 João 10 Rio de Janeiro2 3 4 100 João 10 Rio de Janeiro2 3 5 600 João 10 Rio de Janeiro2 3 6 500 João 10 Rio de Janeiro2 3 7 300 João 10 Rio de Janeiro2 5 2 400 João 10 Rio de Janeiro3 3 1 500 Branco 30 Rio de Janeiro3 4 2 400 Branco 30 Rio de Janeiro4 6 3 600 Carlos 20 São Paulo4 6 7 300 Carlos 20 São Paulo5 2 2 100 Aline 30 Belo Horizonte5 5 7 700 Aline 30 Belo Horizonte5 6 2 500 Aline 30 Belo Horizonte5 1 4 200 Aline 30 Belo Horizonte5 3 4 300 Aline 30 Belo Horizonte5 4 4 400 Aline 30 Belo Horizonte5 5 4 100 Aline 30 Belo Horizonte5 6 4 500 Aline 30 Belo Horizonte
FOR_PEDIDO
Solução do Ex 1 (Passo 2)
FOR_P2 NUMP=2 (FOR_PEDIDO)
NUMF NUMP NUMPR QUANTIDADE NOMEF STATUS CIDADE5 2 2 100 Aline 30 Belo Horizonte
FOR_P2
Solução do Ex 1 (Passo 2,3)
NUMF NUMP NUMPR QUANTIDADE NOMEF STATUS CIDADE5 2 2 100 Aline 30 Belo Horizonte
FOR_P2
RESULTADO NOMEF (FOR_P2)
RESULTADONOMEF
Aline
Solução do Ex 2
• Nomes de fornecedores que fornecem ao menos uma peça vermelhaPV COR= “Vermelha” (PECAS)PV_PED PV * PEDIDOS
NO_PV NUMF (PV_PED)FORN_PV FORNECEDORES * NUMF_PV
RESULTADO NOMEF (FORN_PV)
Solução do Ex 2 (Passo 1)
PV COR = “Vermelha” (PECAS)
NUMP NOMEP COR PESO CIDADE1 Caixa Vermelha 12 São Paulo4 Parafuso Vermelha 14 São Paulo6 Alavanca Vermelha 19 São Paulo
PV
Solução do Ex 2 (Passo 2,3)
PV_PED PV * PEDIDOS
NO_PV NUMF (PV_PED)
NUMF NUMP NUMPR QUANTIDADE NOMEP COR PESO CIDADE1 1 1 200 Caixa Vermelha 12 São Paulo1 1 4 300 Caixa Vermelha 12 São Paulo5 1 4 200 Caixa Vermelha 12 São Paulo5 4 4 400 Parafuso Vermelha 14 São Paulo4 6 3 600 Alavanca Vermelha 19 São Paulo4 6 7 300 Alavanca Vermelha 19 São Paulo5 6 2 500 Alavanca Vermelha 19 São Paulo5 6 4 500 Alavanca Vermelha 19 São Paulo
PV_PED
NUMF145
Solução do Ex 2 (Passo 4,5)
FORN_PV FORNECEDORES * NO_PV
RESULTADO NOMEF (FORN_PV)
NUMF NOMEF STATUS CIDADE1 Selma 20 São Paulo4 Carlos 20 São Paulo5 Aline 30 Belo Horizonte
NOMEFSelmaCarlosAline
Solução Alternativa do Ex 2
• Nomes de fornecedores que fornecem ao menos uma peça vermelhaPV COR= “Vermelha” (PECAS)
NO_PV NUMP (PV)PV_PED PV * PEDIDOSFORN_PV FORNECEDORES * PV_PED
RESULTADO NOMEF (FORN_PV)
Solução dos Ex 3
• Todos os pares de fornecedores na mesma cidade
1. (PRIMEIRO NUMF ) (FORNECEDORES)2. PRIM PRIMEIRO, CIDADE (FORNECEDORES)
3. MESMACID FORNECEDORES * PRIM
4. PARESF PRIMEIRO < NUMF (MESMACID )5. RESULTADO PRIMEIRO, NUMF (PARESF)
Solução do Ex 3 (Passos)
PRIMEIRO NOMEF STATUS CIDADE1 Selma 20 São Paulo2 João 10 Rio de Janeiro3 Branco 30 Rio de Janeiro4 Carlos 20 São Paulo5 Aline 30 Belo Horizonte
PRIMEIRO CIDADE1 São Paulo2 Rio de Janeiro3 Rio de Janeiro4 São Paulo5 Belo Horizonte
NUMF NOMEF STATUS CIDADE PRIMEIRO3 Branco 30 Rio de Janeiro 24 Carlos 20 São Paulo 1
NUMF NOMEF STATUS CIDADE PRIMEIRO5 Aline 30 Belo Horizonte 52 João 10 Rio de Janeiro 23 Branco 30 Rio de Janeiro 32 João 10 Rio de Janeiro 33 Branco 30 Rio de Janeiro 21 Selma 20 São Paulo 44 Carlos 20 São Paulo 11 Selma 20 São Paulo 14 Carlos 20 São Paulo 4
1
2
3
4
Resultado
NUMF PRIMEIRO3 24 1
Solução do Ex 4• Nomes de fornecedores que não fornecem a peça número 21. NUMFOR NUMF (FORNECEDORES)
2. PEDP2 NUMP = 2 (PEDIDOS )
3. NUMFORP2 NUMF (PEDP2)
4. NUMNAOP2 NUMFOR – NUMFORP2
5. FORNAOP2 NUMNAOP2 * FORNECEDORES
6. RESULTADO NOMEF (FORNAOP2 )
Solução do Ex 4 (Passos)
1 23
4
Resultado
NUMF12345
NUMF5
NUMF NUMP NUMPR QUANTIDADE5 2 2 100
PEDIDOS WHERE NUMP=2
NUMF1234
5
NUMF NOMEF STATUS CIDADE1 Selma 20 São Paulo2 João 10 Rio de Janeiro3 Branco 30 Rio de Janeiro4 Carlos 20 São Paulo
NOMEFSelmaJoão
BrancoCarlos