जिस समस्या का आप सामना कर रहे हैं वह है, जैसा कि मुझे यकीन है कि आपको डेटाबेस सामान्यीकरण का नतीजा है। इसे हल करने के दृष्टिकोणों में से एक को बिजनेस इंटेलिजेंस तकनीक से लिया जा सकता है - Data Warehouse में डेटा इना डी-सामान्यीकृत डेटा संग्रहित करना।
सामान्यीकृत डेटा:
- आदेश तालिका
- ग्राहकों टेबल
- आइटम तालिका
- Itemid
- ITEMNAME
- ItemPrice
- ORDERDETAILS टेबल
- ItemDetailId
- OrderID
- Itemid
- ItemQty
- आदि
जब पूछे और संग्रहीत de-सामान्यीकृत, डाटा वेयरहाउस तालिका लगता है कि
- OrderID
- ग्राहक आईडी
- CUSTOMERNAME
- CustomerAddress
- (अन्य ग्राहक फील्ड्स)
- ItemDetailId
- Itemid
- ITEMNAME
- ItemPrice
- (अन्य OrderDetail और आइटम फ़ील्ड)
आमतौर पर, या तो किसी प्रकार का अनुसूचित नौकरी की जो सामान्यीकृत डेटा से डेटा को वेयरहाउस में निर्धारित समय पर खींचती है, या यदि आपका डी साइन अनुमति देता है, यह एक निश्चित स्थिति तक पहुंचने पर किया जा सकता है। (जैसे भेजा गया) यह हो सकता है कि रिकॉर्ड्स स्थिति के प्रत्येक परिवर्तन (ऑर्डरस्टैटस नामक एक फ़ील्ड के साथ वर्तमान स्थिति से निपटने वाले क्षेत्र के साथ) संग्रहीत किया जा सके, इसलिए पूरी तरह से डी-सामान्यीकृत डेटा oprder/पूर्ति प्रक्रिया के प्रत्येक चरण के लिए उपलब्ध है। वेयरहाउस में डेटा को कब और कैसे संग्रहीत करना आपकी आवश्यकताओं के आधार पर अलग-अलग होगा।
ऊपर में शामिल भूमि के ऊपर का एक बहुत है, लेकिन अन्य आम तरीका है मैं के बारे में पता कर रहा हूँ और भी अधिक भूमि के ऊपर किया जाता है।
दूसरा दृष्टिकोण टेबल को केवल पढ़ने के लिए होगा।यदि कोई ग्राहक अपना पता बदलना चाहता है, तो आप अपना मौजूदा पता संपादित नहीं करते हैं, आप एक नया रिकॉर्ड डालते हैं।
तो अगर मेरा पता पता आईडी 12 है जब मैं पहली बार जामनी में अपनी साइट पर ऑर्डर करता हूं, तो मैं 4 जुलाई को चलता हूं, मुझे अपने खाते से जुड़ा एक नया पता मिलता है। (पता आईडी 123123 कहें क्योंकि आपकी साइट बहुत सफल है और ग्राहकों का एक टन आकर्षित किया है।)
आदेश 4 जुलाई से पहले मुझे पता चला कि उनके पास एड्रेसआईडी 12 होगा, और 4 जुलाई को या उसके बाद दिए गए आदेशों में पता आईडी 123123 है।
ऐतिहासिक डेटा को बनाए रखने के लिए आवश्यक प्रत्येक तालिका के साथ उस पैटर्न को दोहराएं।
मेरे पास तीसरा दृष्टिकोण है, लेकिन इसे खोजना मुश्किल है। मैं इसे केवल एक ऐप में उपयोग करता हूं, और यह वास्तव में इस एकल उदाहरण में बहुत अच्छी तरह से काम करता है, जिसमें डेटा के पुनर्निर्माण के लिए कुछ सुंदर विशिष्ट व्यवसाय की ज़रूरत होती है, जैसा कि समय पर एक विशिष्ट बिंदु पर था। मैं तब तक इसका उपयोग नहीं करता जब तक कि मेरे पास समान व्यावसायिक ज़रूरत न हो।
एक विशिष्ट स्थिति पर, डेटा को एक्सएमएल दस्तावेज़ में क्रमबद्ध करें, या कुछ अन्य दस्तावेज़ जो आप डेटा को पुनर्निर्माण के लिए उपयोग कर सकते हैं। यह आपको डेटा को सहेजने की अनुमति देता है क्योंकि यह उस समय था जब इसे धारावाहिक बनाया गया था, मूल तालिका संरचना और रिलेटन को बनाए रखा था।
अद्वितीय उत्पाद नाम रखने के लिए, आप केवल उत्पाद नामों के साथ एक तालिका जोड़ सकते हैं, जहां नाम पीके है, और उस तालिका से PRODUCT_VERSION –
@OweJessen से लिंक करें, निश्चित रूप से आपके पास अद्वितीय NAME के साथ LATEST_PRODUCT_VERSION तालिका हो सकती है, लेकिन यह नहीं है "घोषणात्मक" समाधान के रूप में गिनें, क्योंकि आपको उस तालिका में पंक्तियों को मैन्युअल रूप से डालने और हटाने की आवश्यकता होगी क्योंकि नए उत्पाद संस्करण बनाए गए हैं। जब तक आप एक डीबीएमएस का उपयोग नहीं कर रहे हैं जो दोनों स्वचालित रूप से भौतिक दृश्यों को अपडेट कर सकते हैं और उन पर विशिष्टता लागू कर सकते हैं (जैसे एमएस एसक्यूएल सर्वर के अनुक्रमित विचार), इसलिए डीबीएमएस स्वयं आपके लिए LATEST_PRODUCT_VERSION बनाए रखता है। –