10.3 Banco Relacional vs. Não Relacional
E aí, arquiteto(a) de informação! Já temos nosso QG Supabase montado e sabemos o que são dados. Agora, precisamos decidir como vamos organizar nossas informações lá dentro.
No mundo dos bancos de dados, existem dois grandes "estilos" de organização, duas filosofias diferentes. É como escolher entre organizar suas roupas em gavetas separadas (camisetas, calças, meias) ou jogar tudo numa caixa grande!
Esses estilos são chamados Relacional (SQL) e Não Relacional (NoSQL).

O Mundo Organizado: Bancos de Dados Relacionais (SQL) 🗄️
Os bancos de dados relacionais são os veteranos, os mais tradicionais. Eles funcionam como um conjunto de tabelas, muito parecido com planilhas do Excel ou Google Sheets.
Tabelas: Cada tabela guarda informações sobre um tipo específico de "coisa" (Entidade), como
Usuarios
,Produtos
,Posts
.Colunas: Cada coluna na tabela representa uma característica (Atributo) dessa "coisa", como
nome
,email
,preco
,texto_do_post
.Linhas: Cada linha é um registro individual, uma "coisa" específica, como um usuário específico, um produto específico.
Relações: O ponto chave! As tabelas podem ser conectadas umas às outras através de "chaves" (vamos ver isso em detalhes logo logo!). Isso permite que você cruze informações. Por exemplo, conectar a tabela
Pedidos
com a tabelaUsuarios
pra saber quem fez qual pedido.
Linguagem: Para conversar com esses bancos, usamos uma linguagem padrão chamada SQL (Structured Query Language). É como o "inglês" dos bancos de dados relacionais. Com SQL, você pode pedir pra buscar dados, inserir novos, atualizar, deletar, etc.
Exemplos Famosos: PostgreSQL (o que o Supabase usa!), MySQL, SQL Server, Oracle.
Vantagens:
Organização: Tudo bem estruturado, fácil de entender as relações.
Consistência: Regras garantem que os dados fiquem corretos (ex: não deixar cadastrar um pedido sem um cliente associado).
SQL: Uma linguagem poderosa e muito usada no mercado.
Desvantagens:
Menos Flexível: Mudar a estrutura (adicionar uma coluna, por exemplo) pode ser um pouco mais chatinho.
Escalabilidade: Lidar com quantidades absurdas de dados ou usuários simultâneos pode exigir mais planejamento (embora bancos como o PostgreSQL sejam muito bons nisso hoje em dia).
Por que o Supabase usa Relacional (PostgreSQL)? O Supabase escolheu o PostgreSQL porque ele é:
Poderoso e Confiável: É usado por empresas gigantes e tem décadas de desenvolvimento.
Open Source: Combina com a filosofia do Supabase.
Cheio de Recursos: Suporta muitos tipos de dados, funções avançadas, etc.
SQL Padrão: Aprender SQL com PostgreSQL te prepara para muitos outros bancos.
Basicamente, o Supabase te dá a força e a confiabilidade do mundo relacional com uma camada de ferramentas modernas por cima!
O Mundo Flexível: Bancos de Dados Não Relacionais (NoSQL) 📦
Do outro lado da batalha, temos os bancos de dados Não Relacionais, ou NoSQL (que geralmente significa "Not Only SQL" - Não Apenas SQL).
Eles surgiram mais recentemente, pensando em problemas diferentes, como lidar com volumes GIGANTESCOS de dados (pensa no Facebook, Google, Twitter) e ter mais flexibilidade.
Em vez de usar só tabelas, os bancos NoSQL podem guardar dados de várias formas:
Documentos (JSON/BSON): Pense num arquivo de texto organizado com chaves e valores. É ótimo pra guardar informações que não têm uma estrutura super rígida. (Ex: MongoDB)
Chave-Valor: Super simples, como um dicionário gigante. Você tem uma chave única e um valor associado. (Ex: Redis, Memcached)
Colunares: Otimizados para ler e escrever colunas inteiras de dados rapidamente. (Ex: Cassandra, HBase)
Grafos: Perfeitos para representar relações complexas, como redes sociais (quem é amigo de quem?). (Ex: Neo4j)
Linguagem: Aqui não tem um padrão único como o SQL. Cada tipo de banco NoSQL tem sua própria forma de ser consultado.
Vantagens:
Flexibilidade: Mais fácil de mudar a estrutura dos dados sem quebrar tudo.
Escalabilidade Horizontal: Geralmente mais fácil de distribuir os dados em várias máquinas pra aguentar muito tráfego.
Performance para Casos Específicos: Podem ser mais rápidos que SQL para certos tipos de operações (ex: buscas simples por chave).
Desvantagens:
Menos Consistência (às vezes): Algumas garantias de consistência do SQL podem ser mais relaxadas (o que pode ser bom ou ruim, dependendo do caso).
Consultas Complexas: Fazer buscas que envolvem cruzar dados de diferentes "tipos" pode ser mais complicado que um
JOIN
no SQL.Falta de Padrão: Você precisa aprender a linguagem específica do banco que está usando.
Qual Mundo é Melhor? 🤔
Nenhum! Não existe "melhor" ou "pior", existe o mais adequado para cada missão.
Se você precisa de estrutura clara, relações bem definidas e garantia de que os dados estão consistentes (como num sistema financeiro, um cadastro de alunos, um e-commerce), o Relacional (SQL) costuma ser uma ótima escolha.
Se você tem dados que mudam muito de formato, precisa de altíssima velocidade pra leituras/escritas simples, ou tem um volume de dados que não para de crescer exponencialmente, o Não Relacional (NoSQL) pode ser mais interessante.
Muitas empresas grandes usam os dois tipos de bancos de dados, cada um para o que faz de melhor!
Para nossa jornada no Favelaware com Supabase, vamos focar no mundo Relacional com PostgreSQL. É uma base excelente e muito versátil pra maioria dos projetos que vamos querer construir.
Mas é legal saber que o mundo NoSQL existe, caso um dia você precise dele em outra missão!
No próximo capítulo, vamos mergulhar de cabeça na estrutura do nosso banco relacional: vamos aprender a criar as tabelas, colunas e linhas que vão guardar nossos preciosos dados.
Last updated