न तो एसक्यूएल और न ही रिलेशनल मॉडल विदेशी कुंजी से परेशान हैं जो प्राकृतिक कुंजी का संदर्भ देते हैं। वास्तव में, प्राकृतिक कुंजी को संदर्भित करने से अक्सर प्रदर्शन में सुधार होता है। आपको आश्चर्य होगा कि आपको कितनी बार आवश्यक जानकारी पूरी तरह से एक प्राकृतिक कुंजी में निहित है; यह उल्लेख करते हुए कि कुंजी एक व्यापक तालिका के लिए एक जुड़ती है (और परिणामस्वरूप आप एक पृष्ठ में संग्रहीत पंक्तियों की संख्या कम कर सकते हैं)।
परिभाषा के अनुसार, आपके लिए आवश्यक जानकारी हमेशा हर "लुकअप" तालिका की प्राकृतिक कुंजी में निहित होती है । (टर्म लुकिंग टेबल अनौपचारिक है। संबंधपरक मॉडल में, सभी टेबल सिर्फ टेबल हैं। यूएस पोस्टल कोड की एक तालिका में पंक्तियाँ हो सकती हैं जो इस तरह दिखती हैं: {AK, अलास्का}, {AL, अलबामा}, {AZ, एरिज़ोना} , आदि ज्यादातर लोग इसे लुकअप टेबल कहेंगे।)
बड़ी प्रणालियों पर, उन तालिकाओं को खोजना असामान्य नहीं है जिनमें एक से अधिक उम्मीदवार कुंजी हैं। यह उन तालिकाओं के लिए भी असामान्य नहीं है जो एक उम्मीदवार कुंजी का संदर्भ देने के लिए उद्यम के एक हिस्से की सेवा करते हैं, और एक अलग उम्मीदवार कुंजी का संदर्भ देने के लिए उद्यम के दूसरे हिस्से की सेवा करने वाली तालिकाओं के लिए। यह रिलेशनल मॉडल की ताकत में से एक है, और यह रिलेशनल मॉडल का एक हिस्सा है जो एसक्यूएल बहुत अच्छी तरह से समर्थन करता है।
जब आप एक सरोगेट कुंजी भी तालिकाओं में प्राकृतिक कुंजियों का संदर्भ देते हैं, तो आप दो समस्याओं में भाग लेंगे।
सबसे पहले, आप लोगों को आश्चर्यचकित करेंगे। हालांकि मैं आमतौर पर कम से कम आश्चर्य के सिद्धांत के लिए दृढ़ता से पैरवी करता हूं , यह एक ऐसी स्थिति है जहां मुझे आश्चर्यचकित लोगों का मन नहीं है। जब समस्या यह है कि डेवलपर्स विदेशी कुंजियों के तार्किक उपयोग से आश्चर्यचकित हैं, तो समाधान शिक्षा है, न कि नया स्वरूप।
दूसरा, ORM आमतौर पर संबंधपरक मॉडल के आसपास डिज़ाइन नहीं किए जाते हैं, और वे कभी-कभी ऐसी धारणाओं को अपनाते हैं जो सर्वोत्तम अभ्यास को प्रतिबिंबित नहीं करती हैं। (वास्तव में, वे अक्सर डेटाबेस पेशेवर से इनपुट के बिना डिज़ाइन किए गए लगते हैं।) हर तालिका में एक आईडी नंबर की आवश्यकता उन मान्यताओं में से एक है। एक अन्य मान रहा है कि ORM एप्लिकेशन डेटाबेस का "मालिक" है। (इसलिए यह टेबल और कॉलम बनाने, छोड़ने और नाम बदलने के लिए स्वतंत्र है।)
मैंने एक डेटाबेस सिस्टम पर काम किया है, जो 30 वर्षों की अवधि में कम से कम दो दर्जन भाषाओं में लिखे सैकड़ों एप्लिकेशन प्रोग्राम को डेटा प्रदान करता है। वह डेटाबेस उद्यम का है, ORM का नहीं।
ब्रेकिंग परिवर्तनों का परिचय देने वाला कांटा एक शो-स्टॉपर होना चाहिए।
मैंने उस कंपनी में काम करने के लिए इस्तेमाल की जाने वाली प्राकृतिक कुंजियों और सरोगेट कुंजी दोनों के साथ प्रदर्शन को मापा। एक टिपिंग बिंदु है जिस पर सरोगेट कुंजी प्राकृतिक कुंजियों को बेहतर बनाने के लिए शुरू होती है। ( प्राकृतिक कुंजी के प्रदर्शन को उच्च रखने के लिए कोई अतिरिक्त प्रयास न करना, जैसे विभाजन, आंशिक अनुक्रमित, फ़ंक्शन-आधारित अनुक्रमित, अतिरिक्त तालिकाओं, ठोस-राज्य डिस्क का उपयोग करना, आदि) उस कंपनी के लिए मेरे अनुमान से, वे उस टिपिंग बिंदु तक पहुंच जाएंगे। लगभग 2045. इस बीच, उन्हें प्राकृतिक कुंजियों के साथ बेहतर प्रदर्शन मिलता है।
अन्य प्रासंगिक उत्तर: डेटाबेस स्कीमा कन्फ्यूजिंग में