सबसे पहले, हमारे पास व्यावहारिक . है कारण अनुक्रमणिका का उपयोग करके विदेशी कुंजियों को बनाए रखा और जाँचा जाता है। किसी अनुक्रमणिका को प्रयोग करने योग्य बनाने के लिए, हमें अनुक्रमणिका के भीतर सभी स्तंभों के (मांग किए गए) मानों को जानना होगा। अगर हमारे पास (a,b)
. पर एक इंडेक्स/पीके है और हमारे पास (NULL,1)
. का एक विदेशी कुंजी मान है , हम खोज . नहीं कर सकते सूचकांक के भीतर यह निर्धारित करने के लिए कि क्या b
. के साथ कोई पंक्ति है 1 का मान। यह विदेशी कुंजी को बनाए रखने के लिए "महंगा" बना देगा।
लेकिन दूसरी बात, हमें निरंतरता पर विचार करने की जरूरत है। सिंगल कॉलम केस के लिए, यह काफी विवादास्पद है - यदि आपके पास एफके कॉलम में कोई मान है, तो संदर्भित कॉलम में मिलान करने वाला मान होना चाहिए। अन्यथा, यदि FK कॉलम NULL
है तब बाधा की जाँच नहीं की जाती है।
लेकिन, हम इसे कई कॉलम तक कैसे बढ़ा सकते हैं? क्या है ऊपर का नियम? कोई एकल नहीं है स्पष्ट व्याख्या, लेकिन इसके बजाय कई। क्या उपरोक्त नियम "यदि सभी . है कॉलम गैर-शून्य हैं, तो बाधा की जाँच की जाती है" या "यदि कोई कॉलम गैर-शून्य हैं, तो बाधा की जाँच की जाती है"? ये नियम समान होते हैं जब केवल एक कॉलम विचाराधीन होता है।
आपने अपेक्षा की थी कि नियम दूसरा होगा, जबकि वास्तव में यह पहला है। यह स्पष्ट रूप से दस्तावेज है :