• 0
Sign in to follow this  
KalleckD

Duvida postgres view com trigger?

Question

Não estou conseguindo resolver os seguintes problemas, poderiam me ajudar?: 

1- O proprietário da empresa deseja obter constantemente um relatório que apresenta
qual o veículo que foi alugado pela empresa, exibindo os dados do veículo, total de
quilometragem rodada nas locações, a quantidade de locações realizadas e, por fim,
uma média de quilômetros rodados a cada locação. Crie uma view para satisfazer esta
necessidade

2- É necessário fazer o controle da quilometragem do veículo. Ou seja, ao final de uma
locação deve ser atualizado no sistema (tabela carros) a quantidade de quilômetros
que o veículo rodou. 

create table sedes(
id numeric(10),
nome varchar(50) not null,
endereco varchar(50) not null,
telefone varchar(20) not null,
nomeGerente varchar(50) not null,
multa numeric(10,2) not null,
constraint pk_sedes primary key (id)
);

create table classesCarro(
id numeric(10),
nome varchar(20) not null check(nome in('popular', 'luxo', 'super luxo')),
valorDiario numeric(10,2) not null,
constraint pk_classesCarro primary key (id)
);

create table clientes(
id numeric(10),
nome varchar(50) not null,
cnh varchar(20) not null,
validadeCnh date not null,
categoriaCnh varchar(3) not null,
constraint pk_clientes primary key (id)
);

create table carros(
id numeric(10),
placa varchar(10) not null,
modelo varchar(40) not null,
ano varchar(9) not null,
cor varchar(20) not null,
quilometragem numeric(10,2)
not null,
descricao varchar(100) not null,
situacao varchar(30) not null check(situacao in('alugado', 'disponivel', 'fora do ponto de origem')),
origemCarro numeric(10) not null,
localizacaoCarro numeric(10) not null,
classeCarro numeric(10) not null,
constraint pk_carros primary key(id),
constraint fk_carros_sedeOrigem foreign key
(origemCarro) references sedes(id),
constraint fk_carros_sedeLocAtual foreign
key (localizacaoCarro) references sedes(id),
constraint fk_carros_classe foreign key
(classeCarro) references classesCarro(id)
);

create table reservas(
id numeric(10),
diarias numeric(10) not null,
dataLocacao date not null,
dataRetorno date,
quilometrosRodados numeric(10,2),
multa numeric(10,2),
situacao varchar(15) not null check(situacao in('finalizada', 'em aberto')),
total numeric(10,2),
carroReserva numeric(10) not null,
clienteReserva numeric(10) not null,
sedeLocacao numeric(10) not null,
sedeDevolucao numeric(10),
constraint pk_reservas primary key (id),
constraint fk_reservas_sedesLocacao
foreign key (sedeLocacao) references
sedes(id),
constraint fk_reservas_sedesDevolucao
foreign key (sedeDevolucao) references
sedes(id),
constraint fk_reservas_carros foreign key
(carroReserva) references carros(id),
constraint fk_reservas_clientes foreign key
(clienteReserva) references clientes(id)
);

create sequence seq_sedes;
create sequence seq_classes;
create sequence seq_clientes;
create sequence seq_carros;
create sequence seq_reservas;

insert into sedes values(nextval('seq_sedes'), 'A', 'Rua EFB', '123456', 'Erika', 2.00);

insert into sedes values(nextval('seq_sedes'), 'B', 'Rua ITA', '654321', 'Pedro', 4.00);

insert into classesCarro values(nextval('seq_classes'), 'popular', 30.00);

insert into classesCarro values(nextval('seq_classes'), 'super luxo', 90.00);

insert into clientes values(nextval('seq_clientes'), 'Allan', '753951', '2020-12-03', 'AB');

insert into clientes values(nextval('seq_clientes'), 'Augusto', '951753', '2020-11-10', 'AB');

insert into carros values(nextval('seq_carros'), 'ABC-123', 'HB20', '2016', 'Branco', 120.00, 'Carro cheiroso', 'disponivel',(select id from sedes where nome = 'A'), (select id from sedes where nome = 'A'), (select id from classesCarro where nome = 'popular'));

insert into carros values(nextval('seq_carros'), 'CBA-321', 'Mercedes Benz', '2017', 'Preto', 400.00, 'Carro banco de couro', 'disponivel', (select id from sedes where nome = 'B'), (select id from sedes where nome = 'B'), (select id from classesCarro where nome = 'super luxo'));

insert into reservas values(nextval('seq_reservas'), 2, '2017-11-08', '2017-11-10', 20.00, 0, 'finalizada', 200.00, (select id from carros where modelo = 'HB20'), (select id from clientes where nome = 'Allan'), (select id from sedes where nome = 'A'), (select id from sedes where nome = 'A'));

insert into reservas values(nextval('seq_reservas'), 4, '2017-11-08', '2017-11-12', 20.00, 0, 'finalizada', 600.00, (select id from carros where modelo = 'Mercedes Benz'), (select id from clientes where nome = 'Augusto'), (select id from sedes where nome = 'B'), (select id from sedes where nome = 'B'));

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this