INSTITUTO POLITÉCNICO DO PORTO INSTITUTO SUPERIOR DE ENGENHARIA DO PORTO DEPARTAMENTO ENGª INFORMÁTICA EXERCÍCIO 04 DE BDDDA - 2007-2008 - 1ºS. Será realizado nas aulas práticas de 05 de Novembro a 07 de Dezembro de 2007. A avaliação será efectuada entre 17 e 21 de Dezembro de 2007. A componente do trabalho prático da disciplina corresponde a 40% da nota final. Cada aluno pode ter uma classificação diferente da dos colegas de grupo, reflectindo deste modo o seu desempenho no trabalho e na discussão do mesmo. O trabalho será dividido em 3 fases: 1. Modelação e Implementação da BD a. Elaborar o esquema relacional: envolve a identificação das entidades e relações relativamente ao problema descrito e que poderá ser completado e trabalhado pelos alunos. O modelo deve estar normalizado e deve indicar explicitamente as escolhas efectuadas. b. Criação da BD relacional: criar tabelas e restrições tendo em conta o modelo de dados desenvolvido. Introdução de dados para exemplificação de funcionamento. (utilização do SQL para criação das tabelas e inserção dos dados). 2. Produzir scripts em PL/SQL para questões com diferentes graus de complexidade e exemplificativas do uso de todos os construtores da linguagem. • Criar • Criar • Criar • Criar • Criar views procedimentos armazenados e funções definidas pelo utilizador triggers e garantir o seu cumprimento listagens um menu de entrada (valorização). 3. Relatório final O relatório deverá conter uma capa contendo a seguinte informação: Número de identificação do grupo Tema do trabalho Número e nome de todos os alunos do grupo O relatório deverá constar, pelo menos: Uma secção com a descrição do tema e objectivos da base de dados; Uma secção com o modelo de dados, contendo as opções tomadas; Uma secção com o código SQL que criou as tabelas e restrições; Uma secção com o código SQL usado para as views, triggers, stored procedures e functions; Uma secção contendo uma discussão de limitações/opções tomadas para a implementação da BD. Empresa Gestora de Máquinas Dispensadoras de Filmes Suponha uma empresa que possui diversas máquinas de distribuição de filmes, baseada em cartóes pré-carregados. O cliente pode carregar o seu cartão várias vezes e com o montante que quiser. Quando vai alugar um filme, em formato BlueRay ou DVD, é-lhe cobrado um determinado valor (custo fixo) que lhe permite ter o filme por um determinado número de horas. Na altura da devolução, se o cliente tiver ficado com o filme por um período de tempo superior às horas que tinha pago, é-lhe cobrado um valor por cada hora extra. No aluguer é calculado o custo fixo e na devolução é feito o acerto do preço, se for caso disso. A empresa possui diversas cópias de cada um dos filmes, e, como é possível alugar numa máquina e devolver noutra, há a necessidade de regularmente efectuar uma redistribuição das cópias pelas diversas máquinas por forma a equilibrar a possibilidade de oferta. Não é possível efectuar alugueres quando o saldo do cartão é insuficiente para cobrir o custo fixo, no entanto, o saldo do cartão pode ficar negativo após a devolução de uma cópia caso haja a necessidade de cobrar horas extra. Requisitos globais Modelo relacional. Script de criação do modelo de dados. Script para inserir valores. Requisitos particulares Implementação de toda a lógica em Oracle PL/Sql. Todo o trabalho poderá ser testado executando blocos de código PL/Sql e analisando a saída para o ecrã. 1. Procedimento que permita criar cópias de filmes, de um determinado formato. 2. Procedimento para efectuar o carregamento dos cartões. 3. View que mostre as cópias que estão disponíveis no instante actual. 4. Função que devolva o custo fixo associado a uma cópia de um filme. 5. Função que devolva o custo por hora extra associado a uma cópia de um filme. 6. Procedimento para alugar (cópias de) filmes. 7. Procedimento para devolver (cópias de) filmes. 8. Procedimento para distribuir cópias de filmes, com vista a equilibrar a oferta. 9. Trigger que atribua bónus sobre os carregamentos, quando estes ultrapassam determinados valores. Por exemplo, para carregamaentos de 20€ é oferecido um bónus de 1€, para carregamentos de 40€ um bónus de 5€, etc. Estes valores devem ser parametrizados. (Valorização) Os processos descritos anteriormente (carregamento, aluguer, devolução) têm associadas acções que podem ser implementadas recorrendo a triggers. Altere os procedimentos e escreva os respectivos triggers. Nota: São permitidas alterações à descrição efectuada desde que seja no sentido de clarificação do funcionamento do modelo. Implementações extra ficarão ao critério de cada grupo de trabalho e serão devidamente valorizadas. No entanto, só deverão ser implementadas após o que foi solicitado.