2011-05-24 12 views
5

मैं वर्तमान में एक प्रोजेक्ट पर काम कर रहा हूं जिसमें हमें डेटाबेस में किसी दिए गए इकाई के एकाधिक संस्करणों को रखने की आवश्यकता है।मल्टी वर्जन इकाई डेटाबेस डिज़ाइन

उदाहरण के लिए मान लें कि हमारे पास हाउस नामक एक इकाई है जिसमें कमरे हैं। अब जब भी कमरा जोड़ा जाता है, घर से अपडेट या हटा दिया जाता है, या घर पर कोई संपत्ति या किसी भी कमरे में बदल दिया जाता है, तो हमें पुरानी और नई जानकारी दोनों रखने की आवश्यकता होती है। अधिमानतः हम "परिवर्तन सेट" में एक साथ परिवर्तनों को समूहबद्ध करना चाहते हैं (वास्तव में समस्या स्रोत नियंत्रण की तरह है)।

अब वास्तविक मॉडल इससे थोड़ा अधिक जटिल है, लेकिन मुझे लगता है कि यह उदाहरण समस्या को दर्शाता है।

मैं इस समस्या के कुछ संभावित समाधान सुनना चाहता हूं।

हम माइक्रोसॉफ्ट एसक्यूएल सर्वर 2008 आर 2 चला रहे हैं।

उत्तर

9

डेटा गोदामों में, यह आमतौर पर Slowly Changing Dimension (SCD) का उपयोग करके हल किया जाता है।

एक संक्षिप्त सारांश रूप में, आप कर सकते हैं:

  • एक किराए कुंजी (एक उदाहरण आईडी) बनाने और प्राकृतिक कुंजी और एक संस्करण संख्या (या प्रभावी दिनांक/समय सीमा) का उपयोग परिवर्तन का ट्रैक रखने के (टाइप 2 SCD)
  • ) एन संस्करणों के लिए अपने कमरे तालिका (3 प्रकार SCD
  • एक अलग "rooms_history" तालिका है और केवल कमरे तालिका में वर्तमान उदाहरण रखने के (प्रकार 4)
में
  • Have एन कॉलम

    मेरी ते मैंने परंपरागत रूप से टाइप 2 (अधिक "हालिया" डेटा के लिए) और टाइप 4 (संग्रह में "पुराने" डेटा के लिए) का संयोजन किया है। हम समूह की वस्तुओं में एक change_id का उपयोग कर परिवर्तन बदला जा रहा है कि एक एक change वस्तु परिवर्तन की तिथि भी शामिल है कि करने के साथ ही (आदि उपयोगकर्ता, टिप्पणियाँ,)

    संदर्भ अन्य मेटाडाटा है
  • संबंधित मुद्दे