Dúvida com Modelagem de Banco de Dados
Problema
Tenho algumas tabelas em um projeto de banco de dados, são elas:
- tb_produto(id_produto, nome, descricao, id_categoria)
- tb_categoria(id_categoria, nome)
- tb_caracteristica(id_caracteristica, nome, id_produto)
- tb_valor(id_valor, nome, preco, quantidade, id_caracteristica)
- tb_imagem_valor(id_imagem, caminho, id_valor)
- tb_venda(id_venda, descricao, id_vendedor, id_tipo_pagamento, data)
- tb_item_venda(id_produto, id_venda, quantidade)
Relacionamentos: - Um produto pode pertencer a uma categoria, e uma categoria pode ter vários produtos;
- 1 produto pode ter várias características como voutagem, cor, e uma caracteristica pode ter vários valores;
cor=amarelo, azul
voutagem = 220V, 127V - Um valor de característica pode ter várias imagens
- Uma venda pode ter vários itens de venda
- Os ids da tabela de item_venda formam uma chave composta
- Todos os relacionamentos são 1 pra n ou n pra 1
Dúvida
Como que eu posso modelar esse banco para inserir estes produtos com categoria a que pertence, caracteristicas, valores e imagens em um estoque, e como que eu faria pra salvar nas vendas qual caracteristica e valor foram escolhidos na hora da compra, pois desse geito que está, ao tentar buscar por um produto ele vai trazer todas as características e valores, mas em cada venda eu só queria o que foce escolhido
Exemplo:
Da forma que está:
{
"itens": [
{
"nome": "Liquidificador",
"categoria": "Eletrodomésticos",
"caracteristicas": [
{
"nome": "Cor",
"valores": [
{
"nome": "Amarelo"
},
{
"nome": "Branco"
}
]
}
]
}
}
Fiz o json na mão, desculpa se ficou errado RS
Então, caso eu compre um liquidificador amarelo, queria que na minha venda só salvace a referência desse produto/caracteristica/valor.
Uma forma que pensei foi fazer isso, será que está certo?
tb_item_venda(id_item, quantidade, id_produto, id_venda, id_caracteristica, id_valor)
Já que a caracteristica teria o produto a qual pertence e o valor teria a referência da caracteristica. No caso, não usaria mais a chave composta
Grato a quem puder ajudar!