IST 2009 Projecto de Bases de Dados (Parte 3) O projecto da disciplina de Bases de Dados consiste no desenho e implementação de uma base de dados para uma aplicação a ser usada na rede social chilltime.com. Pretendese implementar uma base de dados no sistema PostgreSQL e desenvolver um conjunto de consultas em SQL. Adicionalmente, pretende-se que seja desenvolvida uma camada aplicacional em PHP de interface com o utilizador. Este enunciado corresponde à terceira parte do projecto. 1 Objectivos A aplicação a desenvolver deverá usar a base de dados criada na parte 2 do projecto. A camada aplicacional será implementada em PHP. Os scripts PHP ficarão alojados no cluster sigma e serão invocados dentro do ambiente da rede social chilltime.com. 1.1 Preenchimento de inquéritos A aplicação deverá permitir que os utilizadores dessa rede social respondam a inquéritos criados por outros utilizadores. Para isso é necessário gerar dinamicamente a interface gráfica em HTML para cada inquérito existente na base de dados. Depois será necessário processar as respostas do utilizador ao inquérito, armazenar essas respostas na base de dados, calcular a pontuação total obtida no inquérito, e publicar o resultado final do inquérito como uma “novidade” na página de perfil do utilizador. 1.2 Desenvolvimento de inquéritos Pretende-se que a aplicação suporte também o desenvolvimento de inquéritos, permitindo a criação, edição e remoção de inquéritos. Isto significa poder criar, editar e remover perguntas do inquérito, bem como poder criar, editar e remover as respostas possı́veis para cada pergunta, seja de escolha múltipla ou de texto. Estas funcionalidades devem estar disponı́veis através da interface HTML da aplicação. Cada utilizador poderá criar e modificar os seus próprios inquéritos; outros utilizadores só poderão preencher esses inquéritos. A partir do momento em que um inquérito já tiver sido preenchido por um utilizador, não devem ser permitidas modificações nem a remoção desse inquérito. 1.3 Optimização da base de dados Um terceiro aspecto importante desta parte do projecto diz respeito à utilização de ı́ndices para optimizar as operações sobre a base de dados. IST Pág. 1 de 3 Bases de Dados 2 Funcionalidades O trabalho a desenvolver nesta parte do projecto consiste nos seguintes itens. 2.1 Desenvolvimento da Aplicação Usando a base de dados relacional criada na parte anterior do projecto, deve criar uma aplicação com as seguintes funcionalidades: (a) Geração dinâmica em PHP do formulário HTML para preenchimento de um inquérito existente na base de dados; (b) Submissão, processamento e armazenamento das respostas do utilizador a um inquérito; (c) Cálculo em SQL da pontuação e do resultado final do inquérito e apresentação do resultado ao utilizador via interface HTML; (d) Publicação do tı́tulo e do resultado final do inquérito no perfil do utilizador na plataforma chilltime.com; (e) Criação de um novo inquérito, perguntas e respostas possı́veis via interface HTML; (f) Alteração de inquérito existente, perguntas e respostas possı́veis via interface HTML; (g) Apresentação em HTML dos 10 utilizadores com maior pontuação num dado inquérito; (h) Uma funcionalidade extra à escolha que seja útil neste domı́nio de aplicação e que envolva PHP, HTML e SQL. Todas as funcionalidades devem procurar tirar o máximo partido da linguagem SQL, ou seja, devem ser utilizadas sempre que possı́vel consultas SQL em vez código aplicacional em PHP ou código procedimental em PL/pgSQL. 2.2 Índices e optimização Assuma que nenhum ı́ndice foi criado para as tabelas da base de dados. Para cada consulta SQL que utilizou na aplicação especifique qual ou quais os ı́ndices apropriados para optimizar o seu processamento. Em particular, indique para cada consulta: (a) Quais os atributos indexados; (b) Se o ı́ndice é primário ou secundário e se deve ser denso ou se pode ser esparso; (c) Se o ı́ndice é do tipo b-tree ou do tipo hash; (d) Qual a instrução SQL necessária para criar o ı́ndice. Justifique as suas escolhas. Assuma que a optimização de uma consulta é independente da optimização das restantes. IST Pág. 2 de 3 Bases de Dados 3 Relatório e Avaliação O relatório a entregar deve começar com uma folha de rosto com a indicação “Projecto de Bases de Dados, Parte 3”, o nome e número dos alunos, o número do grupo e o turno a que o grupo pertence. O relatório deve ser entregue em duas versões: (a) Versão electrónica em formato PDF entregue via Fénix até às 23h59 do dia 5 de Dezembro de 2009; (b) Versão impressa entregue na primeira aula de laboratório após o prazo anterior. As folhas impressas devem ser simplesmente agrafadas, sem encadernação. Atenção: Na aula de entrega da versão em papel será necessária a presença dos elementos do grupo para mostrar o projecto a funcionar. O relatório terá uma classificação de 0 a 20 valores de acordo com a seguinte cotação: • Implementação da visualização e do preenchimento de inquéritos, com cálculo e publicação do resultado final incluı́dos: 8 valores • Implementação da criação e edição de inquéritos: 4 valores • Implementação do top 10 e das funcionalidades extra: 4 valores • Criação e justificação dos ı́ndices: 4 valores O relatório não deve conter o conteúdo da base de dados, nem os dados usados para testes, nem os resultados das consultas SQL. IST Pág. 3 de 3