मेरे पास उत्पादों की एक सूची है। उनमें से प्रत्येक एन प्रदाताओं द्वारा की पेशकश की है।
प्रत्येक प्रदाता हमें एक विशिष्ट तिथि के लिए एक मूल्य उद्धृत करता है। वह मूल्य तब तक प्रभावी होता है जब तक कि प्रदाता नई कीमत निर्धारित करने का निर्णय नहीं लेता। उस स्थिति में, प्रदाता नई तारीख के साथ नई कीमत देगा।
MySQL टेबल हेडर वर्तमान में जैसा दिखता है:
provider_id, product_id, price, date_price_effective
हर दूसरे दिन, हम उन उत्पादों / कीमतों की एक सूची संकलित करते हैं जो वर्तमान दिन के लिए प्रभावी हैं। प्रत्येक उत्पाद के लिए, सूची में उन प्रदाताओं की क्रमबद्ध सूची होती है जिनके पास वह विशेष उत्पाद होता है। इस तरह, हम कुछ उत्पादों को ऑर्डर कर सकते हैं जो कोई भी सबसे अच्छी कीमत की पेशकश करता है।
प्रभावी मूल्य प्राप्त करने के लिए, मेरे पास एक SQL स्टेटमेंट है जो सभी पंक्तियों को लौटाता है date_price_effective >= NOW()
। उस परिणाम सेट को एक रूबी स्क्रिप्ट के साथ संसाधित किया जाता है जो एक फाइल प्राप्त करने के लिए आवश्यक छंटाई और फ़िल्टरिंग करता है जो इस तरह दिखता है:
product_id_1,provider_1,provider_3,provider8,provider_10...
product_id_2,provider_3,provider_2,provider1,provider_10...
यह हमारे उद्देश्यों के लिए ठीक काम करता है, लेकिन मेरे पास अभी भी एक खुजली है कि इस तरह की जानकारी संग्रहीत करने के लिए एक SQL तालिका शायद सबसे अच्छा तरीका नहीं है। मुझे लगता है कि इस तरह की समस्या पहले से ही अन्य रचनात्मक तरीकों से हल हो गई है।
क्या SQL के अलावा इस जानकारी को संग्रहीत करने का कोई बेहतर तरीका है? या, यदि SQL का उपयोग किया जाता है, तो क्या मैं जो उपयोग कर रहा हूं, उससे बेहतर दृष्टिकोण है?