Mini-Projecto · Base de dados de inventário arqueológico
Contexto
A empresa de arqueologia "Terra Antiga, Lda." está a intervencionar o sítio arqueológico do Cerro do Sobral, um povoado da Idade do Ferro. A equipa já escavou três unidades estratigráficas e recolheu várias peças, mas ainda regista tudo em folhas de cálculo soltas: os desenhos e fotografias não estão ligados às peças, e já apareceram números de inventário repetidos.
Foste contratado/a como assistente de arqueólogo/a para desenhar e implementar uma base de dados relacional e normalizada para o inventário, capaz de responder às perguntas do dia a dia da equipa e de crescer com a escavação.
Trabalhas individualmente ou a pares, com SQLite (ou outro sistema de gestão de bases de dados equivalente), e entregas a base de dados a funcionar mais um pequeno dossiê (diagrama ER, decisões de normalização, consultas testadas).
Requisitos
Funcionais
- Quatro tabelas de entidade: unidades_estratigraficas, pecas, desenhos, fotografias, cada uma com chave primária própria.
- Relação 1:N entre unidades estratigráficas e peças, implementada com chave estrangeira.
- Relações N:M entre peças e desenhos, e entre peças e fotografias, cada uma com a sua tabela de ligação.
- Pelo menos 3 unidades estratigráficas, 5 peças, 3 desenhos e 3 fotografias com dados de exemplo realistas.
- Cada desenho e fotografia com número de inventário próprio e, no mínimo, um caso com
localizacao_originale outro combibliografia. - Pelo menos 5 consultas SQL testadas, que respondam a perguntas reais da equipa (listadas nas Fases).
Não-funcionais
- Tipos de dados definidos corretamente em todos os campos (texto, número, data, categoria).
- Base de dados normalizada até à 3FN, sem campos com listas de valores nem dependências transitivas.
- Nomes de tabelas e campos consistentes e em português, sem acentos nem espaços.
- Backup da base de dados (ficheiro
.dbou export.sql) entregue.
Fases
Fase 1 · Analisar necessidades (2h) Levantar, com a equipa fictícia da Terra Antiga, as perguntas que a base de dados tem de responder (quantas peças por UE, que desenhos documentam uma peça, etc.). Listar por escrito.
Fase 2 · Planear a estrutura (3h) Desenhar o diagrama entidade-relação com as quatro entidades, atributos e cardinalidades. Rever com o professor antes de avançar para o software.
Fase 3 · Definir chaves e tipos de dados (2h) Definir chave primária e chaves estrangeiras de cada tabela, e o tipo de dados de cada campo (texto, número, data, categoria).
Fase 4 · Implementar e normalizar (5h)
Criar as tabelas em SQL (CREATE TABLE), incluindo as duas tabelas de ligação N:M. Rever contra as três fases de normalização (1FN, 2FN, 3FN).
Fase 5 · Introduzir dados de exemplo (3h) Inserir os dados mínimos pedidos nos Requisitos, com números de inventário reais e coerentes entre si.
Fase 6 · Criar e testar consultas (3h) Escrever e testar as 5 consultas SQL, confirmando que os resultados correspondem aos dados inseridos.
Fase 7 · Apresentação e backup (2h) Demonstrar a base de dados e as consultas à turma, explicando as decisões do diagrama e da normalização. Entregar o backup.
Critérios de avaliação
| Critério | Peso |
|---|---|
| Diagrama ER e análise de necessidades | 15% |
| Chaves, tipos de dados e cardinalidade corretos | 20% |
| Normalização (1FN a 3FN) sem duplicação nem listas em campo | 20% |
| Dados de exemplo e referenciação de imagens (inventário, local/bibliografia) | 15% |
| Consultas SQL corretas e testadas | 20% |
| Dossiê, backup e apresentação | 10% |
Erros comuns
- Guardar os números de vários desenhos ou fotografias num único campo de texto, separados por vírgula.
- Repetir o nome do sítio em cada peça, em vez de o manter só na unidade estratigráfica.
- Resolver uma relação N:M com uma única chave estrangeira, sem tabela de ligação.
- Esquecer a chave primária composta na tabela de ligação, permitindo pares duplicados.
- Deixar
localizacao_originalebibliografiavazios nos dois campos ao mesmo tempo. - Testar as consultas só uma vez e não confirmar se o resultado bate certo com os dados inseridos.
- Não fazer backup antes de alterar a estrutura das tabelas.
Bónus (opcional)
- Acrescentar uma quinta tabela
intervencoes(uma campanha de escavação), relacionada com as unidades estratigráficas. - Criar uma consulta que liste, para cada material, o número total de peças (
GROUP BY material). - Exportar os resultados de uma consulta para um ficheiro
.csv. - Comparar o mesmo esquema implementado em SQLite e em Microsoft Access, e discutir diferenças práticas.
Reflexão
No dossiê final, responde: porque é que a relação entre peças e desenhos não podia ser resolvida com uma simples chave estrangeira, ao contrário da relação entre unidade estratigráfica e peça? E que duas decisões de normalização tomaste que, se não tivesses tomado, teriam criado duplicação de dados no inventário?