Je construis une boutique en ligne pour vendre des produits comme "Green Extra-large, T-shirts". Par exemple, la même chemise peut avoir plusieurs tailles/couleurs, une combinaison différente peut être épuisée, une combinaison différente peut avoir des prix différents, etc.Comment modéliser des "produits" dans une application de magasin en ligne
Ma question est comment je devrais modéliser ces produits dans mon application Rails (ou vraiment comment le faire dans n'importe quelle application).
Ma pensée actuelle est la suivante:
Class Product
has_many :variants, :through => :characteristics
has_many :characteristics
end
Class Characteristic
belongs_to :product
belongs_to :variants
end
Class Variant
has_many :products, :through => :characteristics
belongs_to :characteristic
end
Ainsi, chaque produit aura une ou plusieurs caractéristiques (par exemple, « couleur », « Taille », etc.), et chaque caractéristique sera alors une ou plusieurs variantes (par exemple, "Rouge", "Bleu", etc.)
Le problème avec cette méthode est où puis-je stocker le prix et l'inventaire? Par exemple, le prix et l'inventaire d'un produit donné sont déterminés par les variantes que prennent ses caractéristiques. (Le vert pourrait être plus cher que le rouge, le gros pourrait être en rupture de stock, etc.). Une idée que j'ai eu était de donner aux produits un «prix de base», et de laisser les variantes le modifier, mais cela semble trop complexe (et pourrait ne pas fonctionner).
Ceci est un conseil judicieux. Dans l'entreprise pour laquelle je travaille, nous n'avons que deux tables - Product et ProductItem - et la couleur et la taille n'ont pas été correctement normalisées. Il rend la gestion/l'association d'images spécifiques aux couleurs un véritable cauchemar. C'est comme ça que je le ferais; la couleur et la taille sont des concepts de première classe .... –
... et nous avons rencontré des scénarios où "les jaunes sont fabriqués en Thaïlande mais les blancs viennent de Chine", mais puisque nous stockons cela au niveau du produit, nous pouvons ne modélisez pas cela et finissez par dupliquer le SKU, ce qui cause d'autres problèmes. Être flexible mais fournir l'interface utilisateur pour les scénarios communs est un conseil +1. –
Merci Nicholas. Ce conseil vient d'être brûlé trop souvent en supposant que les caractéristiques "faciles" peuvent simplement être farcies dans la table principale. Je peux facilement voir que la table "Couleur" gagne finalement plus d'attributs en raison des différences d'approvisionnement. Trompez moi une fois... – Godeke