Não entendi muio bem se a dúvida era de ux pro front ou de back mas vamos lá.

E ecommerce normalmente se o o conceito de sku ou gtin que também pode ser ean em alguns lugares. o sku normalmente é utilizado para identificar o item no estoqur da empresa e pode ou não ser mais intuitivo. O gtin/ean é uma identificação numérica normalmente de 13 dígitos que é em teoria única no mundo. Dito isso um produto pode ser identificado diretamente por eles. Supondo que um produto possa ter variações como tamanho de camiseta e cor. Faz-se mais sentido que ao exibir para p usuário ele veja um único produto com suas variações. Ao salvar essas informações no banco de dados é importante diferenciar o que é um produto do que é uma característica de produto. No exemplo dado note que cor e tamanho podem aplicar a difentes produtos o que os tornam características. a melhor forma de exibir isso no front seria exibindo as permutações de forma separada. Porém existe um problema aqui que está relacionado ao negócio. Veja... produto A na cor Azul é diferente de produto A na cor Verde ou em outras palavras são sku/gtin diferentes? Se sim, então o sku/gtin deve estar associado a característica do produto. Se não deve estar associado diretamente ao produto.

Uma sugestão de json seria: { "id”: 1, "description": "Camiseta phineas e rick", "subversions": [ { "sku": 12345, "color": blue, "tamanho": M, }, { "sku": 12346, "color": blue, "tamanho": G, }, { "sku": 12445, "color": red, "tamanho": M, }, { "sku": 12545, "color": black, "tamanho": M, } ] } Lembre-se identifique qual a necessidade do negócio e adapte a estrutura para que seu front consuma de forma mais rápida. o que é salvo no banco não necessariamente é como você vai usar/consumir no front.

Boa sorte