2009-04-02 11 views
8

मैं "ग्रीन अतिरिक्त-बड़े, टी-शर्ट" जैसे उत्पादों को बेचने के लिए एक ऑनलाइन स्टोर बना रहा हूं। हां, एक ही शर्ट में कई आकार/रंग हो सकते हैं, अलग-अलग संयोजन बेचे जा सकते हैं, विभिन्न संयोजनों में अलग-अलग कीमतें हो सकती हैं, आदिऑनलाइन स्टोर एप्लिकेशन में "उत्पादों" का मॉडल कैसे करें

मेरा सवाल यह है कि मुझे इन उत्पादों को अपने रेल एप्लिकेशन में कैसे मॉडल करना चाहिए (या वास्तव में कैसे इसे किसी भी आवेदन में करें)।

मेरे वर्तमान सोच है:

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 

इसलिए प्रत्येक उत्पाद एक या अधिक विशेषताओं (जैसे, "रंग", "आकार", आदि), और प्रत्येक विशेषता तो एक या अधिक वेरिएंट होगा (होगा उदाहरण के लिए, "लाल", "नीला", आदि)।

इस विधि के साथ समस्या है जहां मैं मूल्य और सूची स्टोर करता हूं? आईई, एक दिए गए उत्पाद की कीमत और सूची उनके विशेषताओं के रूपों द्वारा निर्धारित की जाती है। (हरा लाल से अधिक महंगा हो सकता है, बड़े स्टॉक से बाहर हो सकता है, आदि)।

एक विचार था कि मुझे उत्पादों को "बेस_प्रिस" देना था, और वेरिएंट इसे संशोधित करने दें, लेकिन यह अत्यधिक जटिल (और काम नहीं कर सकता) लगता है।

उत्तर

13

मैंने इस तरह के दुविधा के दो समाधान देखे हैं। सबसे पहले "मुख्य" उत्पाद में अधीनस्थ उत्पादों को परिभाषित करने के लिए विशेषताओं का उपयोग करने का प्रयास करना है। यहां चुनौती यह है कि आपके विचारों के अलावा, ज्यादातर मामलों में उत्पाद नए निर्माताओं के साथ विकसित होगा जो तालिका में नए पहलू लाएंगे। उदाहरण के लिए, एक निर्माता सस्ता उत्पाद बना सकता है, लेकिन लोगो या सिलाई के लिए एक अलग एप्लिकेशन विधि है जो ट्रैक करने के लिए पर्याप्त महत्वपूर्ण हो सकती है।

मुझे लगता है कि प्रत्येक उत्पाद के लिए एक गैर महत्वपूर्ण उत्पाद संख्या लेना और विशेषताओं को गुणों के रूप में संलग्न करना सबसे अच्छा काम करता है। यह आसानी से खोजा और एक्स्टेंसिबल है। यदि उत्पादों का एक समूह दृढ़ता से संबंधित है, तो एक उत्पाद समूह जो अलग-अलग उत्पादों को अच्छी तरह से काम करने के लिए संलग्न करता है।

तालिकाओं में:

  ProductGroup 
      -------------------- 
      ProductGroupID 
      ProductGroupName 
      ProductGroupDescription 

      Product 
      -------------------- 
      ProductID 
      ProductGroupID 
      QtyOnHand 
      BasePrice 
      ProductColorID 
      ProductSizeID 

      ProductColor 
      ------------ 
      ProductColorID 
      ProductColorName 

      ProductSize 
      -------------- 
      ProductSizeID 
      ProductSizeName 

      ...more attributes... 

फायदे यहाँ विशेषताओं "लचीला" है कि और अधिक में जोड़ा जा सकता है (और पुराने को समायोजित कर रहे हैं कि आप आसानी से विशिष्ट विशेषताओं के लिए क्वेरी कर सकते हैं,: यदि आप "लाल के साथ शुरू "लेकिन फिर रंग पूल में एक और" लाल "जोड़ा गया, आप उन्हें" मारून "और" ब्राइट रेड "में बदल सकते हैं।

आप मूल्य नियंत्रण कर सकते हैं और सूची विस्तारित उत्पाद स्तर पर हैं (हालांकि अधिक तालिकाओं की आवश्यकता हो सकती है सोर्सिंग लागतों के लिए खाते में)

यह सब मानते हैं कि आपकी विशेषताएं सार्वभौमिक रूप से साझा की गई हैं। यदि वे नहीं हैं, तो आपका विशेषता उप-दृष्टिकोण दृष्टिकोण विशेषताओं और उत्पाद विवरण तालिकाओं के बीच एक तालिका तालिका बनाकर काम कर सकता है और आवश्यकतानुसार पॉप्युलेट कर सकता है। इसके लिए अधिक व्यावसायिक तर्क की आवश्यकता होगी। यह सुनिश्चित करने के लिए कि प्रत्येक उत्पाद श्रेणी सभी विशेषताओं को आवश्यक हो। इस बाद के मामले में मैं आधार उत्पाद तालिका (मात्रा और 0 की लागत के साथ) में "प्रोटोटाइप" उत्पादों का उपयोग करूंगा, जिससे मैं विशेषताओं को क्लोन कर दूंगा और फिर समायोजित करूँगा क्योंकि प्रत्येक नए उत्पाद में प्रवेश किया जाता है। जैसे ही आप आगे बढ़ते हैं, जब एक नया बदलाव दिखाई देता है, जिसमें "इस उत्पाद को क्लोन करें" फ़ंक्शन होता है जो आपको मूल उत्पाद से मतभेद समायोजित करने की अनुमति देता है।

अंत में, जहां तक ​​सूची और मूल्य निर्धारण का प्रबंधन होता है, यह यूआई परत पर होने वाला है। संबंधित उत्पादों (उत्पाद समूह) के लिए प्रश्न उत्पन्न करने में सक्षम होने और संबंधित उत्पादों के लिए सभी मूल्य निर्धारण का प्रबंधन इस जीवित बनाने के लिए एक लंबा रास्ता तय करेगा।

+0

यह अच्छी सलाह है। कंपनी में मैं काम करता हूं क्योंकि हमारे पास केवल दो टेबल हैं - उत्पाद और उत्पाद इटिम - और रंग और आकार ठीक से सामान्य नहीं किया गया था। यह रंग-विशिष्ट छवियों को एक पूर्ण दुःस्वप्न का प्रबंधन/जोड़ता है। इस तरह मैं यह करूँगा; रंग और आकार प्रथम श्रेणी की अवधारणाएं हैं .... –

+0

... और हमने उन परिदृश्यों में भाग लिया है जहां "थाईलैंड में चिल्लाया जाता है लेकिन गोरे चीन से हैं", लेकिन चूंकि हम इसे उत्पाद स्तर पर स्टोर करते हैं, हम कर सकते हैं मॉडल नहीं है और एसकेयू को डुप्लिकेट करना समाप्त करता है, जो अन्य समस्याओं का कारण बनता है। लचीला होने के नाते लेकिन सामान्य परिदृश्यों के लिए यूआई प्रदान करना +1 सलाह है। –

+1

धन्यवाद निकोलस। यह सलाह यह मानकर अक्सर जला दी जा रही है कि "आसान" विशेषताओं को मुख्य तालिका में भर दिया जा सकता है। मैं आसानी से देख सकता हूं कि "रंग" तालिका अंततः मतभेदों को सोर्सिंग के कारण अधिक विशेषताओं को प्राप्त करती है। एक बार मुझे बेवकूफ बनाओ... – Godeke

2

बस एक त्वरित नोट। आप हमेशा किसी अन्य ई-कॉमर्स उत्पादों जैसे Spree और Substruct के स्रोत कोड को देखने का प्रयास कर सकते हैं, संभवतः वे आपके लिए पहले से ही उस प्रश्न का उत्तर दे चुके हैं।

संबंधित मुद्दे