Combien de types de produits attendez-vous ? Ont-ils chacun leur propre logique d'application ?
Vous pouvez créer un modèle généralisé appelé modèle "valeur d'attribut d'entité", mais il comporte BEAUCOUP de pièges lorsque vous essayez de traiter des propriétés spécifiques d'un produit. Les requêtes de recherche simples se transforment parfois en véritables cauchemars. L'idée de base est que vous avez une table contenant l'ID du produit, le nom de la propriété (ou l'ID dans une table de propriétés) et la valeur. Vous pouvez également ajouter des tableaux pour contenir des modèles pour chaque type de produit. Ainsi, un ensemble de tableaux vous indiquerait pour un produit donné quelles propriétés il peut avoir (éventuellement avec des plages de valeurs valides) et un autre ensemble de tableaux vous indiquerait pour tout produit individuel quelles sont les valeurs.
Cependant, je vous déconseille fortement d'utiliser ce modèle, car cela semble être une idée vraiment astucieuse jusqu'à ce que vous deviez l'implémenter.
Si votre nombre de types de produits est raisonnablement limité, j'opterais pour votre deuxième solution :une table de produits principale avec des attributs de base, puis des tables supplémentaires pour chaque type de produit spécifique.