O documento descreve um sistema de estacionamento que armazena informações sobre clientes, vagas e estacionamentos. Ele também descreve um cenário de uma empresa de veículos espaciais que precisa armazenar dados sobre peças, fornecedores e projetos, bem como as associações entre eles. Por fim, apresenta exercícios sobre modelagem de banco de dados e consultas SQL envolvendo essas tabelas.
1. INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E
TECNOLOGIA DO NORTE DE MINAS GERAIS
Campus Januária
EXERCÍCIO AVALIATIVO BD2
Prof. Suzana Mota 09/01/2018
Aluno: ______________________________________________________________________
1) Defina o modelo conceitual, lógico e físico do BD descrito abaixo:
Uma garagem para estacionamento de veículos pretende implementar um sistema que lhe
permita administrar a informação relativa ao estacionamento dos seus clientes. A garagem é
composta por um conjunto de vagas cada uma podendo estar ocupada ou não. Há dois tipos de
vagas: avulsa (se houver disponibilidade) ou mensal. Cada vaga tem um preço – a avulso tem um
custo por hora e o mensal um custo fixo. Os preços serão diferenciados de acordo com o tipo de
veículo: automóvel ou moto. Cada vaga mensal possui um cliente associado. Para cada cliente é
registrado seu nome e CPF, sendo que um dado cliente pode contratar várias vagas mensais. A
cada vez que um cliente estacionar um veículo, deverá se armazenar o CPF do cliente, código da
vaga, a data/hora de entrada e de saída, a placa do veículo estacionado e o custo gerado (que
pode ser null para clientes mensais).
2) Considere um problema de modelagem em que a empresa construtora de veículos espaciais
“Star Trek” necessita armazenar em seu Banco de Dados informações sobre as peças que utiliza
em cada projeto de veículo e os fornecedores destas peças. O banco de dados deve ser capaz de
oferecer respostas rápidas e precisas sobre as peças, fornecedores e projetos realizados bem
como as associações entre estes elementos, ou seja, a quantidade de peças fornecida por uma
determinada empresa e utilizadas em um projeto. As peças são identificadas por um código,
sendo utilizada a cor das gavetas onde estão colocadas as peças para uma localização visual mais
rápida por parte dos funcionários. Para a especificação das compras é necessário o nome e o
preço atual de cada peça. Para a emissão correta das notas de compra e dos pagamentos é
necessário o nome dos FORNECEDORES bem como a cidade e um código de identificação. A
categoria de cada fornecedor é utilizada para indicar a quantidade de seus produtos e serviços.
Os PROJETOS de veículos construídos pela “Star Trek” possuem um nome, código de
identificação, a duração para a montagem do veículo e o custo de cada veículo (incluindo peças e
serviços).
a) Considerando o cenário acima, defina as tabelas PECA, FORNECEDOR, PROJETO e
FORNECE_PARA, com as respectivas chaves primárias.
b) Faça uma inserção inicial de dados. Dica: verifique as informações pedidas nas consultas, de
maneira a inserir dados que permitam respostas não vazias.
c) Realize uma consulta que exiba o nome de todas as peças.
d) Realize uma consulta que exiba o nome e código dos fornecedores de Januária.
2. e) Realize uma consulta que exiba o nome e a duração em dias de cada projeto.
f) Realize uma consulta que exiba o nome dos projetos de custo menor que R$ 3000,00.
g) Realize uma consulta que exiba os nomes das peças armazenadas nas gavetas de cor vermelha
e com preço maior que R$ 500,00.
h) Realize uma consulta que exiba os nomes das peças armazenadas nas gavetas de cor vermelha
e com preço maior que R$25,00, em ordem decrescente de preço.
i) Realize uma consulta que exiba a quantidade total de peças utilizadas em cada projeto.
j) Apague todas as tabelas.
3) Utilizando as seguintes tabelas, faça:
a) Crie uma view que exiba todo os nomes de funcionários que recebem salários maiores que
3.000 reais.
b) Crie um stored procedure que assim que um empregado seja demitido, ou seja, preenchida sua
data de rescisão, o sistema inclua automaticamente um registro na tabela há_vagas.
c) Crie um procedure chamado vagas_em_aberto que mostre a quantidade de vagas em aberto.