UNIVERSIDADE FEDERAL DE SÃO CARLOS CAMPUS

Transcrição

UNIVERSIDADE FEDERAL DE SÃO CARLOS CAMPUS
UNIVERSIDADE FEDERAL DE SÃO CARLOS
CAMPUS SOROCABA
BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO
Orientações para Projeto
Disciplina: Laboratório de Banco de Dados
Período: 1S/2012
Estas orientações estão relacionadas à disciplina de LabBD. As especificações das outras
disciplinas envolvidas (“Desenvolvimento Web”, ”Engenharia de Software II”) serão descritas
pelos seus respectivos docentes.
Tema: Freebase - Gerenciamento de Entidades
OBJETIVOS
Desenvolver um sistema que realiza o cadastro, apresentação e busca de diferentes
entidades (tal como em Freebase.com), como forma de gerenciar a disponibilidade das
mesmas, desenvolvendo técnicas de armazenamento e recuperação eficientes de dados.
DESCRIÇÃO
Freebase é uma base de dados aberta com mais de 22 milhões de entidades. Uma entidade é
uma pessoa, lugar, ou coisa. Freebase conecta as entidades em um grafo. Visite o site
http://www.freebase.com/ para entender os dados que vão ser modelados.
Figura 1. Interface de www.freebase.com
No site, inicialmente, são apresentadas as categorias ou domínios reunidos sob Freebase
(Figura 1). Cada categoria é dividida em tipos e tipos em propriedades.
O esquema descreve como os dados são estruturados em Freebase. O esquema é criado a
partir de domínios que definem os espaços de nomes (namespaces), tipos que definem um
tipo particular de pessoa, lugar ou coisa e propriedades que definem as qualidades únicas de
um tipo (conjunto de metadados para cada tipo de entidade). Um tipo denota um
relacionamento IS-A (é-um) sobre uma entidade.
Por exemplo, o registro (entidade) "Mycobacterium mageritense" que possui o campo tipo
"/biology/organism_classification" deve ser interpretado como: a entidade "Mycobacterium
mageritense" pertence ao domínio da “biologia” e é um tipo “classificação de organismo”.
Existem alguns tipos especiais de domínio, como os domínios base (/base/…, /user/…) e
commons.
FORMAÇÃO DA EQUIPE
Deverão ser formados grupos de quatro alunos. A composição dos grupos será conservada
nas três disciplinas. Poderá haver equipes com um ou mais membros que não fazem todas as
disciplinas. Nesse caso, o aluno será avaliado apenas nas disciplinas que está fazendo.
BANCO DE DADOS
O projeto é baseado em uma cópia parcial dos dados providenciada pela Freebase, chamada
Simple Topic Dump. O arquivo contém dados sobre vários tópicos, sendo que os atributos
são:
•
MID - o identificador da entidade na Freebase (página HTML correspondente).
•
Display name – o nome da entidade (em inglês).
•
Wikipedia keys (separadas por vírgula) - são valores numéricos que
representam o número de artigo da Wikipedia (Wikipedia article number) da entidade.
Por
exemplo:
a
entidade
"Mycobacterium
mageritense"
com
wiki-key
"/wikipedia/en_id/10003189", quer dizer que podemos criar um link para
http://en.wikipedia.org/wiki/index.html?curid=10003189. Isto é padronizado e o link deve
ser visualizado na interface (ao invés do valor do campo wikikeys).
•
Freebase Types (separados por vírgula) – domínio e tipo a que a entidade
pertence, conforme explicado acima.
•
Description - uma breve descrição extraída da Wikipedia (se disponível).
O banco de dados já populado foi disponibilizado pelo Prof. Os alunos que não fazem a
disciplina também usarão a mesma base. O banco de dados inicial está composto por duas
tabelas:
CREATE TABLE entities (
mid varchar(20),
displayname varchar(900),
wikikeys varchar(1000),
types text,
description text
);
CREATE TABLE categories (
domain varchar(50),
id varchar(20),
types int
);
A tabela principal (entities) da base tem tamanho aproximado de 6 GB e possui mais de
9.5 milhões de registros.
Exemplo de registro na tabela entities:
mid
/m/02pzhmh
displayname Mycobacterium mageritense
wikikeys
/wikipedia/en_id/10003189
types
/common/topic,/biology/organism_classification
description Mycobacterium mageritense Etymology: Magerit, is Arabic for Madrid, where the it was first
isolated from human sputum. Gram-positive, nonmotile and strongly acid-fast rods. Colony
characteristics Physiology. Differential characteristics Strain 938 = ATCC 700351 = CCUG
37984 = CIP 104973 = DSM 44476 = JCM 12375
Além da tabela de entidades, também é providenciada a tabela de domínios (categories) composta
pelos campos: domain (nome do domínio), id (identificador – como exibido em entities.types) e
types (quantidade de tipos associados a esse domínio). A tabela de tipos não existe e deverá ser
criada a partir do tratamento do campo entities.types. Cada tipo deverá ser associado a um
domínio.
DESCRIÇÃO DAS ETAPAS DO PROJETO
O projeto consta de quatro etapas de desenvolvimento. Elas são:
1. Normalização: pode-se verificar que o projeto inicial do banco de dados possui várias
anomalias e redundâncias, que podem acarretar em inconsistências. Como
consequência, o primeiro passo é fazer o projeto de Normalização do Banco de Dados.
2. Indexação e otimização: implementação de recursos para melhoria de tempo de
recuperação de dados, aplicando os recursos vistos em aula.
3. Programação interna e segurança: inclusão de recursos para automatização de
tarefas no banco (visões, triggers e stored procedures). Devem ser definidos diferentes
perfis de usuário (no mínimo dois diferentes), onde cada perfil terá autorizações e
visões diferenciadas de manipulação do banco de dados.
4. Entrega final: deverá ser depositado o código fonte final e o relatório final um dia antes
da apresentação no sistema de apoio Moodle.
Em todas as fases, deverá ser depositado no Moodle, o relatório dos passos
desenvolvidos, conforme o cronograma definido.
BANCO DE OPERAÇÕES DE INSERÇÃO, ALTERAÇÃO, REMOÇÃO E CONSULTAS
As operações serão divididas em dois grupos: comuns a todos os grupos e diferenciadas por
grupo.
Comum. Todos os grupos terão em comum as seguintes operações básicas:
• Cadastro, alteração, remoção e consultas de entidades.
• Cadastro, alteração, remoção e consultas de categorias.
• Cadastro, alteração, remoção e consultas de tipos.
Diferenciadas
Cada grupo será numerado e terá como diferencial um tema: conjunto de três consultas. O
número do grupo será sorteado na sala de aula. As interfaces das consultas e dos
resultados são cuidadas na disciplina de “Desenvolvimento Web”, desde que algum integrante
do grupo esteja fazendo essa disciplina. Os grupos que apresentarem exatamente as
mesmas consultas e/ou interfaces serão penalizados: não serão aceitas consultas
idênticas de diferentes grupos.
A busca avançada especificada em cada grupo, a seguir, tem por objetivo permitir a busca a
partir de qualquer uma das palavras/valores do conjunto de campos. Na busca absoluta, são
utilizadas expressões exatas, que são as palavras especificadas pelo usuário. A consulta de
uma busca relativa é construída através de expressões regulares, pois obtém resultados
que contêm as palavras especificadas pelo usuário.
CONSULTAS
1. Busca avançada com busca absoluta e busca relativa em, no mínimo, dois atributos
de qualquer tabela.
2. Consulta parametrizada que inclua algum resultado numérico, a partir do qual
possa ser construído um ranking.
3. Uma consulta envolvendo: (1) duas ou mais tabelas com condições de seleção (uso
da cláusula where não apenas para as condições de junção) e (2) funções de
agregação com agrupamento e/ou aninhamento de consultas (subconsultas).
OS GRUPOS DE ALUNOS QUE NÃO TIVEREM INTEGRANTES MATRICULADOS NA DISCIPLINA DE
DESENVOLVIMENTO WEB, DEVERÃO FAZER UMA INTERFACE SIMPLES EM JAVA DAS CONSULTAS
ESPECÍFICAS.
CADA GRUPO DE ALUNOS FICARÁ ENCARREGADO DE DESENVOLVER O PROJETO MAIS CRIATIVO,
DIFERENCIADO E ATRATIVO QUE OS OUTROS GRUPOS.
AVALIAÇÃO
O projeto tem duas formas de avaliação complementares: relatório e apresentação. O projeto
será composto de três fases intermediárias (Pinter1, Pinter2 e Pinter3), que permitirão
um acompanhamento passo a passo da sua evolução.
Em cada fase intermediária, deverá ser depositado no sistema de apoio (Moodle) um relatório
parcial dos passos desenvolvidos, até a data/horário marcados no cronograma. Cada relatório
terá uma nota atribuída de zero a dez e a média das fases intermediárias será calculada por:
MediaInter = 0.4*Pinter1 + 0.3*Pinter2 + 0.3*Pinter3
Na entrega final, o código fonte de todas as tarefas desenvolvidas e o relatório final deverão
ser depositados no sistema de apoio (Moodle), até a data/horário marcados no cronograma. A
nota final do projeto será calculada por:
TrabFinal = 0.25*NotaApres(individual) + 0.25*NotaRelatorio(grupo)
+ 0.5*NotaImplementação(grupo)
O resultado apresentado inclui tanto as ações desenvolvidas no projeto (70%) quanto à
elaboração dos relatórios parciais (30%). Sendo assim, a média final do projeto será
composta pela média ponderada entre a nota das entregas intermediárias e a nota da entrega
final do projeto.
MédiaProjeto (T) = 0.3*MediaInter + 0.7*TrabFinal
ATENÇÃO
Será avaliada para os diferentes grupos, a interatividade com o banco de dados: aplicação de
conceitos, solução das consultas, corretude da informação, etc. Não serão aceitas soluções
idênticas de diferentes grupos (serão invalidadas na correção do projeto).
CRONOGRAMA
O projeto terá início com a divisão dos alunos em grupos. Os grupos deverão ser entregues
ao professor da disciplina no dia 13/03/2012. Em seguida, os alunos deverão desenvolver o
projeto respeitando as fases, entregas e datas descritas a seguir.
Tabela 1: Cronograma de Execução
Data
13/04
Fase
BD-Intermediária-1
Normalização
Descrição
27/04
BD- Intermediária -2
Indexação e Otimização
05/06
BD- Intermediária -3
Programação Interna ao SGBD
13/06
Entrega Final
Entrega do código fonte e relatório final
14/06
Apresentação final
Apresentação oral
APRESENTAÇÕES
A apresentação final é conjunta das três disciplinas. Será mostrada a aplicação rodando, e o
foco da disciplina de “LabBD” vai ser no código das operações, consultas, triggers e stored
procedures.
A IMPLEMENTAÇÃO DO PROJETO NO SGBD:
SQL SERVER 2008
Instruções para o Relatório do Projeto
O projeto deve conter os seguintes itens:
1. Capa
As seguintes informações devem ser fornecidas na capa do projeto: o nome da instituição, o
nome do curso, o nome da disciplina, o nome do professor responsável, o nome do projeto, o
nome dos participantes, e a data de entrega do projeto.
2. Índice
O índice deve listar os nomes das seções que compõem o projeto e as suas respectivas
páginas de início.
3. Especificação do Problema e dos Requisitos de Dados
Esta seção deve descrever a visão do grupo sobre as características do problema, em
especial, devem ser especificados o(s) objetivo(s) do projeto.
4. Projeto Lógico e Normalização
Essa seção deve descrever as transformações realizadas para cada uma das relações iniciais
do banco de dados, a Forma Normal inicial e final de cada tabela do BD. Para tanto, devem
ser realizadas as seguintes tarefas:
• especificação das dependências funcionais relevantes para o problema.
•
Normalização das relações de acordo com as dependências funcionais definidas:
para cada relação a ser normalizada: (i) identifique quais as dependências
funcionais que se aplicam sobre a relação; (ii) justifique porque a relação não se
encontra na forma normal em questão; e (iii) normalize a relação, especificando as
relações originadas.
•
Documentar o projeto lógico normalizado (diagrama do modelo normalizado) e
relatar como aconteceu ou foi executado o processo de normalização dos dados nas
tabelas.
5. Especificação de Consultas em SQL
Nessa seção devem ser especificadas em SQL as operações comuns e diferenciadas do
projeto. Para as consultas diferenciadas, apresentar uma breve descrição textual da consulta.
6. Técnicas de acesso eficiente ao Banco de Dados
Essa seção deve apresentar as técnicas de indexação e otimização empregadas,
descrevendo as estruturas de indexação criadas e outros recursos empregados para a
recuperação eficiente dos resultados das consultas com suas respectivas justificativas.
7. Programação com Banco de Dados
Essa seção deve apresentar a descrição das consultas ou verificações que foram construídas
utilizando visões, stored procedures e/ou triggers. Deve ser acrescentado o script
documentado de cada um.
8. Segurança
Essa seção deve descrever os diferentes perfis de usuário que foram definidos e as
autorizações de leitura/escrita de cada perfil para acesso ao banco de dados.
9. Outras Informações sobre o Projeto: detalhes da aplicação, linguagem de programação,
mecanismo de conexão ao BD, interface da aplicação, dentre outras (relativas às outras
disciplinas incluídas no projeto).
10. Considerações finais: comentários próprios sobre o desenvolvimento do projeto,
dificuldades encontradas e comentários que permitam uma comparação de implementações
entre a versão final do projeto e uma versão na qual a normalização e/ou as técnicas de
indexação e otimização das tabelas não tivessem acontecido.
Cronograma de entrega de cada etapa
O cronograma de entrega do relatório acompanha o cronograma apresentado acima.
• Etapa 1: entrega até o item 4.
• Etapa 2: entrega até o item 6.
• Etapa 3: entrega até o item 8.
• Entrega Final: entrega até o item 10.
ATENÇÃO: NA
ENTREGA DA SEGUNDA PARTE DO PROJETO, DEVEM SER ENTREGUES AS
CORREÇÕES PROPOSTAS PELO PROFESSOR REFERENTE À PRIMEIRA PARTE DO PROJETO. DE
FORMA SIMILAR, NA ENTREGA DAS ETAPAS POSTERIORES.

Documentos relacionados