Banco de Dados I
Horário
Terça e Quinta, 7h30–9h10.
Ferramentas
Modelagem Entidade-Relacionamento
Usaremos o BRModelo Web para criar diagramas ER. A ferramenta é gratuita, roda no navegador e usa a notação adotada no livro do Heuser (referência da disciplina).
Aulas e exercícios
Usaremos o DB Fiddle para praticar SQL diretamente no navegador, sem necessidade de instalação. Selecione PostgreSQL no menu superior antes de executar as queries.
Projeto de Disciplina
O projeto será desenvolvido no Supabase. Cada grupo deve criar uma conta gratuita, criar um projeto e usar o SQL Editor integrado para desenvolver e testar o banco de dados. O Supabase fornece um PostgreSQL completo com interface visual, similar ao pgAdmin.
Objetivo
Introduzir os fundamentos que permitam ao aluno adquirir o domínio básico da tecnologia de banco de dados.
Ementa
Conceitos básicos de banco de dados. Modelos de dados e linguagens. Projeto de bancos de dados. Novas tecnologias e aplicações de banco de dados.
Bibliografia
- HEUSER, Carlos Alberto. Projeto de Banco de Dados. 2a edição. Porto Alegre: Sagra - Luzzato, 1999.
- SILBERSCHATZ, A.; KORTH, H.; SUDARSHAN, S. Sistema de Banco de Dados. 3a edição. São Paulo: Markon Books, 1999.
Material extra
- Apostila sobre SQL (Alura)
- Smelly Relations: Measuring and Understanding Database Schema Quality
- On the Prevalence, Impact, and Evolution of SQL Code Smells in Data-Intensive Systems
- Database smell detector
Avaliação
- Prova (P1): 25 pontos
- Atividade Prática (AP): 25 pontos
- Projeto de Disciplina (PD): 50 pontos
- Entrega Parcial 1 (EP1): 10 pontos
- Entrega Parcial 2 (EP2): 15 pontos
- Apresentação Final: 25 pontos
Projeto de Disciplina (PD)
Grupos de 3–4 pessoas. Cada grupo escolhe um domínio de aplicação (sistema hospitalar, escola, e-commerce, delivery, etc.) e desenvolve um banco de dados completo ao longo do semestre.
Entregas:
- EP1 (02/07): Diagrama ER + scripts DDL funcionando no SGBD
- EP2 (14/07): Banco populado com dados consistentes + conjunto de consultas SQL (mínimo 10 queries cobrindo SELECT, JOIN, GROUP BY e subquery)
- Apresentação Final (16–23/07): Demonstração ao vivo do banco, explicação das decisões de modelagem e consultas desenvolvidas
Atividades Assíncronas
Nas semanas sem aula, os alunos devem realizar as seguintes atividades:
- Semana de 14–16/04 (viagem): Modelagem ER — escolher um sistema do cotidiano e modelar entidades, atributos e relacionamentos usando BRModelo ou draw.io. Entrega: 23/04.
- 21/04 (Tiradentes): Quiz online de normalização — 10 questões sobre dependências funcionais e formas normais. Entrega: 23/04.
- Semana de 28–30/04 (viagem): Exercício escrito de normalização — dado um esquema desnormalizado, normalizar até 3FN mostrando cada passo. Entrega: 05/05.
Cronograma
Passível de alterações.
| # | Data | Dia | Conteúdo |
|---|---|---|---|
| 1 | 31/03 | Ter | Apresentação da disciplina. O que é BD? SGBD, modelos de dados, arquitetura em 3 níveis |
| 2 | 02/04 | Qui | MER: entidades, atributos, relacionamentos, cardinalidade, participação |
| 3 | 07/04 | Ter | MER: entidades fracas, generalização/especialização. Exercícios de modelagem |
| 4 | 09/04 | Qui | Modelo Relacional: mapeamento MER→Relacional. Normalização (1FN, 2FN, 3FN) |
| — | 14/04 | Ter | VIAGEM — SEM AULA (atividade assíncrona) |
| — | 16/04 | Qui | VIAGEM — SEM AULA (atividade assíncrona) |
| — | 21/04 | Ter | TIRADENTES — SEM AULA (atividade assíncrona) |
| P1 | 23/04 | Qui | Avaliação 1 — MER, Modelo Relacional, Normalização |
| — | 28/04 | Ter | VIAGEM — SEM AULA (atividade assíncrona) |
| — | 30/04 | Qui | VIAGEM — SEM AULA (atividade assíncrona) |
| 5 | 05/05 | Ter | Introdução ao SQL. DDL: CREATE TABLE, tipos de dados, constraints (PK, FK, NOT NULL, UNIQUE, CHECK) |
| 6 | 07/05 | Qui | DDL: ALTER TABLE, DROP TABLE. Laboratório prático |
| 7 | 12/05 | Ter | DML: INSERT, UPDATE, DELETE. Transações básicas: COMMIT, ROLLBACK |
| 8 | 14/05 | Qui | Laboratório: criação completa de um banco (DDL + DML com dados reais) |
| 9 | 19/05 | Ter | SELECT: WHERE, ORDER BY, LIMIT. Funções escalares básicas |
| 10 | 21/05 | Qui | SELECT: Funções de agregação (COUNT, SUM, AVG). GROUP BY e HAVING |
| 11 | 26/05 | Ter | JOINs: INNER JOIN, LEFT JOIN, RIGHT JOIN. Exercícios com múltiplas tabelas |
| 12 | 28/05 | Qui | Laboratório de consultas: exercícios progressivos cobrindo tudo até aqui |
| AP | 02/06 | Ter | Atividade Prática — DDL, DML, SELECT, JOINs |
| — | 04/06 | Qui | CORPUS CHRISTI — SEM AULA |
| 13 | 09/06 | Ter | Subqueries (IN, EXISTS). Views. CTEs básicas |
| 14 | 11/06 | Qui | Índices: conceito e criação. Transações: ACID em profundidade |
| 15 | 16/06 | Ter | Revisão geral + tirar dúvidas antes do projeto |
| 16 | 18/06 | Qui | Kickoff do Projeto: formação de grupos, escolha de tema, entrega de proposta |
| 17 | 23/06 | Ter | Orientação: modelagem ER |
| 18 | 25/06 | Qui | Orientação: modelo relacional + normalização do esquema |
| 19 | 30/06 | Ter | Orientação: DDL — criação das tabelas no SGBD |
| EP1 | 02/07 | Qui | Entrega Parcial 1: diagrama ER + scripts DDL funcionando |
| 20 | 07/07 | Ter | Orientação: DML — população do banco com dados consistentes |
| 21 | 09/07 | Qui | Orientação: consultas SQL (relatórios, filtros, JOINs) |
| EP2 | 14/07 | Ter | Entrega Parcial 2: banco com dados + conjunto de consultas funcionando |
| 22 | 16/07 | Qui | Apresentações — Grupos 1 e 2 |
| 23 | 21/07 | Ter | Apresentações — Grupos 3 e 4 |
| 24 | 23/07 | Qui | Apresentações — Grupos 5 e 6 + encerramento |
Entrega atrasada
Entregas de trabalhos após o prazo serão aceitas mas os pontos referentes não serão contabilizados.
Política de plágio
Todos os trabalhos (a não ser que indicados explicitamente) devem ser feitos em grupo conforme definido. O que você entregar deve ser fruto do trabalho do grupo. Grupos são permitidos e encorajados a discutir ideias com outros grupos. Grupos não são permitidos copiar solução ou parte de solução de outros grupos. Na presença de plágio, os grupos envolvidos não receberão pontos da atividade em questão.