मैं कुछ नियमों का पालन करता हूं:
- प्राथमिक कुंजियाँ यथासंभव छोटी होनी चाहिए। एक संख्यात्मक प्रकार को प्राथमिकता दें क्योंकि संख्यात्मक प्रकार वर्ण स्वरूपों की तुलना में बहुत अधिक कॉम्पैक्ट प्रारूप में संग्रहीत होते हैं। ऐसा इसलिए है क्योंकि अधिकांश प्राथमिक कुंजी किसी अन्य तालिका में विदेशी कुंजी होगी और साथ ही कई अनुक्रमणिका में उपयोग की जाएगी। आपकी कुंजी जितनी छोटी होगी, अनुक्रमणिका उतनी ही छोटी होगी, कैश में आपके द्वारा उपयोग किए जाने वाले कम पृष्ठ होंगे।
- प्राथमिक कुंजियाँ कभी नहीं बदलनी चाहिए। प्राथमिक कुंजी को अपडेट करना हमेशा प्रश्न से बाहर होना चाहिए। ऐसा इसलिए है क्योंकि इसके कई इंडेक्स में उपयोग किए जाने की संभावना है और इसे विदेशी कुंजी के रूप में उपयोग किया जाता है। किसी एकल प्राथमिक कुंजी को अपडेट करने से परिवर्तनों के तरंग प्रभाव हो सकते हैं।
- अपने तर्क मॉडल प्राथमिक कुंजी के रूप में "आपकी समस्या प्राथमिक कुंजी" का उपयोग न करें। उदाहरण के लिए पासपोर्ट नंबर, सामाजिक सुरक्षा नंबर, या कर्मचारी अनुबंध संख्या, क्योंकि ये "प्राकृतिक कुंजी" वास्तविक दुनिया की स्थितियों में बदल सकती हैं। एकरूपता को लागू करने के लिए जहां आवश्यक हो, उनके लिए UNIQUE बाधाओं को जोड़ना सुनिश्चित करें।
सरोगेट बनाम प्राकृतिक कुंजी पर, मैं उपरोक्त नियमों का उल्लेख करता हूं। यदि प्राकृतिक कुंजी छोटी है और कभी नहीं बदलेगी तो इसे प्राथमिक कुंजी के रूप में उपयोग किया जा सकता है। यदि प्राकृतिक कुंजी बड़ी है या बदलने की संभावना है तो मैं सरोगेट कुंजियों का उपयोग करता हूं। यदि कोई प्राथमिक कुंजी नहीं है तो भी मैं एक सरोगेट कुंजी बनाता हूं क्योंकि अनुभव से पता चलता है कि आप हमेशा अपने स्कीमा में टेबल जोड़ेंगे और चाहते हैं कि आप एक प्राथमिक कुंजी रखें।