Aprenda / SQL e banco de dados

FundamentosAula 1 de 1612 min0% da trilha

O que é um banco relacional

Tabelas, linhas, colunas — e por que 'relacional' se refere às relações ENTRE tabelas, não dentro de uma só.

Um banco relacional (PostgreSQL, MySQL, SQLite...) guarda dado em tabelas — cada tabela com colunas fixas (o formato) e linhas (os registros). "Relacional" vem de como tabelas diferentes se relacionam entre si através de referências, em vez de duplicar dado.

Uma tabela

tabela usuarios
id | nome  | email
---|-------|------------------
1  | Ana   | ana@exemplo.com
2  | Bruno | bruno@exemplo.com

Duas tabelas relacionadas

tabela pedidos — referencia usuarios pelo id
id | usuario_id | total
---|------------|------
1  | 1          | 150.00
2  | 1          | 89.90
3  | 2          | 320.00

Em vez de repetir "Ana, ana@exemplo.com" em cada pedido dela, a tabela pedidos só guarda usuario_id — um número que aponta pra linha correspondente em usuarios. Se o e-mail da Ana mudar, muda em UM lugar só; todos os pedidos continuam apontando pro mesmo usuario_id, sem nenhum dado duplicado ficando desatualizado.

Por que não guardar tudo numa tabela só

Juntar tudo (nome e e-mail do usuário dentro de cada linha de pedido) parece mais simples no começo, mas duplica dado (o mesmo nome/e-mail repetido em cada pedido) e cria um problema real: atualizar o e-mail exige atualizar todas as linhas de pedido daquele usuário, ou o dado fica inconsistente. Separar em tabelas relacionadas é a solução — e o assunto da lição 7 (normalização).

Quiz rápido

O que 'relacional' significa num banco de dados relacional?
Por que a tabela pedidos guarda usuario_id em vez do nome e e-mail do usuário repetidos?