INSTITUTO POLITÉCNICO DO PORTO INSTITUTO SUPERIOR DE ENGENHARIA DO PORTO DEPARTAMENTO ENGª INFORMÁTICA TRABALHO PRÁTICO DE BDDAD - 2008-2009 - 1ºS. Será realizado nas aulas práticas de 3 de Novembro a 29 de Novembro de 2008. A avaliação será efectuada entre 2 e 6 de Dezembro de 2008. 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 views procedimentos armazenados e funções definidas pelo utilizador triggers e garantir o seu cumprimento listagens 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. GESTÃO DE IMOBILIÁRIA Implementação de uma base de dados para informatização da empresa ISEPIMOB. A ISEPIMOB actua no mercado imobiliário (moradias, apartamentos e terrenos), tendo basicamente três processos: 1. Angariação de imóveis: Processo que permite o registo de informação sobre imóveis. No processo de angariação fica acordado o lucro, ou seja, a percentagem negociada sobre o valor da venda. 2. Angariação de clientes: Processo de registo de potenciais compradores, sendo guardadas as suas preferências (por exemplo, tipologia T3, andar ou moradia, preço máximo, localização, etc.). 3. Venda: Processo de venda de imóveis. Na estrutura organizacional de colaboradores da empresa, cada nó superior tem uma percentagem financeira sobre o nó inferior (ver exemplo), ou seja, o vendedor, o angariador, assim como todos os colaboradores hierarquicamente superiores, beneficiam de comissões sobre as vendas efectuadas. As vendas e as angariações só podem ser efectuadas pelos elementos que não têm inferiores hierárquicos. Quando se efectiva uma venda, o funcionário responsável pela mesma e o angariador do imóvel (assim como todos os respectivos superiores) têm uma comissão percentual sobre o lucro negociado. António Tavares 10% Afonso Santos 25% Jorge Manuel 10% Afonso Manuel 50% Angariação 5% José Jota 30% Angariação 5% Susana Reis 3% Manuela Mota 12% Maria Oliveira 40% Angariação 5% Marta Silva 30% Angariação 5% Rui Nuno 35% Angariação 5% Marco Manuel 30% Angariação 5% No exemplo anterior, para uma venda de um imóvel com um lucro de 1000€, tendo o imóvel sido angariado pela Marta Silva e a venda efectuada pelo José Jota, as percentagens de comissões serão: José Jota: 30% * 1000 = 300€ Jorge Manuel: 10% * 300 = 30€ Afonso Santos: 25% * 30 = 7.5€ Marta Silva: 5% * 1000 = 50€ Susana Reis: 3% * 50 = 1.5€ António Tavares: 10% * 7.5 + 10% * 1.5 = 0.9€ Total a pagar a funcionários: = 392.9€ A empresa pretende que o seu novo sistema informático, para além de suportar os processos descritos anteriormente, consiga dar resposta aos seguintes requisitos: a) TRIGGER Sempre que for efectuado o registo de um imóvel, devem ser notificados todos os clientes cujas preferências individuais anteriormente definidas se enquadram nas características do imóvel angariado (basta ter pelo menos 3 requisitos compatíveis, por exemplo, tipologia, gama de preços, cidade). De igual modo, os angariadores desses clientes também devem ser notificados. As notificações devem ser simuladas com a inserção de uma mensagem numa tabela. b) FUNCTION fnc_percentagem(func_id integer, vend_id integer, ang_id integer) Função que devolva a percentagem a que um determinado funcionário tem direito, quando especificados dois funcionários (vendedor e angariador). Note-se que, nada impede que possam ser todos o mesmo funcionário. c) PROCEDURE prc_comissoes(nr_venda integer) O cálculo das comissões a pagar aos funcionários é feito a pedido do utilizador. O cálculo não implica o pagamento automático (os funcionários só recebem no final do mês), no entanto, as comissões a pagar devem ficar numa conta corrente dos respectivos funcionários. Não deve ser possível voltar a processar o cálculo das comissões para uma determinada venda se esta já tiver sido paga. Em todos os outros casos, um novo processamento implica a eliminação prévia dos registos da conta corrente do funcionário (para essa venda). d) PROCEDURE prc_validacao Deve haver um processo de validação das comissões. Não deverá ser permitido que o total de comissões a pagar seja superior a 60% do lucro das vendas, de modo a que a empresa também tenha o seu lucro. e) PROCEDURE prc_prospects Pretende-se com esta funcionalidade obter uma relação dos imóveis que verificam determinadas características, definidas por intermédio dos seguintes atributos: 1. Preço 2. Área (m2) 3. Localização (baixa, centro, periferia, …) 4. Região (Porto, Maia, …) 5. Tipologia (Terreno, V1, V2, …, T1, T2, …) 6. Acabamentos (regulares, luxo, …) 7. Estado (novo, usado, mais de 30 anos, …) Esta relação deve ser ordenada da seguinte forma. Primeiro são apresentados os imóveis que verificam todas as características, em seguida, os que verificam todas menos o preço, depois os que verificam todas menos o preço e a área, e assim sucessivamente. Requisitos globais Esquema relacional (Visio, jpg, etc.). Script (SQL_DDL) para criação do esquema relacional, incluindo todas as restrições de integridade. Script (SQL-DML) para inserir alguns registos básicos nas tabelas. 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ã. 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.