"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > SQL डेटाबेस में एकाधिक तालिकाओं के लिए विदेशी कुंजी संबंधों को कैसे संभालें?

SQL डेटाबेस में एकाधिक तालिकाओं के लिए विदेशी कुंजी संबंधों को कैसे संभालें?

2024-12-21 को प्रकाशित
ब्राउज़ करें:386

How to Handle Foreign Key Relationships to Multiple Tables in SQL Databases?

एकाधिक तालिकाओं की विदेशी कुंजियों से निपटना

आपके पास तीन तालिकाएँ हैं: क्षेत्र, देश और राज्य। देश और राज्य एक पदानुक्रमित संरचना बनाते हुए क्षेत्रों से संबंधित हो सकते हैं। अब, आप "क्षेत्र_आईडी" और "लोकप्रिय_प्लेस_आईडी" कॉलम के साथ एक "लोकप्रिय_क्षेत्र" तालिका बनाना चाहते हैं और "लोकप्रिय_स्थान_प्रकार" कॉलम के आधार पर "लोकप्रिय_स्थान_आईडी" और देशों या राज्यों के बीच एक विदेशी कुंजी संबंध स्थापित करना चाहते हैं।

यह परिदृश्य एक चुनौती प्रस्तुत करता है क्योंकि SQL विदेशी कुंजी बाधाएँ आमतौर पर एकल लक्ष्य तालिका को संदर्भित करती हैं। हालाँकि, डेटाबेस डिज़ाइन में पॉलीमॉर्फिक एसोसिएशन के रूप में जानी जाने वाली एक अवधारणा है जो इसे संबोधित करने का प्रयास करती है। कई संभावित लक्ष्य तालिकाओं में से एक को संदर्भित करने के लिए एक विदेशी कुंजी। यह संदर्भित लक्ष्य तालिका को निर्दिष्ट करने के लिए एक अतिरिक्त कॉलम का उपयोग करके प्राप्त किया जाता है। उदाहरण के लिए, आपके मामले में, आपको यह निर्धारित करने के लिए "popular_place_type" कॉलम की आवश्यकता होगी कि "popular_place_id" किसी देश या राज्य को संदर्भित कर रहा है या नहीं।

हालांकि, पॉलिमॉर्फिक एसोसिएशन की बाधाओं के कारण SQL में सीमाएं हैं। SQL बहुरूपी संघों के साथ डेटाबेस संगति को लागू नहीं कर सकता है। इसके बजाय, यह डेटा अखंडता सुनिश्चित करने के लिए इन एसोसिएशनों को कार्यान्वित करने वाले एप्लिकेशन या ढांचे पर निर्भर करता है। एसोसिएशन, इन विकल्पों पर विचार करें:

अलग तालिकाएँ बनाना:

स्थापित करना "लोकप्रिय_राज्य" और "लोकप्रिय_देश" जैसी तालिकाएँ, प्रत्येक क्रमशः राज्यों और देशों को संदर्भित करती हैं। यह SQL बाधाओं के माध्यम से डेटा अखंडता प्रदान करता है लेकिन उपयोगकर्ता से जुड़े सभी लोकप्रिय स्थानों को पुनः प्राप्त करने के लिए कई प्रश्नों की आवश्यकता हो सकती है।

एक मूल तालिका बनाना: एक "स्थान" तालिका बनाएं जो एक सुपरटाइप के रूप में कार्य करती है राज्यों और देशों के लिए. दोनों राज्यों और देशों के पास "स्थानों" को संदर्भित करने वाली विदेशी कुंजियाँ होंगी, जो संदर्भात्मक अखंडता सुनिश्चित करेंगी। राज्य_आईडी" और "देश_आईडी।" हालाँकि, आपको यह सुनिश्चित करना होगा कि इनमें से केवल एक कॉलम गैर-शून्य है और एप्लिकेशन लॉजिक या डेटाबेस ट्रिगर्स के माध्यम से इस बाधा को लागू करें।

संबंधपरक अखंडता और सामान्य फॉर्म का उल्लंघन
  • यह ध्यान रखना महत्वपूर्ण है कि पॉलीमॉर्फिक एसोसिएशन डेटाबेस सामान्यीकरण सिद्धांतों का उल्लंघन करते हैं। फर्स्ट नॉर्मल फॉर्म (1NF) एक ही कॉलम में अलग-अलग अर्थों को मिलाने पर रोक लगाता है, जो तब होता है जब राज्य और देश दोनों आईडी को एक ही "popular_place_id" कॉलम में संग्रहीत किया जाता है। पॉलीमॉर्फिक एसोसिएशन थर्ड नॉर्मल फॉर्म (3NF) का भी उल्लंघन करते हैं क्योंकि "popular_place_id" कॉलम का अर्थ अतिरिक्त "popular_place_type" कॉलम पर निर्भर करता है।
  • संक्षेप में, पॉलीमॉर्फिक एसोसिएशन कई तालिकाओं के लिए विदेशी कुंजी संबंधों के लिए एक संभावित समाधान प्रदान करते हैं। एसक्यूएल में. हालाँकि, वे डेटा अखंडता चुनौतियों का परिचय देते हैं और डेटाबेस सामान्यीकरण सिद्धांतों का उल्लंघन करते हैं। मजबूत डेटा प्रबंधन के लिए ऊपर उल्लिखित वैकल्पिक तरीकों पर विचार करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3