Conceitos de BD, SGBD, modelos conceitual, lรณgico e fรญsico.
Entidades, relacionamentos, tipos de dados, CREATE TABLE e constraints.
Criaรงรฃo de schema real, definiรงรฃo de PK/FK, NOT NULL e UNIQUE.
Ao final, o aluno deve criar um banco de dados com tabelas, tipos e constraints usando SQL DDL.
Coleรงรฃo organizada de dados persistentes, estruturados de forma que possam ser acessados, gerenciados e atualizados com eficiรชncia.
Instagram (posts/likes), Spotify (playlists), iFood (pedidos), sistemas bancรกrios, cadastros de alunos no Inteli.
Controla quem pode ler, escrever ou administrar cada objeto. Autenticaรงรฃo e autorizaรงรฃo por usuรกrio e role.
Constraints (PK, FK, NOT NULL, UNIQUE) impedem que dados invรกlidos entrem no banco.
ACID: Atomicidade, Consistรชncia, Isolamento, Durabilidade. Ou tudo funciona, ou nada รฉ salvo.
Recuperaรงรฃo em caso de falha com WAL (Write-Ahead Log) e snapshots periรณdicos.
Substantivo โ algo com existรชncia prรณpria no domรญnio do sistema. Ex.: USUARIO, PEDIDO, PRODUTO
Caracterรญstica de uma entidade. Ex.: nome, email, preรงo. O atributo id com PK identifica cada linha unicamente.
Verbo entre entidades. "USUARIO faz PEDIDO" ยท "PEDIDO contรฉm PRODUTO". Implementado com Foreign Keys.
usuarios| Coluna | Tipo | Constraint | Descriรงรฃo |
|---|---|---|---|
| id | SERIAL | PRIMARY KEY | Identificador รบnico |
| nome | VARCHAR(100) | NOT NULL | Nome completo |
| VARCHAR(200) | UNIQUE NOT NULL | Email de login | |
| senha | VARCHAR(255) | NOT NULL | Hash da senha |
| criado_em | TIMESTAMP | DEFAULT NOW() | Data de criaรงรฃo |
Quadrado = entidade (substantivo) ยท Losango = relacionamento (verbo) ยท Oval = atributo. Linhas conectam com cardinalidade 1, N, M.
Quando o relacionamento รฉ muitos-para-muitos, ele vira uma tabela associativa com PK prรณpria โ e pode carregar atributos como quantidade.
usuario_id โ idproduto_id โ idpedido_id โ idEntidade โ tabela ยท Atributo โ coluna ยท 1:N โ FK no lado muitos (pedidos.usuario_id โ usuarios.id) ยท N:N โ tabela associativa com PK composta.
pedido_produtoNasce do losango contรฉm com quadrado em volta. Tem PK composta (pedido_id + produto_id) โ ambas FKs โ e absorve o atributo quantidade do relacionamento.
CREATE TABLE para cada tabela do modelo lรณgicoREFERENCES cria a FK que liga pedidos.usuario_id โ usuarios.id. Em pedido_produto, a PK composta (pedido_id, produto_id) impede duplicar o mesmo produto no mesmo pedido โ e ambas as colunas tambรฉm sรฃo FKs apontando para os pais.
Esta aula cobre DDL + DML + DQL + DCL + TCL. Cada sublinguagem resolve um problema diferente โ juntas formam o SQL completo.
Elas garantem que a aplicaรงรฃo nรฃo precise validar tudo manualmente. O banco rejeita automaticamente dados invรกlidos, protegendo a integridade mesmo com bugs no cรณdigo.
| id | nome | |
|---|---|---|
| 1 | Ana Lima | ana@inteli.edu.br |
| 2 | Bruno Costa | bruno@inteli.edu.br |
| 3 | Carla Souza | carla@inteli.edu.br |
| 4 | Diego Alves | diego@inteli.edu.br |
| 5 | Elena Martins | elena@inteli.edu.br |
UPDATE usuarios SET ativo = falseTRUNCATE para isso intencionalmente. Sempre use WHERE no DELETE.WHERE id = $1 em aplicaรงรตes. Nunca confie em input direto do usuรกrio โ use prepared statements.GRANT: concede permissรตes a um usuรกrio ou role
REVOKE: remove permissรตes
Permissรตes granulares: SELECT, INSERT, UPDATE, DELETE, ALL
BEGIN: inicia uma transaรงรฃo
COMMIT: confirma permanentemente todas as operaรงรตes
ROLLBACK: desfaz tudo desde o BEGIN
Garante as propriedades ACID
Atomicity ยท Consistency ยท Isolation ยท Durability
SERIAL cria uma sequence automรกtica. Em versรตes novas, GENERATED AS IDENTITY รฉ o padrรฃo SQL.
JSONB indexรกvel, ARRAY, UUID, INET, tipos geogrรกficos com PostGIS.
SaaS modernos, dados complexos, mรกxima conformidade com SQL padrรฃo.
AUTO_INCREMENT direto na coluna. Nรฃo precisa de sequence separada.
ENGINE=InnoDB suporta FK e transaรงรตes. MyISAM nรฃo suporta โ escolha sempre InnoDB.
Web apps clรกssicos, hospedagem compartilhada, ecossistema PHP/WordPress.
INTEGER PRIMARY KEY jรก รฉ alias do rowid. AUTOINCREMENT sรณ evita reuso de IDs.
Apenas 5 storage classes: NULL, INTEGER, REAL, TEXT, BLOB. VARCHAR(100) รฉ ignorado.
Apps mobile, protรณtipos, testes, banco embarcado em cada instalaรงรฃo.
IDENTITY(seed, increment) โ IDENTITY(1,1) comeรงa em 1 e soma 1 a cada linha.
NVARCHAR guarda Unicode (acentos, emojis); VARCHAR sรณ ASCII estendido. Use NVARCHAR sempre.
Empresas Microsoft, integraรงรตes com Power BI / Azure, BI corporativo.
GENERATED ALWAYS AS IDENTITY (12c+). Antes era SEQUENCE + TRIGGER.
VARCHAR2 em vez de VARCHAR, NUMBER(p,s) universal, nรฃo tem BOOLEAN โ usa NUMBER(1).
Sistemas legados, bancos, telecom, casos onde performance e suporte enterprise sรฃo crรญticos.
Esta aula: Visรฃo Information โ modelamos entidades, atributos e relaรงรตes do minimundo. O banco de dados torna os dados do domรญnio persistentes e consultรกveis.
Mapear quais funcionalidades dependem de persistรชncia de dados โ definir entidades e atributos do domรญnio.
| CONF Confiabilidade | โ PK + FK + NOT NULL |
| SEG Seguranรงa | โ Acesso controlado ao DB |
| DES Desempenho | โ รndices nas PKs |
| SUP Suportabilidade | โ Esquema documentado |
| CAP Capacidade | โ Volume de dados estimado |
supabase.comCREATE TABLE em PostgreSQL1 tabela sรณ. 3โ5 colunas. Nรฃo precisa modelar o domรญnio inteiro โ escolha algo que caiba em 10 minutos.
SERIAL PRIMARY KEY ยท VARCHAR(N) NOT NULL ยท TIMESTAMP DEFAULT NOW() ยท UNIQUE.
Tabela criada com sucesso e visรญvel no Table Editor. Bonus: insira 1 linha com INSERT INTO.