1
resposta

[Projeto] Faça como eu fiz: criando todas as tabelas

Um cliente faz vários pedidos→ Um pedido pode ter vários itens→ Cada item é um produto .
Fornecedores e colaboradores estão “isolados” por enquanto, mas podem ser conectados futuramente
Fornecedor → Produto
Colaborador → Pedido
Clientes → Pedidos → ItensPedido → Produtos
Fornecedores → Produtos (opcional)
Colaboradores → Pedidos (opcional)

-- Tabela de fornecedores
CREATE TABLE Fornecedores (
id TEXT PRIMARY KEY,
nome VARCHAR(255) NOT NULL,
contato VARCHAR(100),
telefone VARCHAR(20),
email VARCHAR(100),
rua VARCHAR(100) NOT NULL,
bairro VARCHAR(100) NOT NULL,
cidade VARCHAR(100) NOT NULL,
estado VARCHAR(2) NOT NULL,
cep VARCHAR(8) NOT NULL
);

-- Tabela de colaboradores
CREATE TABLE Colaboradores (
id TEXT PRIMARY KEY,
nome VARCHAR(255) NOT NULL,
cargo VARCHAR(100),
dataContratacao DATE,
telefone VARCHAR(20),
email VARCHAR(100),
rua VARCHAR(100) NOT NULL,
bairro VARCHAR(100) NOT NULL,
cidade VARCHAR(100) NOT NULL,
estado VARCHAR(2) NOT NULL,
cep VARCHAR(8) NOT NULL
);

-- Tabela de produtos
CREATE TABLE Produtos (
id TEXT PRIMARY KEY,
nome VARCHAR(255) NOT NULL,
descricao TEXT,
preco DECIMAL(10, 2) NOT NULL,
categoria VARCHAR(50)
);

-- Tabela de clientes
CREATE TABLE Clientes (
id TEXT PRIMARY KEY,
nome VARCHAR(255) NOT NULL,
telefone VARCHAR(20) NOT NULL,
email VARCHAR(100) DEFAULT "Sem email",
endereco TEXT NOT NULL
);

-- Tabela de pedidos
CREATE TABLE Pedidos (
id TEXT PRIMARY KEY,
idCliente TEXT,
dataHoraPedido DATETIME,
status VARCHAR(50),
FOREIGN KEY (idCliente) REFERENCES Clientes(id) ON DELETE CASCADE
);

-- Tabela de itens do pedido
CREATE TABLE ItensPedido (
idPedido TEXT,
idProduto TEXT,
quantidade INTEGER,
precoUnitario DECIMAL(10, 2),
PRIMARY KEY (idPedido, idProduto),
FOREIGN KEY (idPedido) REFERENCES Pedidos(id) ON DELETE CASCADE,
FOREIGN KEY (idProduto) REFERENCES Produtos(id) ON DELETE CASCADE
);

1 resposta

Oi, Moacir! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

A modelagem está coerente com as regras de negócio, mostra uma boa visão de crescimento do banco sem comprometer o estado atual do projeto.

Uma dica interessante para o futuro e praticar consultas usando JOIN:


SELECT c.nome, p.id, p.dataHoraPedido
FROM Clientes c
INNER JOIN Pedidos p ON c.id = p.idCliente;

Esse código retorna os clientes junto com seus pedidos, usando a chave estrangeira para conectar as tabelas.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abracos e bons estudos!