Base de Dados, 2022/2023

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

Aulas práticas

aula data tópico exercícios soluções Gradience
class token: E68759F1
1 23-29/Set Modelo relacional (PDF) (PDF) HW 02A - Relational Model
2 30-06/Out Modelação de dados com UML (PDF) (PDF)  
3 07-13/Out Modelação de dados com UML (PDF) (PDF)  
4 14-20/Out Conversão de UML para modelo relacional (PDF) (PDF) HW 04E - UML
5 21-27/Out Dependências funcionais, BCNF, 3NF (PDF) (PDF) HW 03A - Functional Dependencies: Keys
HW 03B - Functional Dependency Inference
HW 03D - Normalization
6 28-03/Nov Tempo para realização do projecto prático      
7 04-10/Nov Álgebra relacional (PDF) (PDF) HW 02B - Classical Relational Algebra
HW 05A - Bag Relational Algebra
HW 05B - Relational Algebra: Extended Operations
8 11-17/Nov Familiarização com PostgreSQL (HTML)
(PDF)
   
9 18-24/Nov SQL Gradiance   HW 06A - Basic SQL
HW 06B - NULL Values
HW 06D - Duplicates
HW 06E - Order-By
HW 06G - Subqueries
10 25-01/Dez SQL Gradiance   HW 06C - Grouping and Aggregation
HW 06F - Outer Join
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 02-08/Dez
12 09-15/Dez
13 16-22/Dez Discussão dos trabalhos práticos Gradiance   HW 06H - SQL Transactions

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