Base de Dados, 2021/2022

Índice


Descrição e objectivos da disciplina

Esta disciplina aborda técnicas de análise e modelação de bases de dados e o uso de sistemas de gestão de base de dados (SGBDs) para o desenvolvimento de aplicações. Iremos aprender a fazer modelos conceptuais de dados usando UML. Estudaremos o modelo relacional, e a conversão de um modelo conceptual para o modelo relacional. Irá ser dado ênfase a linguagens de manipulação de dados, quer abstractas (álgebra relacional) quer concretas (SQL). A linguagem SQL é um standard para definir e manipular informação em bases de dados e irá ter uma cobertura extensiva. Veremos também como desenvolver aplicações utilizando SQL juntamente com uma linguagem de programação tradicional. Iremos também aprender noções sobre bases de dados semi-estruturadas.

Programa resumido

Bibliografia

O livro de texto recomendado é,

Livros em português para quem não esteja à vontade na língua inglesa,

Nas aulas práticas iremos utilizar o sistema de gestão de bases de dados PostgreSQL.

Regras de avaliação

Trabalho prático 30%
Exame final 70%

É necessário uma nota não inferior a 7,0 valores no trabalho prático para serem admitidos a exame final. Arredondamentos só na nota final.

O trabalho prático é feito individualmente ou em grupo de 2 pessoas. O trabalho é composto por várias partes, cada qual com o seu prazo de entrega. Cada parte corresponde a uma tarefa necessária para o desenvolvimento de uma aplicação suportada por uma base de dados. A nota prática do grupo é convertida numa nota prática individual no momento da discussão dos trabalhos (que ocorrerá na última semana de aulas).


Aulas

aula data tópico slides leitura recomendada
1 06/Out Introdução (PDF) Cap. 1
2 07/Out Modelação de dados com UML (PDF) Cap. 4.7
3 13/Out
4 14/Out
5 20/Out Modelo Relacional (PDF) Cap. 2.1, 2.2, 2.3
6 21/Out Conversão de UML para o modelo relacional (PDF) Cap. 4.8
7 27/Out Dependências Funcionais (PDF) Cap. 3.1, 3.2
8 27/Out
9 03/Nov Forma Normal de Boyce-Codd (BCNF), 3ª Forma Normal (3NF) (PDF) Cap. 3.3, 3.4, 3.5
10 04/Nov
11 10/Nov Álgebra Relacional (PDF) Cap. 2.4, 2.5, 5.1, 5.2
12 11/Nov
13 17/Nov
14 18/Nov
15 24/Nov SQL: Interrogações simples.
Breve introdução ao PostgreSQL.
(PDF) Cap. 6.1
16 25/Nov SQL: Comandos de criação de tabelas. Inserção, remoção e actualização de tuplos (PDF) Cap. 2.3, 6.5
17 02/Dez SQL: Joins e operações sobre conjuntos.
Lógica a 3 valores, joins explícitos
(PDF)
(PDF)
Cap. 6.1, 6.2
18 02/Dez
19 09/Dez SQL: Subqueries (PDF) Cap. 6.3
20 09/Dez
21 15/Dez SQL: Agregações (PDF) Cap. 6.4
22 16/Dez SQL: Vistas, índices, autorização, restrições (PDF) Cap. 8.1, 8.3, 10.1, 7.1-7.4
23 05/Jan Programação em Java juntamente com SQL (PDF)
Exemplos
Cap. 9.1, 9.6
24 06/Jan Triggers e Regras (PDF) Cap. 7.5
25 12/Jan
26 13/Jan Transacções (PDF) Cap. 6.6
27 19/Jan
28 20/Jan Bases de dados semi-estruturadas. XML (PDF)  

Aulas práticas

aula data tópico exercícios soluções Gradience
class token: E68759F1
1 11-15/Out Modelação de dados com UML (PDF) (PDF)
2 18-22/Out Modelação de dados com UML (PDF) (PDF) HW 04E - UML
3 25-29/Out Conversão de UML para modelo relacional (PDF) (PDF) HW 02A - Relational Model
4 01-05/Nov Dependências funcionais, BCNF, 3NF (PDF) (PDF) HW 03A - Functional Dependencies: Keys
HW 03B - Functional Dependency Inference
HW 03D - Normalization
5 08-12/Nov
6 15-19/Nov Álgebra relacional (PDF) (PDF) HW 02B - Classical Relational Algebra
HW 05A - Bag Relational Algebra
HW 05B - Relational Algebra: Extended Operations
7 22-26/Nov
8 29-03/Dez Familiarização com PostgreSQL (HTML)    
9 06-10/Dez SQL (HTML)   HW 06A - Basic SQL
HW 06B - NULL Values
10 13-17/Dez SQL Gradiance   HW 06C - Grouping and Aggregation
HW 06D - Duplicates
HW 06E - Order-By
HW 06F - Outer Join
HW 06G - Subqueries
HW 08 - Views
HW 07 - Constraints and Triggers
Lab Project 1
Lab Project 2
Lab Project 3
Lab Project 4
Lab Project 5
Lab Project 6
Lab Project 7
11 03-07/Jan
12 10-14/Jan
13 17-21/Jan Discussão dos trabalhos práticos      

Gradiance

Gradiance é um sistema online que permite a realização de exercícios e receber feedback imediato. A grande vantagem deste sistema é que o feedback não é um simples certo ou errado: quando erram o sistema dá dicas sobre o erro cometido. O sistema é muito bom e é uma excelente ajuda para a aprendizagem da matéria de base de dados.

Recomendo que consultem http://infolab.stanford.edu/~ullman/pub/stud-guide.html e sigam as indicações que lá estão. Depois de criarem uma conta devem fazer login e fazer 'Sign up' usando o Class Token correspondente à matéria de Base de Dados: E68759F1.

Depois de fazerem o 'Sign up' podem fazer uma série de 'Homeworks' e 'Labs'.

Trabalho prático