Você está na página 1de 18

Pontifícia Universidade Católica do Rio Grande do Sul

Banco de Dados 1 | Prof. Dra. Aline de Campos

Sistema de Banco de Dados de uma Agência de Viagens

Dalton Belman Albeche, Guilherme da Rosa Bohm, Henrique Ferrari Knack, Inácio Frick
Pimentel, Stéfano de Paris Carraro

Porto Alegre, 2023


PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

1. MODELAGEM CONCEITUAL

1.1. Apresentação do domínio de aplicação


O Sistema Integrado de Reservas para Agências de Viagens foi concebido para simplificar e
otimizar as operações relacionadas ao setor de viagens, proporcionando uma experiência eficiente
para clientes e empresas. No âmbito deste sistema, diversas entidades desempenham papéis
cruciais, cada uma com características específicas que contribuem para a gestão global do
processo de reservas.

As principais entidades envolvidas são:

• Cliente:
Representa os indivíduos que utilizam os serviços da agência de viagens.
Características: Identificados por CPF, Email; podem realizar diversas reservas e participar de
diferentes serviços, como voos, hotéis, veículos e passeios.
• Bilhete:
Refere-se às reservas de passagens aéreas para os clientes.
Características: Vinculado a um Voo específico; contém informações sobre a classe, assento e o
cliente associado.
• Quarto de Hotel:
Descreve os quartos disponíveis nos hotéis, incluindo número, tipo e status de disponibilidade.
Características: Associado a um Hotel específico; pode estar vinculado a uma Reserva.
• Veículo:
Detalha informações sobre os veículos disponíveis para locação, como placa, modelo e ano de
fabricação.
Características: Pertence a uma Locadora de Veículos; pode ser alugado por um Cliente.
• Passeio:
Descreve atividades turísticas oferecidas pela agência, incluindo informações sobre horários,
pontos de encontro e limites de participantes.
Características: Participado por Clientes; oferece experiências diversas.

Clientes são a base do sistema, identificados por Email e CPF, podendo realizar diversas reservas
em diferentes serviços como voos, hotéis, veículos e passeios. As reservas, por sua vez, gerenciam
detalhes específicos, como datas, quartos e clientes associados, enquanto os bilhetes estão
vinculados a voos específicos, contendo informações sobre classe, assento e clientes associados.

A entidade Voo representa informações mais detalhadas sobre voos, incluindo localizador,
companhia aérea, origem, destino, horários e aeronaves envolvidas, com bilhetes associados e
operados por uma aeronave específica. Os hotéis, por sua vez, são entidades que englobam
informações como código, endereço, nome, categoria, Email e telefone. Os quartos de hotel
descrevem as opções disponíveis, associados a um hotel específico e podendo estar vinculados a

2
PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

uma reserva, contendo informações sobre data de check-in, tempo de estadia e o cliente
associado.
Locadoras de veículos representam empresas que disponibilizam veículos para locação, com
informações detalhadas sobre código, nome e endereço. Veículos disponíveis para locação contêm
informações adicionais, como quantidade de rodas, e estão vinculados a uma locadora específica.
O sistema também incorpora a entidade Telefone para armazenar informações de contato dos
clientes, vinculando-se ao cliente por meio do CPF.

Passeio_Cliente, que relaciona clientes a passeios específicos, inclui informações sobre o preço,
horário e avaliação.

1.2. Diagrama Entidade-Relacionamento

3
PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

2. MODELAGEM LÓGICA

2.1. Modelo lógico visual

4
PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

2.2. Modelo lógico textual

CLIENTE (cpf, email, nome, cidade, rua)

TELEFONE (numero, cpf_cliente)


cpf_cliente referencia TELEFONE

HOTEL (codigo, endereco, nome, categoria, email, telefone)

5
PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

QUARTO_DE_HOTEL (numero, tipo, disponibilidade, data_checkin, tempo_estadia, cpf_cliente,


código_hotel)
cpf_cliente referencia CLIENTE
codigo_hotel referencia HOTEL

LOCADORA_DE_VEICULOS (codigo, nome, endereço)

VEICULO (placa, modelo, ano_fabricacao, disponibilidade, quantidade_rodas, cpf_cliente,


código_locadora)
cpf_cliente referencia CLIENTE
código_locadora referencia LOCADORA

VOO (localizador, companhia_aerea, origem, destino, hora_partida, hora_chegada)

BILHETE (codigo, classe, assento, cpf_cliente, localizador_voo)


cpf_cliente referencia CLIENTE
localizador_voo referencia VOO

PASSEIO (codigo, ponto_turistico, descricao, horario, avaliacao, ponto_encontro,


capacidade_max)

PASSEIO_CLIENTE (cpf_cliente, codigo_passeio, preco)


cpf_cliente referencia CLIENTE
codigo_passeio referencia PASSEIO

2.3. Normalização

6
PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

3. MODELAGEM FÍSICA

3.1. Dicionário de Dados

CLIENTE

Atributo Tipo Restrições Descrição


cpf varchar(11) NOT NULL, PK Cadastro de pessoa física único.
email varchar(150) NOT NULL Email do cliente.

nome varchar(100) NOT NULL Nome completo do cliente.

cidade varchar(100) NOT NULL Cidade de residência do cliente.

rua varchar(100) NULL Rua de residência do cliente.

TELEFONE

Atributo Tipo Restrições Descrição


numero varchar(20) NOT NULL, PK Número de telefone.
CPF do cliente que tem aquele número de
cpf_cliente varchar(11) NOT NULL, FK
telefone.

HOTEL

Atributo Tipo Restrições Descrição


codigo integer NOT NULL, PK Código único e sequencial para cada hotel.
endereco varchar(255) NOT NULL Local onde se localiza o hotel.

nome varchar(50) NOT NULL Armazena o nome do respectivo hotel.

categoria integer NOT NULL Número que indica a avaliação geral do hotel.

email varchar(255) NOT NULL Endereço de email para contato com o hotel.

telefone varchar(15) NOT NULL Número de telefone para contato com o hotel.

7
PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

QUARTO_DE_HOTEL

Atributo Tipo Restrições Descrição


numero integer NOT NULL, PK Número do quarto de hotel.
tipo varchar(50) NULL Tipo de quarto de hotel.

disponibilidade varchar(15) NOT NULL Se está disponível ou não.

data_checkin date NOT NULL Data de check-in do quarto.

tempo_estadia integer NOT NULL Tempo de estadia do quarto de hotel.

cpf_cliente varchar(11) NULL, FK Cpf do cliente que está hospedado no quarto.

codigo_hotel integer NOT NULL, FK Código do hotel que tem o quarto de hotel.

LOCADORA_DE_VEICULOS

Atributo Tipo Restrições Descrição


Código identificador, único de cada locadora de
codigo integer NOT NULL, PK
veículos no sistema.
nome varchar(100) NOT NULL Nome da locadora de veículos.

endereco varchar(255) NOT NULL Endereço completo da locadora por escrito.

VEICULO

Atributo Tipo Restrições Descrição


placa integer NOT NULL, PK Código único para identificação de cada veículo
modelo varchar(255) NOT NULL Modelo de fabricação de cada veículo

ano_fabricacao varchar(50) NOT NULL Armazena o ano em que o veículo

disponibilidade integer NOT NULL Indica a quantidade destes veículos disponíveis

quantidade_rodas integer NOT NULL Indica o número de rodas presente no veículo

cpf_cliente varchar(11) NULL, FK Referência o cliente que alugou este veículo

Referência a locadora da qual este veículo


codigo_locadora integer NOT NULL, FK
pertence

8
PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

VOO

Atributo Tipo Restrições Descrição


localizador varchar(50) NOT NULL, PK Código único e sequencial para localizar o voo.
companhia_aerea varchar(100) NOT NULL Companhia aérea responsável por realizar o voo.

origem varchar(100) NOT NULL Guarda o endereço do qual o voo decola.

destino varchar(100) NOT NULL Guarda o endereço do qual o voo pousa.

hora_partida TIMESTAMP NOT NULL Armazena o horário de partida do voo.


Armazena o horário previsto de chegada para o
hora_chegada TIMESTAMP NOT NULL
voo.

BILHETE

Atributo Tipo Restrições Descrição


Código único e sequencial para identificar o
codigo integer NOT NULL, PK
bilhete
classe varchar(30) NULL Armazena a classe do bilhete comprado
Guarda a posição do assento reservado ao
assento varchar(10) NOT NULL
bilhete

cpf_cliente varchar(11) NOT NULL, FK Referência o cliente que possui cada bilhete

localizador_voo Varchar(50) NOT NULL, FK Referência o voo que engloba cada bilhete

PASSEIO

Atributo Tipo Restrições Descrição


codigo integer NOT NULL, PK Código único para distinguir os passeios.
ponto_turistico varchar(100) NOT NULL Guarda o nome do ponto turístico.
Guarda a descrição das atrações e rotas seguidas
descricao varchar(250) NOT NULL
no passeio.

horario timestamp NOT NULL Guarda o horário de início do passeio.

Guarda a avaliação de feedback dos clientes que


avaliacao number NOT NULL
já compareceram ao passeio.
ponto_encontro varchar(255) NULL Armazena o endereço que será usado como

9
PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

ponto de encontro para o início do passeio caso


haja algum predefinido.
Guarda a capacidade máxima de pessoas
capacidade_max integer NULL suportadas no passeio, pode ser nula caso não
haja número máximo.

PASSEIO_CLIENTE

Atributo Tipo Restrições Descrição


Guarda o cpf do cliente, referenciando a
cpf_cliente varchar(11) NOT NULL, PK, FK
tabela cliente.
Guarda o código do passeio, referenciando a
codigo_passeio integer NOT NULL, PK, FK
tabela passeio.
Guarda o preço acordado para o cliente
preco integer NOT NULL
relativo à participação no passeio.

horario timestamp NOT NULL Guarda o horário de início do passeio.

Guarda a avaliação de feedback dos clientes


avaliacao number NOT NULL
que já compareceram ao passeio.

3.2. Implementação em SQL

3.2.1. Criação de tabelas

CREATE TABLE CLIENTE (


cpf VARCHAR(11) NOT NULL,
email VARCHAR(150) NOT NULL,
nome VARCHAR(100) NOT NULL,
cidade VARCHAR(100) NOT NULL,
rua VARCHAR(100) NULL,
PRIMARY KEY(cpf)
);

CREATE TABLE TELEFONE (


numero VARCHAR(20) NOT NULL,
cpf_cliente VARCHAR(11) NOT NULL,
PRIMARY KEY(numero),
FOREIGN KEY (cpf_cliente) REFERENCES CLIENTE(cpf)
);

CREATE TABLE HOTEL (


codigo INTEGER NOT NULL,
endereco VARCHAR(255) NOT NULL,
nome VARCHAR(100) NOT NULL,
categoria INTEGER NOT NULL,

10
PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

email VARCHAR(255) NOT NULL,


telefone VARCHAR(15) NOT NULL,
PRIMARY KEY (codigo)
);

CREATE TABLE QUARTO_DE_HOTEL (


numero INTEGER NOT NULL,
tipo VARCHAR(50) NULL,
disponibilidade VARCHAR(15) NOT NULL,
data_checkin DATE NOT NULL,
tempo_estadia INTEGER NOT NULL,
cpf_cliente VARCHAR(11) NULL,
codigo_hotel INTEGER NOT NULL,
PRIMARY KEY (numero),
FOREIGN KEY (cpf_cliente) REFERENCES CLIENTE(cpf),
FOREIGN KEY (codigo_hotel) REFERENCES HOTEL(codigo)
);

CREATE TABLE LOCADORA_DE_VEICULOS (


codigo INTEGER NOT NULL,
nome VARCHAR(100) NOT NULL,
endereco VARCHAR(250) NOT NULL,
PRIMARY KEY (codigo)
);

CREATE TABLE VEICULO (


placa VARCHAR(20) NOT NULL,
modelo VARCHAR(100) NOT NULL,
ano_fabricacao INTEGER NOT NULL,
disponibilidade VARCHAR(30) NOT NULL,
quantidade_rodas INTEGER NOT NULL,
cpf_cliente VARCHAR(11) NULL,
codigo_locadora INTEGER NOT NULL,
PRIMARY KEY (placa),
FOREIGN KEY (codigo_locadora) REFERENCES LOCADORA_DE_VEICULOS(codigo),
FOREIGN KEY (cpf_cliente) REFERENCES CLIENTE(cpf)
);

CREATE TABLE VOO (


localizador VARCHAR(50) NOT NULL,
companhia_aerea VARCHAR(100) NOT NULL,
origem VARCHAR(100) NOT NULL,
destino VARCHAR(100) NOT NULL,
hora_partida TIMESTAMP NOT NULL,
hora_chegada TIMESTAMP NOT NULL,
PRIMARY KEY (localizador)
);

CREATE TABLE BILHETE (


codigo INTEGER NOT NULL,
classe VARCHAR(30) NULL,

11
PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

assento VARCHAR(10) NOT NULL,


cpf_cliente VARCHAR(11) NOT NULL,
localizador_voo VARCHAR(50) NOT NULL,
PRIMARY KEY (codigo),
FOREIGN KEY (cpf_cliente) REFERENCES CLIENTE(cpf),
FOREIGN KEY (localizador_voo) REFERENCES VOO(localizador)
);

CREATE TABLE PASSEIO (


codigo INTEGER NOT NULL,
ponto_turistico VARCHAR(100) NOT NULL,
descricao VARCHAR(250) NULL,
horario TIMESTAMP NOT NULL,
avaliacao NUMBER NOT NULL,
ponto_encontro VARCHAR(255) NULL,
capacidade_max INTEGER NULL,
PRIMARY KEY (codigo)
);

CREATE TABLE PASSEIO_CLIENTE (


cpf_cliente VARCHAR(11) NOT NULL,
codigo_passeio INTEGER NOT NULL,
preco INTEGER NOT NULL,
PRIMARY KEY (cpf_cliente, codigo_passeio),
FOREIGN KEY (cpf_cliente) REFERENCES CLIENTE(cpf),
FOREIGN KEY (codigo_passeio) REFERENCES PASSEIO(codigo)
);

3.2.2. Inserção de dados


INSERT INTO CLIENTE (cpf, email, nome, cidade, rua) VALUES ('67452176701',
'joao.doe@hotmail.com', 'Joao Doeman', 'Marilia', 'General Hipolito, 1567');
INSERT INTO CLIENTE (cpf, email, nome, cidade, rua) VALUES ('99987105463',
'maria_silva@yahoo.com', 'Maria Silva', 'Salvador', 'Doutor Canabarro, 22');
INSERT INTO CLIENTE (cpf, email, nome, cidade, rua) VALUES ('34532100974',
'pedro.costela@outlook.com', 'Pedro Costela', 'Rio de Janeiro', 'Marcelino Soares, 98');
INSERT INTO CLIENTE (cpf, email, nome, cidade, rua) VALUES ('24201009166',
'marilene.rodrigues@outlook.com', 'Marilene Rodrigues', 'Uruguaiana', 'Rua de Cima, 2');
INSERT INTO CLIENTE (cpf, email, nome, cidade, rua) VALUES ('04299921345',
'jonatha.hermes@gmail.com', 'Jonathan Hermes', 'Porto Alegre', 'Renato Portaluppi, 33');

INSERT INTO TELEFONE (numero, cpf_cliente) VALUES ('998765000', '67452176701');


INSERT INTO TELEFONE (numero, cpf_cliente) VALUES ('993567108', '99987105463');
INSERT INTO TELEFONE (numero, cpf_cliente) VALUES ('975342291', '34532100974');
INSERT INTO TELEFONE (numero, cpf_cliente) VALUES ('945229994', '24201009166');
INSERT INTO TELEFONE (numero, cpf_cliente) VALUES ('922981907', '04299921345');

12
PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

INSERT INTO HOTEL (codigo, endereco, nome, categoria, email, telefone) VALUES (11, 'Rua
das Acácias, 123', 'Hotel Serenidade Palace', 4, 'hotelserenidade@contato.com', '987654321');
INSERT INTO HOTEL (codigo, endereco, nome, categoria, email, telefone) VALUES (22,
'Avenida dos Ipês, 456', 'Pousada Aurora', 4, 'pousadaaurora@contato.com', '912345678');
INSERT INTO HOTEL (codigo, endereco, nome, categoria, email, telefone) VALUES (33,
'Travessa das Oliveiras, 789', 'Resort Esmeralda', 3, 'resortesmeralda@contato.com', '998877665');
INSERT INTO HOTEL (codigo, endereco, nome, categoria, email, telefone) VALUES (44, 'Beco
das Rosas, 101', 'Grand Horizon Hotel', 5, 'grandhorizonhotel@contato.com', '934567890');
INSERT INTO HOTEL (codigo, endereco, nome, categoria, email, telefone) VALUES (55,
'Alameda das Magnólias, 222', 'Boutique Charme & Luxo', 4, 'boutiquecharmeluxo@contato.com',
'967890123');

INSERT INTO QUARTO_DE_HOTEL (numero, tipo, disponibilidade, data_checkin,


tempo_estadia, cpf_cliente, codigo_hotel) VALUES (101, 'Solteiro', 'Disponível',
TO_DATE('2023-08-15', 'YYYY-MM-DD'), 3, '67452176701', 11);
INSERT INTO QUARTO_DE_HOTEL (numero, tipo, disponibilidade, data_checkin,
tempo_estadia, cpf_cliente, codigo_hotel) VALUES (201, 'Solteiro', 'Disponível',
TO_DATE('2023-09-20', 'YYYY-MM-DD'), 1, '99987105463', 22);
INSERT INTO QUARTO_DE_HOTEL (numero, tipo, disponibilidade, data_checkin,
tempo_estadia, cpf_cliente, codigo_hotel) VALUES (301, 'Casal', 'Disponível', TO_DATE('2023-
12-25', 'YYYY-MM-DD'), 5, '34532100974', 33);
INSERT INTO QUARTO_DE_HOTEL (numero, tipo, disponibilidade, data_checkin,
tempo_estadia, cpf_cliente, codigo_hotel) VALUES (401, 'Suite', 'Disponível', TO_DATE('2023-
12-29', 'YYYY-MM-DD'), 7, '24201009166', 44);
INSERT INTO QUARTO_DE_HOTEL (numero, tipo, disponibilidade, data_checkin,
tempo_estadia, cpf_cliente, codigo_hotel) VALUES (501, 'Casal', 'Disponível', TO_DATE('2023-
06-10', 'YYYY-MM-DD'), 6, '04299921345', 55);

INSERT INTO LOCADORA_DE_VEICULOS (codigo, nome, endereco) VALUES (66,


'Supercarros Express', 'Avenida Velocidade Máxima, 123');
INSERT INTO LOCADORA_DE_VEICULOS (codigo, nome, endereco) VALUES (77,
'Velocidade Infinita Rent-a-Car', 'Rua Radical dos Carros, 456');
INSERT INTO LOCADORA_DE_VEICULOS (codigo, nome, endereco) VALUES (88, 'Máquinas
do Futuro Rental', 'Estrada Turbocharged, 789');
INSERT INTO LOCADORA_DE_VEICULOS (codigo, nome, endereco) VALUES (99, 'Turbo
Luxo Aluguel de Carros', 'Alameda do Pneu, 101');
INSERT INTO LOCADORA_DE_VEICULOS (codigo, nome, endereco) VALUES (111,
'Esquadrão Veloz Automotivo', 'Radiator Springs, 66');

INSERT INTO VEICULO (placa, modelo, ano_fabricacao, disponibilidade, quantidade_rodas,


cpf_cliente, codigo_locadora) VALUES ('VRRRUMM', 'TurboTech 5000', 2011, 'Disponível', 4,
'67452176701', 66);

13
PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

INSERT INTO VEICULO (placa, modelo, ano_fabricacao, disponibilidade, quantidade_rodas,


cpf_cliente, codigo_locadora) VALUES ('XPRSSIV', 'Velocity Cruiser', 2020, 'Disponível', 4,
'99987105463', 77);
INSERT INTO VEICULO (placa, modelo, ano_fabricacao, disponibilidade, quantidade_rodas,
cpf_cliente, codigo_locadora) VALUES ('CH4SEME', 'ThunderChaser GT', 2019, 'Disponível', 4,
'34532100974', 88);
INSERT INTO VEICULO (placa, modelo, ano_fabricacao, disponibilidade, quantidade_rodas,
cpf_cliente, codigo_locadora) VALUES ('ZOOMZOOM', 'WarpSpeed Racer', 2015, 'Disponível', 4,
'24201009166', 99);
INSERT INTO VEICULO (placa, modelo, ano_fabricacao, disponibilidade, quantidade_rodas,
cpf_cliente, codigo_locadora) VALUES ('K4TCHAU', 'Corvette C6', 2006, 'Disponível', 4,
'04299921345', 111);

INSERT INTO VOO (localizador, companhia_aerea, origem, destino, hora_partida, hora_chegada)


VALUES ('JKL258', 'SkyPulse Airlines', 'Rio de Janeiro', 'Tokyo', TO_TIMESTAMP('2021-09-11
21:45:00', 'YYYY-MM-DD HH24:MI:SS'), TO_TIMESTAMP('2021-09-10 23:05:00', 'YYYY-
MM-DD HH24:MI:SS'));
INSERT INTO VOO (localizador, companhia_aerea, origem, destino, hora_partida, hora_chegada)
VALUES ('MAR213', 'AeroVista Express', 'Cidade do Cabo', 'Vancouver',
TO_TIMESTAMP('2022-09-27 12:15:00', 'YYYY-MM-DD HH24:MI:SS'),
TO_TIMESTAMP('2022-09-27 22:45:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO VOO (localizador, companhia_aerea, origem, destino, hora_partida, hora_chegada)
VALUES ('KLP901', 'HorizonWing Airways', 'Barcelona', 'Sydney', TO_TIMESTAMP('2022-11-
09 23:40:00', 'YYYY-MM-DD HH24:MI:SS'), TO_TIMESTAMP('2022-11-13 02:10:00', 'YYYY-
MM-DD HH24:MI:SS'));
INSERT INTO VOO (localizador, companhia_aerea, origem, destino, hora_partida, hora_chegada)
VALUES ('IOK339', 'QuantumAir Travel', 'Marrakech', 'Bali', TO_TIMESTAMP('2020-10-10
09:55:00', 'YYYY-MM-DD HH24:MI:SS'), TO_TIMESTAMP('2020-10-10 19:35:00', 'YYYY-
MM-DD HH24:MI:SS'));
INSERT INTO VOO (localizador, companhia_aerea, origem, destino, hora_partida, hora_chegada)
VALUES ('IYT298', 'CelestialJets International', 'Reykjavik', 'Cancún', TO_TIMESTAMP('2023-
02-27 04:20:00', 'YYYY-MM-DD HH24:MI:SS'), TO_TIMESTAMP('2023-02-27 18:05:00',
'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO BILHETE (codigo, classe, assento, cpf_cliente, localizador_voo) VALUES (222,
'Econômica', 'J14', '67452176701', 'JKL258');
INSERT INTO BILHETE (codigo, classe, assento, cpf_cliente, localizador_voo) VALUES (333,
'Econômica', 'Y7', '99987105463', 'MAR213');
INSERT INTO BILHETE (codigo, classe, assento, cpf_cliente, localizador_voo) VALUES (444,
'Executiva', 'B2', '34532100974', 'KLP901');
INSERT INTO BILHETE (codigo, classe, assento, cpf_cliente, localizador_voo) VALUES (555,
'Executiva', 'M42', '24201009166', 'IOK339');

14
PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

INSERT INTO BILHETE (codigo, classe, assento, cpf_cliente, localizador_voo) VALUES (777,
'Primeira Classe', 'A33', '04299921345', 'IYT298');

INSERT INTO PASSEIO (codigo, ponto_turistico, descricao, horario, avaliacao, ponto_encontro,


capacidade_max) VALUES (123, 'Aventura Panorâmica', 'Escalada nas Montanhas',
TO_TIMESTAMP('2021-09-14 07:00:00', 'YYYY-MM-DD HH24:MI:SS'), 4, 'Em frente à Estação
de Trem', 20);
INSERT INTO PASSEIO (codigo, ponto_turistico, descricao, horario, avaliacao, ponto_encontro,
capacidade_max) VALUES (234, 'Exploração Cultural', 'Cidade Histórica a Pé',
TO_TIMESTAMP('2022-09-28 10:00:00', 'YYYY-MM-DD HH24:MI:SS'), 5, 'Praça Central', 30);
INSERT INTO PASSEIO (codigo, ponto_turistico, descricao, horario, avaliacao, ponto_encontro,
capacidade_max) VALUES (345, 'Rota Mágica', 'Cruzeiro ao Pôr do Sol',
TO_TIMESTAMP('2022-11-14 17:00:00', 'YYYY-MM-DD HH24:MI:SS'), 5, 'Porto Velho', 40);
INSERT INTO PASSEIO (codigo, ponto_turistico, descricao, horario, avaliacao, ponto_encontro,
capacidade_max) VALUES (456, 'Jornada Serena', 'Passeio Cultural Noturno a Barco',
TO_TIMESTAMP('2020-10-16 19:30:00', 'YYYY-MM-DD HH24:MI:SS'), 5, 'Cais Mauá', 70);
INSERT INTO PASSEIO (codigo, ponto_turistico, descricao, horario, avaliacao, ponto_encontro,
capacidade_max) VALUES (567, 'Caminhada Gastronômica', 'Trilha com Desgutação Italiana',
TO_TIMESTAMP('2023-03-03 14:20:00', 'YYYY-MM-DD HH24:MI:SS'), 3, 'Jardim Botânico',
10);

INSERT INTO PASSEIO_CLIENTE (cpf_cliente, codigo_passeio, preco) VALUES


('67452176701', 123, 100.00);
INSERT INTO PASSEIO_CLIENTE (cpf_cliente, codigo_passeio, preco) VALUES
('99987105463', 234, 20.00);
INSERT INTO PASSEIO_CLIENTE (cpf_cliente, codigo_passeio, preco) VALUES
('34532100974', 345, 300.00);
INSERT INTO PASSEIO_CLIENTE (cpf_cliente, codigo_passeio, preco) VALUES
('24201009166', 456, 250.00);
INSERT INTO PASSEIO_CLIENTE (cpf_cliente, codigo_passeio, preco) VALUES
('04299921345', 567, 180.00);

3.2.3. Seleção de dados


-- Ordena em ordem decrescente os nomes dos clientes
SELECT *
FROM CLIENTE
ORDER BY nome DESC;

-- Mostra o maior preço dos passeios


SELECT MAX(preco) AS maior_preco_passeio
FROM PASSEIO_CLIENTE;

-- Une as tabelas CLIENTE e PASSEIO de relacionamento N-N

15
PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

SELECT
c.cpf AS cpf_cliente,
c.nome AS nome_cliente,
p.codigo AS codigo_passeio,
p.ponto_turistico,
p.descricao,
p.horario,
p.avaliacao,
p.ponto_encontro,
p.capacidade_max,
pc.preco
FROM CLIENTE c
JOIN PASSEIO_CLIENTE pc ON c.cpf = pc.cpf_cliente
JOIN PASSEIO p ON pc.codigo_passeio = p.codigo;

-- Mostra os clientes que fizeram os passeios com avaliação de 4 a 5


SELECT
c.cpf AS cpf_cliente,
c.nome AS nome_cliente,
p.codigo AS codigo_passeio,
p.avaliacao
FROM CLIENTE c
JOIN PASSEIO_CLIENTE pc ON c.cpf = pc.cpf_cliente
JOIN PASSEIO p ON pc.codigo_passeio = p.codigo
WHERE p.avaliacao BETWEEN 4 AND 5;

-- Mostra apenas os clientes que participaram de pelo menos um passeio


SELECT
c.cpf AS cpf_cliente,
c.nome AS nome_cliente,
p.codigo AS codigo_passeio
FROM CLIENTE c
INNER JOIN PASSEIO_CLIENTE pc ON c.cpf = pc.cpf_cliente
INNER JOIN PASSEIO p ON pc.codigo_passeio = p.codigo;

-- Inclui todas as locadoras de veículos e mostra os veiculos cadastrados


CREATE VIEW VIEW_LOCADORA_VEICULO AS
SELECT
l.codigo AS codigo_locadora,
l.nome AS nome_locadora,
v.modelo,
v.placa,
v.ano_fabricacao,

16
PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

v.disponibilidade,
v.quantidade_rodas
FROM LOCADORA_DE_VEICULOS l
LEFT JOIN VEICULO v ON l.codigo = v.codigo_locadora;
SELECT * FROM VIEW_LOCADORA_VEICULO;

-- Mostra a média de dias de estadia de todos hotéis


SELECT
AVG(tempo_estadia) AS media_dias_estadia
FROM QUARTO_DE_HOTEL;

-- Seleciona telefones dos clientes


SELECT numero AS contato
FROM TELEFONE

UNION

-- Seleciona e-mails dos clientes


SELECT email AS contato
FROM CLIENTE

UNION

-- Seleciona e-mails dos hotéis


SELECT email AS contato
FROM HOTEL

-- E ordena os contatos em ordem crescente


ORDER BY contato ASC;

-- Mostra os dados do cliente juntamente aos dados do voo que ele fez
SELECT c.nome AS nome_cliente, c.cpf, v.localizador, v.companhia_aerea, v.origem, v.destino
FROM CLIENTE c
JOIN BILHETE b ON c.cpf = b.cpf_cliente
JOIN VOO v ON b.localizador_voo = v.localizador
ORDER BY c.nome;

-- Mostra os dados do cliente, o hotel que ele se hospedou, o modelo do carro que ele alugou e o
ponto turístico que ele visitou no passeio
SELECT
c.nome AS nome_cliente,

17
PROJETO DE APLICAÇÃO DE BANCO DE DADOS BANCO DE DADOS 1

c.cpf AS cpf_cliente,
c.cidade AS cidade_cliente,
c.rua AS rua_cliente,
h.nome AS nome_hotel,
h.endereco AS endereco_hotel,
v.modelo AS modelo_carro,
p.ponto_turistico AS ponto_turistico
FROM CLIENTE c
LEFT JOIN QUARTO_DE_HOTEL q ON c.cpf = q.cpf_cliente
LEFT JOIN HOTEL h ON q.codigo_hotel = h.codigo
LEFT JOIN VEICULO v ON c.cpf = v.cpf_cliente
LEFT JOIN PASSEIO_CLIENTE pc ON c.cpf = pc.cpf_cliente
LEFT JOIN PASSEIO p ON pc.codigo_passeio = p.codigo
ORDER BY c.nome;

4. CONSIDERAÇÕES FINAIS

Em conclusão, o desenvolvimento do Sistema Integrado de Reservas para Agências de Viagens revelou melhorias
significativas na gestão operacional do setor. Possíveis desdobramentos incluem a inserção de funcionalidades
como programas de fidelidade e feedback de clientes, enquanto a expansão para integração com provedores
externos e sistemas financeiros poderia potencializar a eficiência. Adotado por grandes agências, o sistema
demonstra adaptabilidade a diferentes modelos de negócios, destacando-se pela flexibilidade e escalabilidade.
Integrações adicionais, como análise de dados e CRM, oferecem oportunidades para uma visão estratégica
abrangente, posicionando o sistema como uma solução abrangente e moderna para o setor de viagens.

18

Você também pode gostar