Aula 10: Banco de Dados Avançado - Relacionamentos e Otimização - Curso Grátis Introdutório de Programação, Web e Jogos

 

Aula 10: Banco de Dados Avançado - Relacionamentos e Otimização 

📌 Objetivo: Melhorar nosso banco de dados usando relacionamentos e técnicas de otimização.


1️⃣ O Que São Relacionamentos em Banco de Dados?

Até agora, nossa tabela de clientes era simples. Mas em projetos reais, precisamos conectar diferentes tabelas.

📌 Exemplo:

  • Tabela clientes (id, nome, email)
  • Tabela pedidos (id, cliente_id, produto, valor)

Aqui, um cliente pode ter vários pedidos → Isso é um relacionamento 1:N (um para muitos).

🔥 Vamos implementar isso agora!


2️⃣ Criando Relacionamento no SQLite

🔹 Adicionando a Tabela pedidos

📌 Abra seu arquivo database.py e modifique:

python
import sqlite3 # Conectar ao banco conn = sqlite3.connect("banco.db") cursor = conn.cursor() # Criar tabela de clientes cursor.execute(""" CREATE TABLE IF NOT EXISTS clientes ( id INTEGER PRIMARY KEY AUTOINCREMENT, nome TEXT NOT NULL, email TEXT UNIQUE NOT NULL ) """) # Criar tabela de pedidos com chave estrangeira cursor.execute(""" CREATE TABLE IF NOT EXISTS pedidos ( id INTEGER PRIMARY KEY AUTOINCREMENT, cliente_id INTEGER NOT NULL, produto TEXT NOT NULL, valor REAL NOT NULL, FOREIGN KEY (cliente_id) REFERENCES clientes(id) ) """) # Salvar e fechar conn.commit() conn.close()

📌 Explicação:
✅ Agora, cada pedido pertence a um cliente através do campo cliente_id.
FOREIGN KEY (cliente_id) REFERENCES clientes(id) cria a conexão entre as tabelas.


3️⃣ Criando API Para Gerenciar Pedidos

🔹 Adicionando um Pedido (POST)

No seu app.py, adicione essa rota:

python
@app.route('/pedidos', methods=['POST']) def criar_pedido(): dados = request.json cliente_id = dados['cliente_id'] produto = dados['produto'] valor = dados['valor'] conn = sqlite3.connect("banco.db") cursor = conn.cursor() cursor.execute("INSERT INTO pedidos (cliente_id, produto, valor) VALUES (?, ?, ?)", (cliente_id, produto, valor)) conn.commit() conn.close() return jsonify({"mensagem": "Pedido criado com sucesso!"})

📌 Agora podemos enviar um pedido para um cliente!

🔹 Listando Pedidos de um Cliente (GET)

python
@app.route('/clientes/<int:cliente_id>/pedidos', methods=['GET']) def listar_pedidos(cliente_id): conn = sqlite3.connect("banco.db") cursor = conn.cursor() cursor.execute("SELECT * FROM pedidos WHERE cliente_id = ?", (cliente_id,)) pedidos = cursor.fetchall() conn.close() return jsonify(pedidos)

📌 Agora conseguimos ver todos os pedidos de um cliente específico.


4️⃣ Testando no Front-End

No seu script.js, adicione:

javascript
function criarPedido(clienteId, produto, valor) { fetch('http://localhost:5000/pedidos', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ cliente_id: clienteId, produto, valor }) }) .then(response => response.json()) .then(data => alert(data.mensagem)) .catch(error => console.error('Erro:', error)); } function listarPedidos(clienteId) { fetch(`http://localhost:5000/clientes/${clienteId}/pedidos`) .then(response => response.json()) .then(pedidos => console.log(pedidos)) .catch(error => console.error('Erro:', error)); }

📌 Agora conseguimos cadastrar e visualizar pedidos no Front-End!


5️⃣ Exercício Prático

Adicione um botão no Front-End para criar pedidos!
Exiba os pedidos de um cliente quando ele for selecionado!

🔥 Dica: Use innerHTML para mostrar os pedidos na tela!


📩 Próxima Aula

Na Aula 11, vamos aprender sobre autenticação de usuários (login e senha)! 🔐

📌 Dúvidas? Pergunta aqui! 🚀

Comments

Popular posts from this blog

Aula 7: Criando um Back-End com Flask (API Web) - Curso Grátis Introdutório de Programação, Web e Jogos

Aula 9: Deploy - Colocando Sua Aplicação Online - Curso Grátis Introdutório de Programação, Web e Jogos

Aula 8: Criando o Front-End com HTML, CSS e JavaScript - Curso Grátis Introdutório de Programação, Web e Jogos