CURSO TURNO DISCIPLINA PROFESSOR DATA
Informática Manhã Banco de Dados Jaclason Veras 24/11/23
ALUNO (A):
AVALIAÇÃO – 2º BIMESTRE
1. (5.0 Pontos) Crie um Banco de Dados chamado de “Agência de Viagens” com as
seguintes situações:
a) Tabelas a serem criadas para o Banco de Dados “Agência de Viagens”.
Clientes(id_cliente, nome_cliente, email_cliente, telefone_cliente, idade)
Destinos(id_destino, nome_destino, pais_destino, descricao)
Reservas(id_reserva, id_cliente, id_destino, data_reserva)
Voos(id_voo, id_destino, companhia_aerea, data_partida, data_chegada)
Hoteis(id_hotel, nome_hotel, id_destino, capacidade_quartos)
PacotesTurismo(id_pacote, id_destino, id_hotel, id_voo, preco)
GuiasTuristicos(id_guia, nome_guia, id_destino)
Pagamentos(id_pagamento, id_reserva, valor_pago, data_pagamento)
CompanhiasAereas(id_companhia, nome_companhia, pais_origem)
AgenciasParceiras(id_agencia, nome_agencia, pais_agencia)
RESPOSTA:
CREATE TABLE Clientes (
id_cliente INT PRIMARY KEY,
nome_cliente VARCHAR(50),
email_cliente VARCHAR(50),
telefone_cliente VARCHAR(15),
idade INT
);
CREATE TABLE Destinos (
id_destino INT PRIMARY KEY,
nome_destino VARCHAR(50),
pais_destino VARCHAR(50),
descricao TEXT
);
CREATE TABLE Reservas (
id_reserva INT PRIMARY KEY,
id_cliente INT,
id_destino INT,
data_reserva DATE,
FOREIGN KEY (id_cliente) REFERENCES Clientes(id_cliente),
FOREIGN KEY (id_destino) REFERENCES Destinos(id_destino)
);
CREATE TABLE Voos (
id_voo INT PRIMARY KEY,
id_destino INT,
companhia_aerea VARCHAR(50),
data_partida DATETIME,
data_chegada DATETIME,
FOREIGN KEY (id_destino) REFERENCES Destinos(id_destino)
);
CREATE TABLE Hoteis (
id_hotel INT PRIMARY KEY,
nome_hotel VARCHAR(50),
id_destino INT,
capacidade_quartos INT,
FOREIGN KEY (id_destino) REFERENCES Destinos(id_destino)
);
CREATE TABLE PacotesTurismo (
id_pacote INT PRIMARY KEY,
id_destino INT,
id_hotel INT,
id_voo INT,
preco DECIMAL(10, 2),
FOREIGN KEY (id_destino) REFERENCES Destinos(id_destino),
FOREIGN KEY (id_hotel) REFERENCES Hoteis(id_hotel),
FOREIGN KEY (id_voo) REFERENCES Voos(id_voo)
);
CREATE TABLE GuiasTuristicos (
id_guia INT PRIMARY KEY,
nome_guia VARCHAR(50),
id_destino INT,
FOREIGN KEY (id_destino) REFERENCES Destinos(id_destino)
);
CREATE TABLE Pagamentos (
id_pagamento INT PRIMARY KEY,
id_reserva INT,
valor_pago DECIMAL(10, 2),
data_pagamento DATE,
FOREIGN KEY (id_reserva) REFERENCES Reservas(id_reserva)
);
CREATE TABLE CompanhiasAereas (
id_companhia INT PRIMARY KEY,
nome_companhia VARCHAR(50),
pais_origem VARCHAR(50)
);
CREATE TABLE AgenciasParceiras (
id_agencia INT PRIMARY KEY,
nome_agencia VARCHAR(50),
pais_agencia VARCHAR(50)
);
b) Adicione 05 (cinco) registros para cada uma das tabelas conforme descrição abaixo:
Clientes (id_cliente, nome_cliente, email_cliente, telefone_cliente, idade)
(3, 'Mariana Oliveira', 'mariana@[Link]', '111222333', 28),
(4, 'Rafael Santos', 'rafael@[Link]', '444555666', 35),
(5, 'Isabela Lima', 'isabela@[Link]', '777888999', 22),
(6, 'José Silva', 'jose@[Link]', '123123123', 40),
(7, 'Camila Pereira', 'camila@[Link]', '987654321', 32);
Destinos (id_destino, nome_destino, pais_destino, descricao)
(3, 'Nova York', 'Estados Unidos', 'Cidade que nunca dorme'),
(4, 'Roma', 'Itália', 'Cidade eterna e cheia de história'),
(5, 'Cancún', 'México', 'Paraíso tropical nas praias do Caribe'),
(6, 'Sydney', 'Austrália', 'Vibrante cidade à beira-mar'),
(7, 'Cairo', 'Egito', 'Cidade das pirâmides e da história antiga');
Reservas (id_reserva, id_cliente, id_destino, data_reserva)
(3, 3, 3, '2023-09-10'),
(4, 4, 4, '2023-10-05'),
(5, 5, 5, '2023-11-20'),
(6, 6, 6, '2023-12-15'),
(7, 7, 7, '2024-01-02');
Voos (id_voo, id_destino, companhia_aerea, data_partida, data_chegada)
(3, 3, 'Delta Airlines', '2023-09-15 [Link]', '2023-09-15 [Link]'),
(4, 4, 'Alitalia', '2023-10-10 [Link]', '2023-10-10 [Link]'),
(5, 5, 'Aeromexico', '2023-11-25 [Link]', '2023-11-25 [Link]'),
(6, 6, 'Qantas', '2023-12-20 [Link]', '2023-12-20 [Link]'),
(7, 7, 'EgyptAir', '2024-01-10 [Link]', '2024-01-10 [Link]');
Hoteis (id_hotel, nome_hotel, id_destino, capacidade_quartos)
(3, 'Times Square Hotel', 3, 200),
(4, 'Colosseum View Hotel', 4, 150),
(5, 'Cancun Paradise Resort', 5, 300),
(6, 'Sydney Harbor Hotel', 6, 250),
(7, 'Nile Palace Hotel', 7, 180);
PacotesTurismo (id_pacote, id_destino, id_hotel, id_voo, preco)
(3, 3, 3, 3, 3500.00),
(4, 4, 4, 4, 4000.00),
(5, 5, 5, 5, 5000.00),
(6, 6, 6, 6, 4500.00),
(7, 7, 7, 7, 4200.00);
GuiasTuristicos (id_guia, nome_guia, id_destino)
(3, 'Michael Johnson', 3),
(4, 'Francesca Rossi', 4),
(5, 'Carlos Rodriguez', 5),
(6, 'Aisha Malik', 6),
(7, 'Ahmed Mahmoud', 7);
Pagamentos (id_pagamento, id_reserva, valor_pago, data_pagamento)
(3, 3, 3000.00, '2023-09-12'),
(4, 4, 3800.00, '2023-10-08'),
(5, 5, 4800.00, '2023-11-25'),
(6, 6, 4200.00, '2023-12-18'),
(7, 7, 4000.00, '2024-01-05');
CompanhiasAereas (id_companhia, nome_companhia, pais_origem)
(3, 'Delta Airlines', 'Estados Unidos'),
(4, 'Alitalia', 'Itália'),
(5, 'Aeromexico', 'México'),
(6, 'Qantas', 'Austrália'),
(7, 'EgyptAir', 'Egito');
AgenciasParceiras (id_agencia, nome_agencia, pais_agencia)
(3, 'TravelNow', 'Estados Unidos'),
(4, 'Viajes Itália', 'Itália'),
(5, 'TurismoMex', 'México'),
(6, 'Aussie Tours', 'Austrália'),
(7, 'Pyramids Travel', 'Egito');
RESPOSTA:
INSERT INTO Clientes (id_cliente, nome_cliente, email_cliente, telefone_cliente,
idade)
VALUES
(3, 'Mariana Oliveira', 'mariana@[Link]', '111222333', 28),
(4, 'Rafael Santos', 'rafael@[Link]', '444555666', 35),
(5, 'Isabela Lima', 'isabela@[Link]', '777888999', 22),
(6, 'José Silva', 'jose@[Link]', '123123123', 40),
(7, 'Camila Pereira', 'camila@[Link]', '987654321', 32);
INSERT INTO Destinos (id_destino, nome_destino, pais_destino, descricao)
VALUES
(3, 'Nova York', 'Estados Unidos', 'Cidade que nunca dorme'),
(4, 'Roma', 'Itália', 'Cidade eterna e cheia de história'),
(5, 'Cancún', 'México', 'Paraíso tropical nas praias do Caribe'),
(6, 'Sydney', 'Austrália', 'Vibrante cidade à beira-mar'),
(7, 'Cairo', 'Egito', 'Cidade das pirâmides e da história antiga');
INSERT INTO Reservas (id_reserva, id_cliente, id_destino, data_reserva)
VALUES
(3, 3, 3, '2023-09-10'),
(4, 4, 4, '2023-10-05'),
(5, 5, 5, '2023-11-20'),
(6, 6, 6, '2023-12-15'),
(7, 7, 7, '2024-01-02');
INSERT INTO Voos (id_voo, id_destino, companhia_aerea, data_partida,
data_chegada)
VALUES
(3, 3, 'Delta Airlines', '2023-09-15 [Link]', '2023-09-15 [Link]'),
(4, 4, 'Alitalia', '2023-10-10 [Link]', '2023-10-10 [Link]'),
(5, 5, 'Aeromexico', '2023-11-25 [Link]', '2023-11-25 [Link]'),
(6, 6, 'Qantas', '2023-12-20 [Link]', '2023-12-20 [Link]'),
(7, 7, 'EgyptAir', '2024-01-10 [Link]', '2024-01-10 [Link]');
INSERT INTO Hoteis (id_hotel, nome_hotel, id_destino, capacidade_quartos)
VALUES
(3, 'Times Square Hotel', 3, 200),
(4, 'Colosseum View Hotel', 4, 150),
(5, 'Cancun Paradise Resort', 5, 300),
(6, 'Sydney Harbor Hotel', 6, 250),
(7, 'Nile Palace Hotel', 7, 180);
INSERT INTO PacotesTurismo (id_pacote, id_destino, id_hotel, id_voo, preco)
VALUES
(3, 3, 3, 3, 3500.00),
(4, 4, 4, 4, 4000.00),
(5, 5, 5, 5, 5000.00),
(6, 6, 6, 6, 4500.00),
(7, 7, 7, 7, 4200.00);
INSERT INTO GuiasTuristicos (id_guia, nome_guia, id_destino)
VALUES
(3, 'Michael Johnson', 3),
(4, 'Francesca Rossi', 4),
(5, 'Carlos Rodriguez', 5),
(6, 'Aisha Malik', 6),
(7, 'Ahmed Mahmoud', 7);
INSERT INTO Pagamentos (id_pagamento, id_reserva, valor_pago,
data_pagamento)
VALUES
(3, 3, 3000.00, '2023-09-12'),
(4, 4, 3800.00, '2023-10-08'),
(5, 5, 4800.00, '2023-11-25'),
(6, 6, 4200.00, '2023-12-18'),
(7, 7, 4000.00, '2024-01-05');
INSERT INTO CompanhiasAereas (id_companhia, nome_companhia, pais_origem)
VALUES
(3, 'Delta Airlines', 'Estados Unidos'),
(4, 'Alitalia', 'Itália'),
(5, 'Aeromexico', 'México'),
(6, 'Qantas', 'Austrália'),
(7, 'EgyptAir', 'Egito');
INSERT INTO AgenciasParceiras (id_agencia, nome_agencia, pais_agencia)
VALUES
(3, 'TravelNow', 'Estados Unidos'),
(4, 'Viajes Itália', 'Itália'),
(5, 'TurismoMex', 'México'),
(6, 'Aussie Tours', 'Austrália'),
(7, 'Pyramids Travel', 'Egito');
c) Com base nas tabelas de exemplo Clientes, Destinos, Reservas, Voos, Hotéis,
Pacotes Turismo, Guias Turísticos, Pagamentos, Companhias Aéreas e Agências
Parceiras, qual seria o código SQL para responder às seguintes questões:
1) Liste todos os destinos disponíveis.
SELECT nome_destino
FROM Destinos;
2) Obtenha informações básicas dos clientes.
SELECT nome_cliente, email, telefone
FROM Clientes;
3) Liste as reservas ativas.
SELECT id_reserva, id_cliente, id_destino, status, data_reserva
FROM Reservas
WHERE status = 'Ativa';
4) Liste todos os pacotes turísticos disponíveis.
SELECT nome_destino, custo
FROM PacotesTurismo, Destinos
WHERE PacotesTurismo.id_destino = Destinos.id_destino;
5) Liste os pagamentos realizados.
SELECT id_pagamento, id_reserva, valor_pago, data_pagamento
FROM Pagamentos;
6) Liste os pacotes turísticos com custo abaixo de R$ 3000.
SELECT Destinos.nome_destino, [Link]
FROM PacotesTurismo, Destinos
WHERE PacotesTurismo.id_destino = Destinos.id_destino
AND [Link] < 3000;
7) Renomeie a coluna ‘data_reserva’ para ‘data_agendamento’ na tabela ‘Reservas’.
ALTER TABLE Reservas
RENAME COLUMN data_reserva TO data_agendamento;
8) Liste as reservas que foram confirmadas.
SELECT Reservas.id_reserva, Clientes.nome_cliente
FROM Reservas, Clientes
WHERE Reservas.id_cliente = Clientes.id_cliente
AND [Link] = 'Confirmada';
9) Identifique os clientes que ainda não fizeram reservas.
SELECT Clientes.nome_cliente
FROM Clientes
WHERE Clientes.id_cliente NOT IN (SELECT DISTINCT id_cliente FROM Reservas);
10) Liste os clientes com mais de 30 anos.
SELECT nome_cliente, idade
FROM Clientes
WHERE idade > 30;
11) Liste o nome do cliente, o destino da reserva e a data de pagamento associada a cada
reserva.
SELECT Clientes.nome_cliente, [Link], Pagamentos.data_pagamento
FROM Clientes
INNER JOIN Reservas ON Clientes.id_cliente = Reservas.id_cliente
INNER JOIN Pagamentos ON Reservas.id_reserva = Pagamentos.id_reserva;
12) Liste todos os destinos ordenados por nome.
SELECT nome_destino
FROM Destinos
ORDER BY nome_destino;
13) Identifique os destinos com mais de 05 (cinco) reservas.
SELECT Destinos.nome_destino, COUNT(Reservas.id_reserva)
FROM Destinos, Reservas
WHERE Destinos.id_destino = Reservas.id_destino
GROUP BY Destinos.nome_destino
HAVING COUNT(Reservas.id_reserva) > 5;
14) Liste as companhias aéreas cujo país de origem é o Brasil.
SELECT nome_companhia
FROM CompanhiasAereas
WHERE pais_origem = 'Brasil';
15) Liste os voos com mais de 50 (cinquenta) lugares disponíveis.
SELECT Voos.id_voo, COUNT(Reservas.id_reserva)
FROM Voos, Reservas
WHERE Voos.id_voo = Reservas.id_voo
GROUP BY Voos.id_voo
HAVING COUNT(Reservas.id_reserva) > 50;
16) Liste os destinos que têm pelo menos uma reserva ativa.
SELECT DISTINCT Destinos.nome_destino
FROM Destinos, Reservas
WHERE Destinos.id_destino = Reservas.id_destino AND [Link] = 'Ativa';
17) Adicione uma coluna chamada cidade à tabela Clientes.
ALTER TABLE Clientes
ADD COLUMN cidade VARCHAR(50);
18) Liste os pacotes turísticos ordenados pelo custo, do mais barato para o mais caro.
SELECT nome_destino, custo
FROM PacotesTurismo, Destinos
WHERE PacotesTurismo.id_destino = Destinos.id_destino
ORDER BY custo;
19) Liste as reservas feitas por clientes com menos de 25 anos.
SELECT id_reserva, id_cliente, id_destino, data_reserva
FROM Reservas, Clientes
WHERE Reservas.id_cliente = Clientes.id_cliente AND [Link] < 25;
20) Atualize a cidade para 'São Paulo' para todos os clientes que têm mais de 25 anos.
UPDATE Clientes
SET cidade = 'São Paulo'
WHERE idade > 25;
21) Adicione uma restrição de chave estrangeira à tabela ‘Reservas’ referenciando a
coluna ‘id_cliente’ na tabela ‘Clientes’.
ALTER TABLE Reservas
ADD CONSTRAINT fk_cliente
FOREIGN KEY (id_cliente) REFERENCES Clientes(id_cliente);
22) Remova a coluna ‘telefone’ da tabela ‘Clientes’.
ALTER TABLE Clientes
DROP COLUMN telefone;
23) Exclua todas as reservas onde o destino é 'Paris' na tabela ‘Agendamentos’.
DELETE FROM Agendamentos
WHERE id_destino = (SELECT id_destino FROM Destinos WHERE nome_destino =
'Paris');
2. (5.0 Pontos) Converta o Modelo Conceitual abaixo para o Modelo Físico usando a
Linguagem SQL. Apresente o código SQL utilizado no Banco de Dados “Colégio
Integral”.
EXEMPLO:
Modelo Físico:
CREATE TABLE sala (
nro_sala integer PRIMARY KEY,
descricao varchar(256));
...
RESPOSTA:
- Será analisado a construção da estrutura completa (Tabelas, Atributos, Chaves e
Relacionamentos) do Banco de Dados.
BOA PROVA!