Opa cara, tudo bem?

O que se pode fazer, e na vida real se faz assim mesmo, é criar uma cópia do produto como item do pedido de venda.

Como assim?

Imagine que você fez a compra de um produto. Depois da sua compra, o produto foi deletado do banco de dados. O que vai acontecer com o seu pedido? O item vai sumir? Isso não pode acontecer. O mesmo pode acontecer com as características.

Então, no momento da compra, você deve criar uma cópia dos dados do produto pertinentes ao pedido. Para as características, uma opção é salvar o nome e o valor, ao invés do Id.

Então como ficaria a tabela item_venda:

  • tb_item_venda(id_produto, nome, preco_compra_unidade, preco_compra_total, id_venda, quantidade, caracteristica_nome, caracteristica_valor, url_imagem)

Dica: acredito que o relacionamento correto para caracaterísticas e produtos seja de m para n. O preço e a imagem poderiam ficar na tabela do relacionamento

  • tb_produto_caracteristica_valor(id_produto, id_caracteristica, id_valor, preco, imagem_url)

Outra dica que digo de coração: te aconselho a estudar português e a ler mais. Leia de tudo, especialmente literatura clássica e ficção, algo que goste. Vai te ajudar bastante a melhorar a sua comunicação e seu aprendizado, além de outras soft skills.

Abraço, espero ter te ajudado. Continue estudando!

Opa, joaons! Sobre as chaves estrangeiras, na tabela item_venda, fiquei preocupado em guardar somente o nome e valor da característica, pois não pretendo excluir o produto do banco, só marcar como inativo mesmo. Pois fica mais fácil para gerar relatórios depois. Sobre o relacionamento produto e característica, faz sentido o relacionamento n pra n mesmo Muito obrigado pela ajuda e dicas!