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.
O livro de texto recomendado é,
A First Course in Database Systems
by Jeffrey Ullman & Jennifer Widom, Prentice Hall, Third Edition, 2007
(website do livro)
Livros em português para quem não esteja à vontade na língua inglesa,
Fundamentos de Bases de Dados
por Feliz Gouveia, Editora FCA, 2014
Modelação de Dados em UML: Uma Abordagem por Problemas
por José Moura Borges, Teresa Galvão Dias, João Falcão e Cunha, Editora FCA, 2015
Nas aulas práticas iremos utilizar o sistema de gestão de bases de dados PostgreSQL.
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).
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 |
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 é 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'.