Na minha leiguice e como eu penso atualmente, teria uma tabela Produto, Estrutura e tecido base. Os dados da tabela produto seriam FK_estrutura FK_tecido, principalmente. E ai teria uma tabela como Color_Estrutura, que guardaria as cores disponiveis para cada estrutura. E ai pra mostrar pro user tu só traria as cores disponiveis pra cada estrura. Deve ter outra forma de fazer mas, pensei nessa. Se eu tiver entendido o problema é assim que eu resolveria.
Em resposta a Lógica para variação de produtos (marketplace)
2