BRModelo Web
brmodeloweb.com
Gratuito, no navegador, notação do Heuser. Usado nas aulas de MER.
DB Fiddle
db-fiddle.com
Escreva e execute SQL no navegador sem instalar nada. Selecione PostgreSQL antes de rodar.
Supabase
supabase.com
PostgreSQL completo na nuvem. Cada grupo cria uma conta gratuita e usa o SQL Editor integrado.
| 📝 Prova (P1) | MER, Modelo Relacional, Normalização — 23/04 | 25 pts |
| 💻 Atividade Prática | SQL: DDL, DML, SELECT, JOINs — 02/06 | 25 pts |
| 🏗️ Projeto Final | Banco completo em grupo — jun/jul | 50 pts |
Projeto: EP1 (10 pts) + EP2 (15 pts) + Apresentação (25 pts)
| # | 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 |
| 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) |
| 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 multi-tabela |
| 12 | 28/05 | Qui | Laboratório de consultas: exercícios progressivos |
| AP | 02/06 | Ter | ⭐ Atividade Prática — DDL, DML, SELECT, JOINs |
| # | Data | Dia | Conteúdo |
|---|---|---|---|
| — | 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, 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 |
| 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 |
Qual a diferença entre dado e informação?
Fato bruto, isolado, sem contexto
"42" | "João" | "2026-03-31"
Dados processados com contexto e significado
"João tem 42 anos e se matriculou em 31/03/2026"
Banco de dados = infraestrutura para transformar dados em informação.
Uma coleção organizada de dados inter-relacionados, representando aspectos do mundo real, projetada para atender a um propósito específico.
Mesmo dado repetido em vários arquivos
Ex: nome do cliente em planilha de vendas, faturamento e suporte
Dados divergentes entre arquivos diferentes
Ex: endereço atualizado em um lugar, desatualizado em outro
Sem mecanismo padrão para consultar e filtrar
Ex: "quantos clientes compraram mais de 3 vezes?" — impossível em CSV
Qualquer pessoa pode modificar ou apagar tudo
Ex: arquivo compartilhado no Google Drive com edição livre
Um Sistema de Gerenciamento de Banco de Dados é o software que permite criar, manter e acessar bancos de dados de forma eficiente, segura e confiável.
Open source, robusto, rico em recursos
← usaremos na disciplina (ver Anexo)
Muito popular na web, simples e rápido
Usado por Facebook, Twitter, Wikipedia
Soluções corporativas pagas e robustas
Dominantes em bancos e grandes empresas
Embarcado, sem servidor — apps e protótipos
Dentro de todo celular Android e iOS
NoSQL orientado a documentos JSON
Flexível para dados sem esquema fixo
NoSQL chave-valor, altíssima performance
Cache, sessões, filas em tempo real
Foco desta disciplina: modelo relacional.
Problema: um funcionário que pertence a dois departamentos precisa ser duplicado na árvore.
Avanço: "Estudante matriculado em vários cursos, cada curso com vários estudantes" — possível sem duplicação.
FUNCIONARIO
| id | nome | depto_id |
|---|---|---|
| 1 | Ana Gomes | 10 |
| 2 | Bruno Costa | 20 |
| 3 | Carla Silva | 10 |
DEPARTAMENTO
| id | nome |
|---|---|
| 10 | Engenharia |
| 20 | Marketing |
■ PK ■ FK
Armazena documentos JSON/BSON. Flexível, sem esquema fixo.
Ex: MongoDB — perfil de usuário, catálogo de produtos
Estrutura mais simples: chave → valor. Altíssima performance.
Ex: Redis — sessões, cache, carrinho de compras
Nós e arestas para modelar relacionamentos complexos.
Ex: Neo4j — redes sociais, detecção de fraude
Armazena dados por coluna, eficiente para análises em larga escala.
Ex: Cassandra — séries temporais, IoT, analytics
NoSQL = "Not Only SQL" — usados quando o relacional não é a melhor escolha.
O que cada usuário ou aplicação enxerga — apenas os dados relevantes para ele
Estrutura global do banco: tabelas, colunas, relacionamentos e restrições
Como os dados são efetivamente armazenados em disco (arquivos, índices, blocos)
Proposta em 1975 — base para a independência de dados.
Vê: nome, cargo, departamento
Não vê: salário dos colegas, dados financeiros
Vê: equipe completa + salários do setor
Não vê: dados de outros departamentos
Vê: todos os funcionários e todos os salários
Esquema conceitual (exemplo)
Registros armazenados em páginas de disco
Bloco 1: linhas 1-100 | Bloco 2: linhas 101-200 …
Estrutura de árvore para buscas em O(log n)
Ex: buscar por id = 42 em 1 milhão de registros
Páginas em memória RAM para evitar acesso a disco
Posso mudar como os dados são armazenados sem afetar a estrutura lógica.
Ex: reorganizar índices, trocar o disco, mudar formato — o esquema não muda.
Posso mudar a estrutura lógica sem quebrar as aplicações que usam o banco.
Ex: adicionar uma coluna nova sem precisar alterar o sistema.
Independência é o principal benefício da arquitetura em 3 níveis.
📖 Leitura recomendada: Heuser, cap. 2
PostgreSQL é o SGBD que usaremos na disciplina. É gratuito, open source e disponível para todos os sistemas operacionais.
Instalador gráfico oficial com pgAdmin incluso
postgresql.org/download/windows
Postgres.app (mais simples) ou Homebrew
postgresapp.com
Via gerenciador de pacotes (apt, dnf, pacman)
postgresql.org/download/linux
Versão recomendada: PostgreSQL 17 (última estável)
Acesse postgresql.org/download/windows → clique em "Download the installer" → escolha a versão 17 para Windows x86-64.
postgres (anote!)psql -U postgres -c "SELECT version();" # deve mostrar: PostgreSQL 17.x ...
Baixe em postgresapp.com, arraste para Aplicativos, clique em Initialize. Pronto.
brew install postgresql@17 brew services start postgresql@17
sudo apt update && sudo apt install -y postgresql sudo systemctl start postgresql
sudo dnf install postgresql-server postgresql-contrib sudo postgresql-setup --initdb && sudo systemctl start postgresql
# conectar ao PostgreSQL psql -U postgres # criar um banco de dados de teste CREATE DATABASE bd1_teste; # conectar a ele \c bd1_teste # verificar versão SELECT version();
local | Host: localhost | Port: 5432postgres | Password: (a que você definiu)