🚀 Capítulo 14: Pokédex Completa (Tema: Pokémon)
NOTE
Este capítulo utiliza a temática de Pokémon para explicar a Modelagem de Dados e Relacionamentos. Conecte os dados do seu sistema de forma inteligente para criar uma Pokédex perfeita!
1. 🎯 Objetivo da Aula
Compreender o conceito de Modelagem de Dados, conhecer os tipos de dados básicos e aprender os três tipos principais de relacionamentos entre tabelas: , e .
2. 🏢 O Cenário Prático (Seu Desafio)
No mundo dos monstros de bolso, a Pokédex é a enciclopédia eletrônica que guarda os dados de todas as criaturas descobertas. Cada Pokémon possui um número identificador (ID), um nome, uma altura e um peso. Mas as coisas ficam mais complexas:
- Um Pokémon pode pertencer a um Treinador (como o Pikachu pertence ao Ash).
- Um Treinador pode capturar vários Pokémons diferentes.
- E um Pokémon pode ter até dois tipos elementares (como o Charizard que é do tipo Fogo e Voador ao mesmo tempo).
No desenvolvimento Full Stack, desenhar como esses dados se conectam no banco de dados é chamado de Modelagem de Dados. Se você não planejar bem essas conexões, o seu sistema ficará lento e cheio de bugs! Seu desafio é modelar a Pokédex!
🧠 Fundamentos: A Teoria Traduzida
Para modelar os dados, primeiro precisamos entender os tipos de informação e depois como elas se relacionam.
📊 1. Tipos de Dados Comuns:
- String: Textos (Ex: Nome do Pokémon).
- Integer/Float: Números inteiros ou com vírgula (Ex: ID ou Peso).
- Boolean: Verdadeiro ou Falso (Ex:
capturado: true).
🔗 2. Os 3 Tipos de Relacionamentos:
A) Um para Um (1:1):
Um dado de uma tabela se conecta a apenas um dado de outra tabela.
- Exemplo: Um Pokémon tem apenas uma ficha de descrição detalhada no banco, e aquela ficha pertence apenas àquele Pokémon específico.
B) Um para Muitos (1:N):
Um dado de uma tabela pode se conectar a vários dados de outra tabela. (É o mais usado!).
- Exemplo: Um Treinador pode ter Muitos Pokémons na sua equipe. Mas cada um daqueles Pokémons pertence a apenas Um treinador específico.
C) Muitos para Muitos (N:N):
Vários dados de uma tabela se conectam a vários dados de outra tabela.
- Exemplo: Um Pokémon pode ter vários Golpes/Ataques. E um mesmo Golpe (como Choque do Trovão) pode ser aprendido por vários Pokémons diferentes!
4. 📖 Exemplo Guiado: Chave Estrangeira (Foreign Key)
Para fazer o relacionamento (Um para Muitos) funcionar no banco SQL, nós colocamos o ID do Treinador dentro da linha do Pokémon. Esse ID guardado na tabela do outro se chama Chave Estrangeira:
Tabela Pokémons:
| ID | Nome | Treinador_ID (Chave Estrangeira) |
|---|---|---|
| 1 | Pikachu | 10 (Ash) |
| 2 | Bulbasaur | 10 (Ash) |
| 3 | Onix | 20 (Brock) |
5. 🛠️ Prática Obrigatória 1: Identificando o Relacionamento
Qual tipo de relacionamento (, ou ) existe nas seguintes situações de um aplicativo de escola?
- A relação entre Professor e Turmas (Um professor pode dar aula para várias turmas, e uma turma pode ter vários professores de matérias diferentes).
- A relação entre Aluno e Boletim (Um aluno tem apenas um boletim no ano, e aquele boletim pertence a apenas um aluno específico).
6. 🛠️ Prática Obrigatória 2: Escolhendo o Tipo de Dado
- Se você fosse criar a coluna
precopara os gibis na sua loja virtual, qual tipo de dado você escolheria para essa coluna no banco de dados (String, Integer ou Float)? Por quê?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 14 FS_Pokedex) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
proj_aplicacoes_full_stack/
├── capitulos/
│ └── capitulo_14_pokedex.md💡 Checkpoint de Lógica
Para fazer relacionamentos do tipo Muitos para Muitos () no SQL, nós obrigatoriamente precisamos criar uma terceira tabela intermediária (chamada de tabela pivo) apenas para guardar as conexões de IDs entre as duas tabelas principais!
10. 🔥 Desafio de Fixação
Tente desenhar no papel como ficariam as tabelas de Clientes e Pedidos de uma pizzaria e como elas se relacionariam.
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- Muitos para Muitos ().
- Um para Um (). Gabarito da Prática 2:
- Float (ou Decimal). Porque o preço de um produto geralmente envolve centavos (números com vírgula, como ). Se usássemos Integer, não conseguiríamos salvar os centavos!