BANCO-DADOS-II - Unicesumar
BANCO-DADOS-II - Unicesumar
BANCO-DADOS-II - Unicesumar
Bons estudos!
1. Crie o esquema de banco de dados para o sistema de gerenciamento e hospedagens hoteleiras
nomeado “hospedar_db”.
3. Insira dados artificiais nas tabelas "Hotel" (2 hotéis), "Quarto"(5 para cada hotel),
"Cliente"(3 clientes) e "Hospedagem" (20 hospedagens, 5 para cada um dos “Status_hosp”)
para simular hotéis, quartos, clientes e hospedagens.
INSERT INTO Hotel (hotel_id, nome, cidade, uf, ratting)
VALUES
(1, 'Hotel A', 'Cidade A', 'UF', 4),
(2, 'Hotel B', 'Cidade B', 'UF', 3);
a. Listar todos os hotéis e seus respectivos quartos, apresentando os seguintes campos: para
hotel, nome e cidade; para quarto, tipo e preco_diaria;
SELECT h.nome AS hotel_nome, h.cidade, q.tipo, q.preco_diaria
FROM Hotel h
JOIN Quarto q ON h.hotel_id = q.hotel_id;
d. Apresentar o cliente com maior número de hospedagens (não importando o tempo em que
ficou hospedado);
h. Listar o quanto cada cliente que gastou em hospedagens (status_hosp igual a “finalizada”),
em ordem decrescente por valor gasto.
SELECT C.nome, SUM(Hs.valor_total_hosp) AS total_gasto
FROM Hospedagem Hs
JOIN Cliente C ON Hs.cliente_id = C.cliente_id
WHERE Hs.status_hosp = 'finalizada'
GROUP BY C.nome
ORDER BY total_gasto DESC;
m. Mudar o nome da coluna “classificacao” da tabela Hotel para “ratting” (via código).
ALTER TABLE Hotel RENAME COLUMN classificacao TO ratting;
UPDATE Hospedagem
SET valor_total_hosp = v_valor_total
WHERE hospedagem_id = p_hospedagem_id;
END
UPDATE Hospedagem
SET dt_checkout = p_data_checkout, status_hosp = 'finalizada'
WHERE hospedagem_id = p_hospedagem_id;
END
a. Criar uma function chamada "TotalHospedagensHotel" que aceita hotel_id como parâmetro.
A função deve retornar o número total de hospedagens realizadas em um determinado hotel.
CREATE FUNCTION TotalHospedagensHotel(p_hotel_id INT)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE v_total_hospedagens INT;
SELECT COUNT(*)
INTO v_total_hospedagens
FROM Hospedagem Hs
JOIN Quarto Q ON Hs.quarto_id = Q.quarto_id
WHERE Q.hotel_id = p_hotel_id;
RETURN v_total_hospedagens;
END
b. Criar uma function chamada "ValorMedioDiariasHotel" que aceita hotel_id como
parâmetro. A função deve calcular e retornar o valor médio das diárias dos quartos deste hotel.
CREATE FUNCTION ValorMedioDiariasHotel(p_hotel_id INT)
RETURNS DECIMAL(10, 2)
DETERMINISTIC
BEGIN
DECLARE v_valor_medio DECIMAL(10, 2);
RETURN v_valor_medio;
END
IF EXISTS (
SELECT 1
FROM Hospedagem
WHERE quarto_id = p_quarto_id
AND p_data BETWEEN dt_checkin AND dt_checkout
AND status_hosp IN ('reserva', 'hospedado')
) THEN
SET v_disponivel = FALSE;
ELSE
SET v_disponivel = TRUE;
END IF;
RETURN v_disponivel;
END