🚀 Capítulo 11: Conectando com Banco de Dados (Tema: Indiana Jones)
NOTE
Este capítulo utiliza a temática de Indiana Jones para explicar os Bancos de Dados. Os dados não podem ficar perdidos no tempo; eles precisam ser guardados em um templo seguro e indestrutível!
1. 🎯 Objetivo da Aula
Compreender a necessidade de um banco de dados para a persistência de dados e como o Backend se conecta a ele.
2. 🏢 O Cenário Prático (Seu Desafio)
Indiana Jones encontrou a localização da Arca da Aliança. Ele anotou as coordenadas no servidor, mas quando o servidor foi reiniciado para atualizar o sistema, os dados sumiram! (Lembra do problema da memória do capítulo anterior?). Seu desafio é ajudar o Indy a guardar essas informações preciosas em um local onde elas nunca se apaguem: um Banco de Dados.
3. 🧠 Fundamentos: A Teoria Traduzida
Até agora, guardamos os dados em um Array na memória RAM. A memória RAM é volátil (apaga quando desliga). Para persistir os dados (salvar para sempre), precisamos de um Banco de Dados (SGBD).
🏛️ Tipos de Templos de Dados:
- Bancos Relacionais (SQL): Guardam dados em tabelas (como planilhas Excel) com linhas e colunas. São ótimos para dados muito estruturados e com relações complexas.
- Exemplos: PostgreSQL, MySQL, SQLite.
- No mundo do Indy: Uma tabela de “Artefatos” e uma de “Templos”.
- Bancos Não-Relacionais (NoSQL): Guardam dados em formatos mais flexíveis, como documentos JSON. São ótimos para grande volume de dados e rapidez.
- Exemplos: MongoDB, Firebase.
🔌 Como o Backend conversa com o Banco?
O código do nosso servidor não fala a mesma linguagem do banco diretamente. Usamos um Driver ou um ORM (Object-Relational Mapping) como tradutor.
4. 📖 Exemplo Guiado: Fluxo de Persistência
sequenceDiagram participant API as Servidor Backend participant DB as Banco de Dados (Templo) API->>DB: Comando: "Salvar Artefato: Ídolo de Ouro" activate DB DB->>DB: Grava no disco rígido DB-->>API: Resposta: "Salvo com sucesso!" deactivate DB
🛠️ Prática Obrigatória 1: Memória vs Banco
Explique com suas palavras qual é o maior risco de um sistema de e-commerce (como a Amazon) guardar os carrinhos de compras dos clientes apenas na memória RAM do servidor.
6. 🛠️ Prática Obrigatória 2: SQL ou NoSQL?
Se você estivesse criando um sistema para uma rede social (onde um usuário segue o outro, curte fotos, comenta), você escolheria um banco SQL ou NoSQL? Justifique com base no que aprendeu sobre relações.
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 11 Backend) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
mod_07_backend_e_apis/
├── capitulos/
│ ├── capitulo_11_banco_dados.md
│ └── codigos/
│ └── cap11/
│ └── escolha_banco.txt9. 💡 Checkpoint de Lógica
Um arquivo de texto simples (.txt) pode ser usado como um banco de dados? Quais seriam os problemas de fazer isso em um sistema grande?
10. 🔥 Desafio de Fixação
Pesquise o que significa a sigla CRUD e como ela se mapeia para os comandos SQL (INSERT, SELECT, UPDATE, DELETE).
11. 🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1: O maior risco é a perda de dados. Se o servidor cair ou precisar ser reiniciado para uma atualização, todos os clientes perderiam o que colocaram no carrinho, gerando frustração e perda de vendas.