Executando verificação de segurança...
1

[Ajuda - Banco de Dados] Preciso de ajuda para modelar um banco

Olá pessoal, preciso de ajuda para modelar um banco de dados.

Estou montando um sistema de carrinho, porém está sendo um pouco complexo para mim. Tenho a seguinte modelagem:

texto

A minha dúvida é no front, quando eu for exibir para o cliente o carrinho dele, como vou conseguir separar, ex: se o cliente adiciona no carrinho o mesmo anuncio mas com tamanho e cor diferentes como vou saber que o produto A e B da cor vermelho e tamanho GG são juntos e o produto C e D da cor verde e tamanho P são juntos. Porque um anuncio pode ter mais de um produto. Não sei se deu para entender, se tiverem alguma dúvida comentem aqui. Estou preso nisso a dias e não sei como resolver.

Carregando publicação patrocinada...
5

Essa é uma aplicação real?

Não me parece inicialmente um problema de modelagem, mas de entendimento dos requisitos.
Não sei qual é o cenário que te apresentaram, mas no mundo do e-commerce essa questão de tamanho, cor, voltagem, estampa etc, são resolvidas de diversas formas a que eu mais me deparei foi por SKU.

SKU (Stock Keeping Unit), existe um produto principal e nele são associados essas variações e cada variação tem seu cadastro de SKU diferente (com seu próprio ID), o que o cliente coloca no carrinho não é o produto mas sim o SKU.

OBS: A resolução da imagem postada não ajuda a entender nada da sua modelagem

1

Não consegui ler nada da imagem.
Atribua um identificador único para cada produto base, independentemente de suas variantes. Esse identificador será o mesmo para todas as variantes do mesmo produto. Assim, você pode agrupar as variantes sob o mesmo identificador.
Combinação de Atributos:

Crie uma estrutura que permita a combinação de atributos (tamanho, cor, etc.) para representar exclusivamente cada variante. Por exemplo, para o Produto A com tamanho GG e cor vermelho, você pode ter uma combinação única de atributos associada a ele.

carrinho = [
  { 
    produtoBaseId: 'produtoA', 
    atributos: { tamanho: 'GG', 
    cor: 'vermelho' }, 
    quantidade: 2 
  },
  { 
    produtoBaseId: 'produtoB', 
    atributos: { tamanho: 'P', 
    cor: 'verde' }, 
    quantidade: 1 
  },
  // Outros itens do carrinho...
];