Boa noite galera! Estou com um problema que é o seguinte, preciso colocar os atributos de produtos em uma loja virtual e estou me batendo muito na disposição das tabelas do banco. Agora está assim: Tenho as tabelas: Produtos (Que são os valores fixos dos produtos, como descrição, informações técnicas). IdProduto | nomeProduto | descricaoProduto| informacoesTecn | blabla |
3 Camiseta Polo Blablabla Altura: 3x3.. blabl
4 Calça Jeans blablabla blablabla blabla
produtos_complemento (que são os valores variaveis dependendo do item)
idProduto | codProduto | valorProduto | qtdEstoque | altura | largura | comprimento | etc...
3 10 100,00 40 1 1 1 etc...
3 11 110,00 30 1 1 1 etc...
4 16 20,00 10 1 1 1 etc...
4 18 25,00 50 1 1 1 etc...
tipos_atributos (que são os tipos de atributos que posso colocar nos produtos)
idTipoAtributo | nomeAtributo
1 cor
2 tamanho
3 aro
4 etc...
atributos (são os atributos em si)
idAtributo | idTipoAtributo | nomeAtributo
1 1 Amarelo
2 1 Verde
3 1 Vermelho
4 2 42
5 2 40
produtos_atributos (é a relação entre o atributo e o produto)
idLinha | idProduto | codProduto | idTipoAtributo | idAtributo
1 3 10 1 1
2 3 11 2 4 Então o que acontece, o usuário entra em um produto, por exemplo, a camiseta polo (idProduto 10) e seleciona a variação... Por exemplo: Cor - Amarela, Tamanho - 42. Nessa hora eu preciso ir no banco de dados e verificar qual o código do produto com a variação correspondente segundo o idProduto. Nesse exemplo que dei, segue os dados: Camiseta Polo (idProduto 10) Cor (idTipoAtributo 1) Amarelo (idAtributo 1) Tamanho (idTipoAtributo 2) 42 (idAtributo 4) O problema é que na disposição que está o banco de dados agora, se eu fizer esse select, eu vou achar somente o codProduto da camiseta AMARELA ou somente a camiseta NUMERO 42 e nunca as duas variações juntas para um produto. Sei que eu poderia criar mais campos na tabela produtos_complemento como "idTipoAtributo1, atributo1, idTipoAtributo2, atributo2" mas dessa forma eu teria uma quantidade de atributos fixa, e não é esse o caso, pois meu cliente poderá cadastrar N atributos para cada produto. Então fica a dúvida, qual a forma correta de deixar o BD? Desculpem pelo texto enorme, mas não vi outra forma de explicar corretamente sem colocar todos os exemplos. Obrigado desde já!