Banco de Dados (para quem esta começando…)
Sabe aquele assunto de banco de dados relacional que apareceu pela primeira vez na faculdade — relações 1:1, 1:N, N:N — mas te passaram de maneira tão teórica, com tabelas e 500 tipos de diagramas diferentes, que você pensou: “Nunca vou usar isso na vida”? Pois é. Errado. Muito errado…
Se você está começando no backend agora, deixa eu te dar um aviso importante: quase tudo gira em torno de entender relacionamentos entre tabelas. Se você não entende isso, vai se perder bonito mexendo em qualquer aplicação real. Tudo depende de tudo.
O tal do schema
O schema é a base do seu projeto. É nele que você enxerga as relações entre tabelas, quem depende de quem e como as coisas se conectam. Dica prática: desenhe. Sério. Pode ser no papel, na parede, no Paint... só desenha.
Pensa assim: cada relacionamento é uma linha ligando duas tabelas. Se você conseguir visualizar isso, já tem meio caminho andado.
(E aqui você volta a desenhar tabelas e entende o que o professor da faculdade tentou te dizer kkk)
OBS: Grande parte dos tutoriais por aí passa voando por isso. O cara abre o vídeo, copia uma config pronta, fala “isso é padrão” e pronto. Nunca mais explica o porquê daquilo. Mas é importante você ir atrás.
Tipos de dados (ou como seu ORM enxerga o mundo)
Você precisa entender como o ORM que você usa representa os tipos básicos:
Int,Boolean,Decimal(atenção: muitas vezes isso vem comostringno retorno – trate isso antes de jogar no front!)
Saber isso evita vários bugs e problemas de formatação entre backend e frontend.
Consultas: o arroz com feijão
Aqui é onde a mágica (ou o caos) acontece. Algumas funções que você precisa conhecer:
findFirst,findUnique,findMany,create,update,delete
Se você entende o que essas funções fazem, já consegue se virar com 80% das tarefas no começo. Mas claro, não para por aí.
Observação: às vezes os nomes mudam, mas tudo segue a mesma base. Programação tem muito disso — várias ferramentas fazendo a mesma coisa, mas com uma API diferente. Vai se acostumando (especialmente no mundo JS).
Consultas com filtros, ordenações e paginação
É aqui que o negócio começa a ficar mais interessante. Ordenar por data de criação? Filtrar por status? Fazer paginação? Ordenar por um campo order e manter a sequência sem deixar furos (ex: 1, 2, 3, 5 não pode acontecer)?
Tudo isso entra nessa camada.
Na prática, você acaba usando um findMany, mas com algumas configurações adicionais no seu where, take, skip e orderBy. Exemplo:
orderBy: { createdAt: 'asc' }
orderBy: { order: 'asc' }
Relacionamentos e vinculações
Aqui o júnior chora e a mãe não vê.
Criar relações entre tabelas exige um pouco mais de cuidado. Você precisa entender bem o tipo de relacionamento entre as entidades, como mapear isso no ORM, como definir as foreign keys corretamente e como fazer consultas que envolvem múltiplas tabelas de forma segura e performática.
Aqui você usa um include ou um select.
Performance
Esse tópico pode virar um curso inteiro, mas vou listar algumas ideias pra você começar a se preocupar com performance desde cedo:
- Saber quando usar
selectem vez deincludepode economizar MUITO dado sendo carregado desnecessariamente.selecttraz apenas os campos que você realmente precisa.includepuxa tudo da tabela relacionada — e isso pode ser caro, dependendo da profundidade.
- Reduza o número de queries desnecessárias: às vezes você pode resolver algo com uma só query bem feita, em vez de 3 chamadas separadas ao banco.
- Indexação: estude como criar índices nos campos que são mais usados em filtros e ordenações.
- Transactions: aprenda a agrupar múltiplas alterações no banco em uma única operação atômica. Se uma falhar, tudo é desfeito. Isso evita estados quebrados no banco.
Anota essas perguntas pra estudar depois:
- Quando usar
selecte quando usarinclude? - Como fazer uma transaction?
- O que é lazy loading e eager loading?
Observação importante
Você pode não entender tudo desse post de primeira — e tá tudo bem. Se você leu e quer aprender, copia esse texto e joga na sua IA favorita. Pede pra ela te explicar parte por parte, conversa com ela um pouco e depois vai pro código treinar. Ler, entender e praticar. Não tem outro caminho.
Dica de exercício pra fixar
Cria uma API de lista de tarefas (ToDo List), mas faz ela com um pouco mais de complexidade:
- Cada nota criada pode estar vinculada a outra nota.
- As notas podem pertencer a grupos.
- Permita mover notas entre grupos, editar os dados de cada nota e de cada grupo.
- Vá além: pense em como seria o cadastro de usuário, login, autenticação, permissões, etc.
Faz um projetinho completo. Você, o VSCode e o Insomnia, juntinhos na missão.
Conclusão
Se você está começando agora no backend, não subestime o poder de entender bem os relacionamentos, como o ORM lida com eles e como fazer consultas limpas, seguras e eficientes. Isso não só vai facilitar sua vida, como vai te poupar de muitos bugs difíceis de rastrear.
Aprender isso de verdade mudou minha forma de enxergar o backend. (Queria ter lido isso antes de me deparar com minha primeira vaga…)
Sim, ainda sou júnior. Talvez eu erre em algumas coisas aqui. Mas se esse post ajudar 1 ou 2 pessoas a chegarem na primeira vaga menos perdidas, já valeu.