🚀 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:

  1. 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”.
  2. 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)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 11 Backend) e clique em Commit to main.
  2. 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.txt

9. 💡 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.


Capitulo Anterior | Proximo Capitulo