A base de dados deve também guardar informação relativa aos cursos, como sejam, o nome, o grau (licenciatura, mestrado ou doutoramento) e o conjunto de disciplinas do curso. Uma disciplina pode ser lecionada a vários cursos. Para as disciplinas deve ser guardado o código e o nome da disciplina, bem como as datas (decompostas em dia e hora de início) dos exames realizados à disciplina.
A base de dados deve também guardar informação relativa às compras de cada cliente, como sejam, o valor e a data (decomposta em dia e hora) da compra, os artigos adquiridos e o número de pontos obtidos na compra. Para além de obterem pontos ao comprarem determinados artigos, os clientes obtêm 3 pontos por cada dia que fizerem compras (se fizerem duas ou mais compras num mesmo dia só obtêm 3 pontos). Para os artigos deve ser guardada a seguinte informação: o código do artigo, a descrição, o preço unitário e os pontos que este dá (pode não dar nenhum). Os preços e os pontos de cada artigo podem variar ao longo do tempo. A informação relativa à troca de pontos por vales de compras por parte dos clientes deve ficar igualmente registada na base de dados (a relação entre o valor do vale e o número de pontos necessários para fazer a troca pode variar ao longo do tempo). Os vales, para além de poderem ser trocados por pontos, também podem ser comprados como qualquer outro artigo.
A base de dados deve também guardar informação relativa aos empregados que fazem a manutenção dos aviões, como sejam o número do BI, o nome, o endereço, o telefone e o tipo de aviões que está habilitado a fazer manutenção. A informação de cada serviço de manutenção inclui os empregados, o avião, a data, o código do tipo de serviço realizado e o número de horas de trabalho por empregado. Cada avião pode ser submetido a vários serviços de manutenção (diferentes) no mesmo dia.
A base de dados deve guardar informação relativa aos filmes, como sejam um número identificador do filme, o seu título, uma descrição do filme, a duração do aluguer a que está sujeito, a tarifa de aluguer, o custo em caso de perda, a duração do filme e o seu rating (que pode ser G, PG, PG-13, R ou NC-17). Deve guardar também informação relativa aos atores, como sejam um número identificador do ator, o seu nome e o seu apelido. A base de dados deve registar ainda que atores entram em que filmes. Os filmes pertencem a uma determinada categoria e cada categoria tem um número identificador e um nome.
A base de dados deve guardar ainda informação relativa aos clientes, como sejam um número identificador de cliente, a loja onde fez a inscrição, o seu nome, o seu apelido, a morada postal (decomposta em primeira linha de morada, segunda linha de morada, código postal, cidade, distrito e país), o número de telefone e o seu estado (que pode ser 1 para activo ou 0 para inactivo). A base de dados deve guardar também informação relativa ao inventário (i.e., o conjunto de DVDs que existem nas várias lojas), como sejam o número identificador de cada DVD, o filme que reproduzem, e a loja a que pertencem atualmente. Devem ficar ainda registados todos os alugueres que são feitos, guardando-se a data/hora do aluguer, o DVD alugado, o cliente que o alugou, a data de devolução, bem como qual o empregado que processou o aluguer. Devem guardar-se também todos os pagamentos efetuados por clientes, guardando-se o número identificador do pagamento, quem efetua e quem recebe o pagamento, a quantia e a data/hora do pagamento.
Seguem-se alguns comandos básicos de utilização do MySQL:
mysql -u guest guest
'
exit
' ou 'quit
'
status
'
help
' ou 'help contents
'
show tables;
'
describe TABLE_XPTO;
'
mysql -u guest dvds
' (caso pretenda repor a
versão inicial da base de dados, faça download do
seguinte ficheiro e execute o
comando 'mysql -u guest dvds < dvd.sql
').
Em seguida, crie consultas SQL para responder às seguintes questões sobre a base de dados DVDs PIPOCAS EM CASA (veja aqui o modelo relacional da base de dados).
RESERVA(NumReserva, DataReserva, BICliente, NomeCliente, {NumQuarto, TipoQuarto, {DataEstadia, PreçoNoite}}, PreçoTotal)
RESERVA_1NF(NumReserva, DataReserva, BICliente, NomeCliente, NumQuarto, TipoQuarto, DataEstadia, PreçoNoite, PreçoTotal)
BIBLIOTECA(NumExemplar, DataAquisição, TítuloObra, {NomeAutor}, {NumUtilizador, NomeUtilizador, DataRequisição, DataEntega})
BIBLIOTECA_1NF(NumExemplar, DataAquisição, TítuloObra, NomeAutor, NumUtilizador, NomeUtilizador, DataRequisição, DataEntega)
SELECT E, D FROM R WHERE C = 'x' AND B = 'y';