• Nenhum resultado encontrado

Lista de Exercícios Resolução do Trabalho Final da disciplina

N/A
N/A
Protected

Academic year: 2021

Share "Lista de Exercícios Resolução do Trabalho Final da disciplina"

Copied!
16
0
0

Texto

(1)

Fundamentos e Projeto

de Banco de Dados

Lista de Exercícios

“Resolução do Trabalho Final da disciplina

Fundamentos e Projeto de Banco de Dados”

(2)

Índice

1.Questão...

...3

Projeto Conceitual...

...3

Projeto Lógico...

.4

Consultas...

...5

Questão 01...

5

Questão 02...

5

Questão 03...

6

Questão 04...

6

Questão 05...

6

Questão 06...

7

Questão 07...

7

Questão 08...

7

Questão 09...

7

Questão 10...

7

2.Questão...

...8

Item 1...

...8

Item 2...

...8

Item 3...

...9

Item 4...

...9

3.Questão...

...10

Modelo...

...10

Item A – Consultas em SQL...

...10

(3)

1. Questão

(4)
(5)

Consultas

Questão 01

INSERT INTO Autor (IdAutor, Nome, Sobrenome) VALUES (000101, 'J.K.', 'Rowling');

INSERT INTO Editora (IdEditora, Nome) VALUES (00011, 'Rocco');

INSERT INTO Categoria (IdCategoria, Nome, Descricao) VALUES(0001, 'Literatura Estrangeira', 'Não há.') ;

INSERT INTO Livro (ISBN, IdCategoria, IdEditora, Titulo, AnoPublicacao,

QtdExemplares, QtdPaginas) VALUES (8532511015, 00001, 00011, 'Harry Potter e a Pedra Filosofal', 2000, 5, 263);

INSERT INTO LivroAutor (IdAutor, ISBN) VALUES (000101, 8532511015);

INSERT INTO Autor (IdAutor, Nome, Sobrenome) VALUES (000102, 'Khaled', 'Housseini');

INSERT INTO Editora (IdEditora, Nome) VALUES (00012, 'Nova Fronteira');

INSERT INTO Categoria (IdCategoria, Nome, Descricao) VALUES (0001, 'Literatura Estrangeira', 'Não há.');

INSERT INTO Livro (ISBN, IdCategoria, IdEditora, Titulo, AnoPublicacao, QtdExemplares, QtdPaginas) VALUES (8520917674, 0001, 00012, 'O Caçador de Pipas', 2005, 3, 365);

INSERT INTO LivroAutor (IdAutor, ISBN) VALUES (000102, 8520917674);

INSERT INTO Autor (IdAutor, Nome, Sobrenome) VALUES (000103, 'Steven', 'Carter');

INSERT INTO Autor (IdAutor, Nome, Sobrenome) VALUES (000104, 'Julia', 'Sokol'); INSERT INTO Categoria (IdCategoria, Nome, Descricao) VALUES (0002,

'Auto-ajuda', 'Não há.');

INSERT INTO Livro (ISBN, IdCategoria, IdEditora, Titulo, AnoPublicacao, QtdExemplares, QtdPaginas) VALUES (8575422197, 00003, 000012, 'O Que Toda Mulher Inteligente Deve Saber', 2006, 5, 160);

INSERT INTO LivroAutor (IdAutor, ISBN) VALUES (000103, 8575422197); INSERT INTO LivroAutor (IdAutor, ISBN) VALUES (000104, 8575422197);

Questão 02

INSERT INTO Pessoa (CPF, Nome, DtNascimento, Logradouro, Numero, Cidade) VALUES (05577081688, 'Marta Sales', 01/01/1970, 'R. Augusto dos Anjos', 150,

'Fortaleza');

INSERT INTO Telefone (CPF, Telefone) VALUES (05577081688, '85.3294-5566'); INSERT INTO Bibliotecaria (CPF) VALUES (05577081688);

INSERT INTO Pessoa (CPF, Nome, DtNascimento, Logradouro, Numero, Cidade) VALUES (11990961304, 'Rosa Muniz', 02/07/1968, 'R. Vagão Sul', 1500, 'Fortaleza'); INSERT INTO Telefone (CPF, Telefone) VALUES (11990961304, '85.3290-6598'); INSERT INTO Bibliotecaria (CPF) VALUES (11990961304);

(6)

(37319221004, 'João Flávio', 07/09/1980, 'R. Mestre Antônio', 29, 'Fortaleza'); INSERT INTO Telefone (CPF, Telefone) VALUES (37319221004, '85.3241-2027'); INSERT INTO Cliente (CPF) VALUES (37319221004);

INSERT INTO Pessoa (CPF, Nome, DtNascimento, Logradouro, numero, cidade) VALUES (57278490049, 'Maria Nascimento', 15/12/1975, 'R. Amândio Lucas', 360,

'Fortaleza');

INSERT INTO Telefone (CPF, Telefone) VALUES (57278490049, '85.3229-1240'); INSERT INTO Cliente (CPF) VALUES (57278490049);

INSERT INTO Pessoa (CPF, Nome, DtNascimento, Logradouro, numero, cidade) VALUES (38700700053, 'Marcos André Simões', 09/12/1979, 'R. Cruzeiro do Sul', 1690, 'Fortaleza');

INSERT INTO Telefone (CPF, Telefone) VALUES (38700700053, '85.3496-0059'); INSERT INTO Cliente (CPF) VALUES (38700700053);

Questão 03

INSERT INTO Exemplar (IdExemplar, ISBN, Numero) VALUES (00001, 8520917674, 02); INSERT INTO Emprestimo (IdEmprestimo, Cliente_CPF, Bibliotecaria_CPF,

DtEmprestimo, DtDevolucao, Multa) VALUES (000000001, 38700700053, 05577081688, 16/02/2005, 00/00/0000, 0);

INSERT INTO EmprestimoExemplar (IdExemplar, IdEmprestimo, IdEmprestimoExemplar) VALUES (00001, 000000001, 000000000001);

INSERT INTO Exemplar (IdExemplar, ISBN, Numero) VALUES (00002, 8532511015, 05); INSERT INTO Emprestimo (IdEmprestimo, Cliente_CPF, Bibliotecaria_CPF,

DtEmprestimo, DtDevolucao, Multa) VALUES (000000002, 38700700053, 11990961304, 17/03/2005, 00/00/0000, 0);

INSERT INTO EmprestimoExemplar (IdExemplar, IdEmprestimo, IdEmprestimoExemplar) VALUES (00002, 000000002, 000000000002);

INSERT INTO Exemplar (IdExemplar, ISBN, Numero) VALUES(00003, 8520917674, 03); INSERT INTO Emprestimo (IdEmprestimo, Cliente_CPF, Bibliotecaria_CPF,

DtEmprestimo, DtDevolucao, Multa) VALUES (000000003, 57278490049, 5577081688, 21/06/2007, 00/00/0000, 0);

INSERT INTO EmprestimoExemplar (IdExemplar, IdEmprestimo, IdEmprestimoExemplar) VALUES(00003, 000000003, 000000000003);

Questão 04

SELECT * FROM biblio.emprestimo Where Cliente_CPF = 38700700053 and DtDevolucao is null

Questão 05

SELECT Distinct Pessoa.Nome, Livro.Titulo

FROM Emprestimo, EmprestimoExemplar, Cliente, Pessoa, Exemplar, Livro Where Cliente.CPF = Pessoa.CPF and

(7)

Emprestimo.idEmprestimo = EmprestimoExemplar.idEmprestimo and Emprestimo.Cliente_CPF = Cliente.CPF and

EmprestimoExemplar.IdExemplar = Exemplar.IdExemplar and Livro.ISBN = Exemplar.ISBN and

Emprestimo.DtDevolucao is null;

Questão 06

SELECT distinct MAX(multa) FROM emprestimo

Questão 07

SELECT Titulo FROM Livro Where Livro.ISBN not in (

Select Distinct Livro.ISBN

From Emprestimo, EmprestimoExemplar, Exemplar, Livro Where Livro.ISBN = Exemplar.ISBN

and Emprestimo.idEmprestimo = EmprestimoExemplar.idEmprestimo and EmprestimoExemplar.IdExemplar = Exemplar.IdExemplar)

Questão 08

Select Pessoa.Nome

From Pessoa, Bibliotecaria, Estante Where Pessoa.CPF = Bibliotecaria.CPF

And Estante.Bibliotecaria_CPF = Pessoa.CPF

Questão 09

SELECT Editora.nome, Count(*) as QtdeLivros FROM Editora, Livro

WHERE Editora.idEditora=Livro.idEditora Group by Editora.nome

Questão 10

SELECT p.Nome , count(*)

FROM cliente c, emprestimo e, pessoa p WHERE c.cpf=e.cliente_cpf

AND p.CPF=c.CPF

AND e.DtEmprestimo BETWEEN '2007-01-01' and '2007-01-31' GROUP BY c.CPF

(8)

2. Questão

Item 1

● Atributos da Super Chave: A, B, C, D, E, F, G, H, I, J, K -> todos os atributos da relação;

● Atributos de Chave Candidata: C, G, H, E, I, A, F, D, K -> atributos primos da relação, os que podem ser considerados para compor a chave-primária;

● Atributos da Chave Primária: E, I, A, F, H -> atributos que identificam unicamente uma tupla na relação.

Item 2

● Não. R não está em 3NF porque:

► não está na Segunda Forma Normal, pois há atributo não-primo, como por exemplo o atributo B, dependendo funcionalmente de parte da chave primária (F4: E -> BC);

► e há atributo não-chave, como por exemplo K, dependendo transitivamente da chave candidata C, G, H, E, I, A, F, D, K (AEFH -> G / G -> F)

● F1: C -> H: não viola porque C e H são atributos primos, sendo H atributo da chave primária;

● F2: G -> F: viola porque G é determinado por parte da chave primária (AEFH->G);

● F3: H -> IBK: viola porque o atributo não-primo B está dependendo de parte da chave primária;

● F4: E ->BC: viola, pois o atributo não-primo B depende funcionalmente de parte da chave primária;

● F4: E -> BC: viola, pois o atributo não-primo B depende funcionalmente de parte da chave primária;

● F5: EI -> K: viola, pois K é transitivamente dependente da chave primária (H ->IBK);

● F6: AEFH -> G: viola, porque Gesta determinando F, parte da chave candidata em F2;

● F7: EFI ->J: viola, pois o atributo não-primo J depende funcionalmente de parte da chave primária;

● R em 3NF sem perdas na junção e que preserva as dependências:

► R1: (EH -> B)

► R2: (EIH -> K)

► R3: (E -> C)

► R4: (EFI -> J)

(9)

Item 3

● R1: (EH -> B) está em BCNF porque EH -> B é uma dependência funcional não-trivial e EH é super-chave de R1;

● R2: (EIH -> K) está em BCNF porque EH -> B é uma dependência funcional não-trivial e EH é super-chave de R2;

● R3: (E -> C) está em BCNF porque EH -> B é uma dependência funcional não-trivial e EH é super-chave de R3;

● R4: (EFI -> J) está em BCNF porque EH -> B é uma dependência funcional não-trivial e EH é super-chave de R4;

● R5: (EFH -> G) não está em BCNF B é uma dependência funcional trivial;

Item 4

(10)

3. Questão

Modelo

Item A – Consultas em SQL

1. Recupere o modelo e o fabricante dos aviões para os quais todos os pilotos certificados a

operá-los ganham mais que 80.000,00.

SELECT DISTINCT a.modelo, a.fabricante FROM aviao a, certificado c, empregado e WHERE a.idAviao=c.idAviao

(11)

AND e.salario > 80000

AND c.idAviao not in (SELECT DISTINCT c.idAviao

FROM empregado e, certificado c WHERE e.salario <=80000

AND e.idEmpregado=c.idEmpregado)

2. Para cada piloto que é certificado a pilotar mais de 3 aviões, encontre o código do piloto e a

máxima autonomia de vôo dos aviões que ele é certificado.

SELECT c.idEmpregado , max(a.autonomia)

FROM aviao a, certificado c, (SELECT c.idEmpregado

FROM empregado e, certificado c WHERE e.idEmpregado=c.idEmpregado GROUP by c.idEmpregado HAVING count(c.idEmpregado) >= 3) e WHERE a.idAviao=c.idAviao AND c.idEmpregado=e.idEmpregado GROUP by c.idEmpregado

(12)

3. Identifique as rotas que podem ser pilotadas por todos os pilotos que ganham mais de

100.000,00.

SELECT distinct e.nome as piloto, a.modelo as aviao, v.origem, v.destino FROM empregado e, certificado c, aviao a, rota r, voo v

WHERE e.salario > 100000 AND c.idEmpregado=e.idEmpregado AND c.idAviao=a.idAviao AND r.idAviao=a.idAviao AND r.idVoo=v.idVoo ORDER by e.nome,a.modelo,v.origem,v.destino

(13)

4. Encontre o menor preço de vôo direto para cada par de cidades.

SELECT v.origem,v.destino, min(v.valor) FROM voo v

(14)

5. Um cliente deseja viajar de “Madison” para “NY” com no máximo 2 mudanças de vôo. Liste

todas as possibilidades de horário de partida de “Madison”, sabendo que ele quer chegar em

“NY” as 18:00.

SELECT o.origem, o.destino, o.hora_partida, o.hora_chegada, d.*

FROM voo o LEFT JOIN (SELECT v1.origem as v1origem, v1.destino as v1destino, v1.hora_partida as v1hora_partida, v1.hora_chegada as v1hora_chegada,

v2.origem as v2origem, v2.destino as v2destino, v2.hora_partida as v2hora_partida, v2.hora_chegada as v2hora_chegada

FROM (SELECT v.* FROM voo v

WHERE v.origem<>'NY') v1 LEFT JOIN (SELECT v.*

FROM voo v

WHERE v.destino='NY' AND v.hora_chegada<='18:00') v2 ON v1.destino=v2.origem

WHERE v1.destino='NY' or v2.destino='NY'

ORDER BY v2.destino) d ON o.destino=d.v1origem WHERE o.origem='Madison'

(15)

Item B – Consultas em Álgebra Relacional

1. Recupere o modelo e o fabricante dos aviões para os quais todos os pilotos certificados a

operá-los ganham mais que 80.000,00.

R1 <- SELECAO (salario <=80000) EMPREGADO

R2 <- R1 JOIN (idEmpregado=idEmpregado) CERTIFICADO R3 <- PROJECAO (idAviao) R2

R4 <- SELECAO (salario > 80000) EMPREGADO

R5 <- R4 JOIN (idEmpregado=idEmpregado) CERTIFICADO R6 <- R5 JOIN (idAviao=idAviao) AVIAO

R7 <- R6 NAOESTANDO (idAviao=idAviao) R3

R8 <- PROJECAO SEMREPETICAO(modelo, fabricante) R7

2. Identifique as rotas que podem ser pilotadas por todos os pilotos que ganham mais de

100.000,00.

R1 <- SELECAO (salario>100000) EMPREGADO

R2 <- R1 JOIN (idEmpregado=idEmpregado) CERTIFICADO R3 <- R2 JOIN (idAviao=idAviao) AVIAO

(16)

R5 <- R4 JOIN (idVoo=idVoo) VOO

R6 <- PROJECAO (nome, modelo, origem, destino) R5

3. Encontre o menor preço de vôo direto para cada par de cidades.

R1 <- PROJECAO (origem,destino,MINIMUM valor) VOO AGRUPANDO origem,destino

Observações:

Abaixo segue a tabela de pontos extras por participação em sala, conforme acordado durante as

resoluções de exercícios.

Tabela de Pontuação

Valor

Aluno(a)

Motivo

0,5

Karine Roberta

Participação no quadro na resolução da primeira lista de exercício;

0,5

David Ferreira

Participação no quadro na resolução da primeira lista de exercício;

0,5

David Ferreira

Participação na resolução do exercício no quadro, para auxiliar o

colega “Deivid Moreira” no exercício de modelo conceitual;

0,5

David Ferreira

Resolução do Exercício 04 da Segunda lista de Álgebra Relacional

no quadro;

Referências

Documentos relacionados

Assim, a prática da ginástica nas escolas tornou-se constante, e cada dia mais a modalidade ganhava espaço entre os homens.. Seu ressurgimento na Era Moderna se deu novamente por

Mas que para que isto ocorra, a empresa necessita dar autonomia e oportunidade ao funcionário; Liberdade: bons profissionais só aparecem em ambientes onde exista

Familiarize-se com a tela inicial Quando o telefone estiver no modo de Espera, você irá visualizar a tela de Espera.. A partir da tela de Espera, você pode visualizar o status de

Ao conectar seu aparelho a um PC, você pode transferir diretamente dados para o seu dispositivo e de seu dispositivo e utilizar o programa Samsung Kies.. › Conectar com o

Comportava na altura, aproximadamente, 1 O mil toneladas de crude, as quais foram lançadas ao oceano e algumas, posteriormente, distribuídas pela costa, pois, passados alguns

Realizar um projeto de intervenção educativa sobre a importância da adesão ao tratamento dos pacientes com Hipertensão Arterial Sistêmica na Unidade Básica de

O leitor possui um sistema de navegação intuitivo dos menus para o orientar entre as diferentes definições e operações. Ou pressione a tecla MENU para acessar o menu raiz.

Quanto à hipótese alternativa sugerida, o flúor fosfato acidulado realmente não foi eficaz na prevenção do manchamento por café de dentes bovinos clareados, enquanto a