Solicitando Feedback sobre o Modelo de Banco de Dados para um Site de Vendas
16/12/2023
0
Estou desenvolvendo um site de vendas de produtos (Ainda não fiz a escolha de qual tipo de loja será) para meu TCC de 3ºAno EM, e gostaria de solicitar feedback sobre o modelo de banco de dados que criei para esse propósito.
Aqui está a estrutura do banco de dados que estou considerando usar:
CREATE DATABASE site;
USE site;
CREATE TABLE tb_categoria (
categoria_id INT AUTO_INCREMENT PRIMARY KEY,
categoria VARCHAR(255)
);
CREATE TABLE tb_produto (
produto_id INT AUTO_INCREMENT PRIMARY KEY,
categoria_id INT,
ativo INT,
imagem VARCHAR(255),
quantidade INT,
nome VARCHAR(255),
descricao VARCHAR(255),
preco_uni DECIMAL(10, 2),
FOREIGN KEY (categoria_id) REFERENCES tb_categoria (categoria_id)
);
CREATE TABLE tb_cliente (
cliente_id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(255) NOT NULL,
sobrenome VARCHAR(255) NOT NULL,
telefone VARCHAR(20),
data_nasc DATE NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
senha VARCHAR(32) NOT NULL,
nivel VARCHAR(255) NOT NULL
);
CREATE TABLE tb_endereco (
endereco_id INT AUTO_INCREMENT PRIMARY KEY,
cliente_id INT,
bairro VARCHAR(255) NOT NULL,
rua VARCHAR(255) NOT NULL,
cep VARCHAR(8) NOT NULL,
complemento VARCHAR(255) NOT NULL,
numero VARCHAR (50) NOT NULL,
cidade VARCHAR(255) NOT NULL,
estado VARCHAR(50) NOT NULL,
FOREIGN KEY (cliente_id) REFERENCES tb_cliente(cliente_id)
);
CREATE TABLE tb_venda (
venda_id INT AUTO_INCREMENT PRIMARY KEY,
endereco_id INT,
data_venda DATE NOT NULL,
status_pedido VARCHAR(50) NOT NULL,
total DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (endereco_id) REFERENCES tb_endereco(endereco_id)
);
CREATE TABLE tb_item_venda (
item_venda_id INT AUTO_INCREMENT PRIMARY KEY,
venda_id INT,
produto_id INT,
quantidade INT,
subtotal DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (venda_id) REFERENCES tb_venda(venda_id),
FOREIGN KEY (produto_id) REFERENCES tb_produto(produto_id)
);
Agradeço antecipadamente qualquer feedback ou sugestões para melhorar a estrutura do banco de dados. Se houver algo que possa ser aprimorado ou se algo está faltando, estou aberto a todas as sugestões.
Obrigado!
Diogo Patriarca Schimidt
Diogo
Posts
16/12/2023
Diogo
Agradeço muito qualquer ajuda ou insights que vocês possam fornecer.
Obrigado!
18/12/2023
Arthur Heinrich
Venda e cobrança são coisas que andam juntas, mas são diferentes.
Com relação ao pedido, acho que você já descreveu bem. Em um sistema real, você precisa de mais informações, já que cada produto pode estar sujeito a alíquotas de imposto distintas. É mais complicado. Mas, para um trabalho de TCC, OK.
Os meios de pagamento são formas de cobrar o cliente. Você precisa de um sistema que lhe permita cobrar à vista ou parcelado, utilizando os principais meios de pagamento disponíveis: dinheiro, cartão de crédito, cartão de débito, boleto, PIX.
Também pode pensar em ferramentas para correção de "problemas".
Se você fatura um produto com preço incorreto, pode ter que aplicar abatimentos associados a um item da venda. Estes abatimentos podem gerar um crédito para o cliente, que tem que ser contabilizados em uma espécie de conta corrente.
O cliente pode requerer este crédito via reembolso, ou deixar o crédito para uma compra futura.
Ele pode ter pago com atraso e isso implica cobrar multas e juros.
A entrega de um produto pode ser condicionada ao pagamento.
Ou seja, há muitos detalhes a serem considerados em um sistema real. Você está criando um sistema simplificado, para fins de TCC. É importante saber, do orientador, que nível de abstração você pode impor ao seu trabalho, sem que isso implique perder pontos.
21/12/2023
P3rm4tr1p
Estou desenvolvendo um site de vendas de produtos (Ainda não fiz a escolha de qual tipo de loja será) para meu TCC de 3ºAno EM, e gostaria de solicitar feedback sobre o modelo de banco de dados que criei para esse propósito.
Aqui está a estrutura do banco de dados que estou considerando usar:
CREATE DATABASE site;
USE site;
CREATE TABLE tb_categoria (
categoria_id INT AUTO_INCREMENT PRIMARY KEY,
categoria VARCHAR(255)
);
CREATE TABLE tb_produto (
produto_id INT AUTO_INCREMENT PRIMARY KEY,
categoria_id INT,
ativo INT,
imagem VARCHAR(255),
quantidade INT,
nome VARCHAR(255),
descricao VARCHAR(255),
preco_uni DECIMAL(10, 2),
FOREIGN KEY (categoria_id) REFERENCES tb_categoria (categoria_id)
);
CREATE TABLE tb_cliente (
cliente_id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(255) NOT NULL,
sobrenome VARCHAR(255) NOT NULL,
telefone VARCHAR(20),
data_nasc DATE NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
senha VARCHAR(32) NOT NULL,
nivel VARCHAR(255) NOT NULL
);
CREATE TABLE tb_endereco (
endereco_id INT AUTO_INCREMENT PRIMARY KEY,
cliente_id INT,
bairro VARCHAR(255) NOT NULL,
rua VARCHAR(255) NOT NULL,
cep VARCHAR(8) NOT NULL,
complemento VARCHAR(255) NOT NULL,
numero VARCHAR (50) NOT NULL,
cidade VARCHAR(255) NOT NULL,
estado VARCHAR(50) NOT NULL,
FOREIGN KEY (cliente_id) REFERENCES tb_cliente(cliente_id)
);
CREATE TABLE tb_venda (
venda_id INT AUTO_INCREMENT PRIMARY KEY,
endereco_id INT,
data_venda DATE NOT NULL,
status_pedido VARCHAR(50) NOT NULL,
total DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (endereco_id) REFERENCES tb_endereco(endereco_id)
);
CREATE TABLE tb_item_venda (
item_venda_id INT AUTO_INCREMENT PRIMARY KEY,
venda_id INT,
produto_id INT,
quantidade INT,
subtotal DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (venda_id) REFERENCES tb_venda(venda_id),
FOREIGN KEY (produto_id) REFERENCES tb_produto(produto_id)
);
Agradeço antecipadamente qualquer feedback ou sugestões para melhorar a estrutura do banco de dados. Se houver algo que possa ser aprimorado ou se algo está faltando, estou aberto a todas as sugestões.
Obrigado!
Diogo Patriarca Schimidt
Um conselho que eu daria para você vendo esse código era revisar a normalização para evitar redundâncias, tornar o campo de telefone obrigatório na tabela de clientes e considerar práticas mais seguras para armazenar senhas. Para as imagens de produtos, pense em armazenar apenas o caminho relativo. Certifique-se de que os tipos de dados são apropriados para cada campo, e refine o campo de nível do cliente se diferentes acessos forem previstos. Utilizar códigos numéricos para os estados dos pedidos pode ser mais eficiente, e incluir a quantidade de itens vendidos diretamente na tabela de vendas pode ser útil dependendo dos requisitos do projeto. Estas são sugestões gerais para aprimorar ainda mais a estrutura do banco de dados. Boa sorte com o desenvolvimento do seu TCC!
Clique aqui para fazer login e interagir na Comunidade :)