मैं एक ऐसी प्रणाली का निर्माण कर रहा हूं जो कई अन्य प्रणालियों से डेटा संग्रहित करने के लिए केंद्रीय भंडार है। जब अन्य सिस्टम डेटा अपडेट किया जाता है तो केंद्रीय भंडार को अद्यतन करने के लिए एक सिंक प्रक्रिया की आवश्यकता होती है। केंद्रीय रेपो को किस सिस्टम को सिंक करने की आवश्यकता है और सिंक प्रकार की आवश्यकता है, यह पहचानने के लिए एक सिंक_एक्शन तालिका होगी। परिभाषित कार्यों का सेट है जो बदलने की संभावना नहीं है। एक पतला डाउन सिस्टम नीचे है।अखंडता के लिए विदेशी कुंजी बनाम चेक बाधा
मैं इसे देखना जैसा कि मैंने इसे दो तरीकों से संपर्क कर सकते हैं:
विकल्प 1) एक Action
तालिका 3 कार्यों उपलब्ध है है। sync_action
तालिका है जो आवश्यक कार्यों के संदर्भ में एक विदेशी कुंजी का उपयोग करती है।
तालिका: सिस्टम
ID Description
1 Slave System 1
2 Slave System 2
तालिका: कार्रवाई
ID Description
1 Insert
2 Update
3 Delete
तालिका: Sync_action
ID Action System
1 1 1
2 2 1
विकल्प 2) एक विदेशी कुंजी के बजाय sync_action.action
कॉलम पर चेक बाधा का उपयोग करें ताकि केवल Insert/Update/Delete
क्रियाएं डाली जा सकें।
तालिका: Sync_action
ID Action System
1 Insert 1
2 Update 1
मुझे पता है कि क्या कारकों का निर्धारण जब ईमानदारी की कमी, विदेशी कुंजी बनाम जांच बाधा के बीच तय जो एक बेहतर तरीका है में जाने चाहते हैं। समान धागे रहे हैं लेकिन मुझे उन्हें पर्याप्त निश्चित नहीं मिला। ऐसा इसलिए हो सकता है क्योंकि इसकी व्याख्या के लिए लेकिन किसी भी विचार की सराहना की जाएगी।
यह आम तौर पर एक (कम या ज्यादा स्थिर) संदर्भ तालिका करने के लिए एक FOREIGN KEY
बाधा बेहतर है:
चीयर्स
मैं आम तौर पर एफके और टेबल-रिलेशनशिप पसंद करता हूं क्योंकि: वे "अधिक दृश्यमान" (उदाहरण के संबंध में आरेखों में दिखाए जाते हैं) और वे "अधिक विस्तारित" हैं (डेटा पर निर्भर नहीं, न कि हालत, और "अतिरिक्त" जानकारी संलग्न हो सकती है) और वे अक्सर "अधिक मैपेबल" होते हैं (जो भी ओआरएम आप चुनते हैं)। इस तरह के मामलों में मैं * गैर-सरोगेट पीके का उपयोग करने पर विचार करता हूं (यह वास्तव में एक "स्थिर डेटा" तालिका है), शायद "आई", "यू", "डी" जैसे "एक सार्थक चरित्र"। यदि किसी अन्य तालिका में तो "स्वयं दस्तावेज़" लेबल कॉलम भी हो सकते हैं। –
स्टैक ओवरव्लो में आपका स्वागत है: यदि आप कोड, एक्सएमएल या डेटा नमूने पोस्ट करते हैं, ** कृपया ** टेक्स्ट एडिटर में उन पंक्तियों को हाइलाइट करें और संपादक टूलबार पर "कोड नमूने" बटन ('{}') पर क्लिक करें, अच्छी तरह से प्रारूपित करें और वाक्यविन्यास इसे हाइलाइट करें! –
मैं 'pst' से सहमत हूं - क्या होगा यदि आपको चौथी, पांचवीं कार्रवाई जोड़ने की आवश्यकता है ?? यदि आपके पास एक अलग 'एक्शन' तालिका है, तो यह पंक्ति जोड़ने के समान सरल है। यदि आपके पास चेक बाधाएं हैं, तो आपको ड्रॉप छोड़ने और उनको फिर से बनाने की आवश्यकता है - यह अधिक काम है, और अधिक परेशानी है। मुझे ** कोई अलग तर्क नहीं दिख रहा है ** ** एक अलग 'एक्शन' तालिका है और एफके बाधा का उपयोग कर रेफरेंसियल अखंडता लागू करना - डेटाबेस उस पर अच्छा है! (यह उनका मुख्य व्यवसाय है!) –