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
id | nome | email
---|-------|------------------
1 | Ana | ana@exemplo.com
2 | Bruno | bruno@exemplo.comDuas tabelas relacionadas
id | usuario_id | total
---|------------|------
1 | 1 | 150.00
2 | 1 | 89.90
3 | 2 | 320.00Em 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).