Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

क्या SQL सर्वर 2005 मुझे एक पूर्णांक के बजाय प्राथमिक कुंजी के रूप में nvarchar(50) का उपयोग करने के लिए दंडित करेगा?

आपने डेटाबेस डिज़ाइन के प्रमुख "पवित्र युद्धों" में से एक पर प्रहार किया है। आप जिस बहस का जिक्र कर रहे हैं वह "सरोगेट बनाम प्राकृतिक कुंजी" तर्क है जो आरडीबीएमएस (जितना मैं बता सकता हूं) के रूप में लंबे समय से उग्र हो रहा है।

बहस अनिवार्य रूप से इस बात पर उबलती है कि क्या एक प्रतिनिधि कुंजी (सरोगेट, उदाहरण के लिए एक पहचान कॉलम) का उपयोग वास्तविक डेटा का उपयोग करके किया जाना चाहिए जो विशिष्ट रूप से एक रिकॉर्ड (प्राकृतिक कुंजी) का वर्णन करता है।

मैं कहूंगा कि कोई "सही" उत्तर नहीं है। प्रदर्शन उपाय मंच की एक कलाकृति हैं, और प्रयोग द्वारा मूल्यांकन किया जाना चाहिए, लेकिन प्रदर्शन प्रमुख चिंता का विषय नहीं है।

सरोगेट कुंजियों के लिए मैं जो प्राथमिक तर्क मानता हूं वह प्राथमिक कुंजी की अपरिवर्तनीयता है। यदि आप एक प्राकृतिक कुंजी का उपयोग करना चुनते हैं, तो आप उस कुंजी को स्थापित करने के बाद उसे बदलने का विकल्प छोड़ देते हैं। आप इस संभावना को भी छोड़ देते हैं कि यह भविष्य में किसी बिंदु पर गैर-अद्वितीय हो सकता है। उन कारणों से, मैं आमतौर पर (हमेशा नहीं) अपनी अधिकांश तालिकाओं के लिए सरोगेट कुंजियों का उपयोग करता हूं।

हालांकि, जैसा कि मैंने उल्लेख किया है, इंडेक्सिंग रणनीतियों और सामान्य रूप से पालन करने की चर्चा से भरी एक बहुत लंबी बहस है यदि आप इतने इच्छुक हैं तो पढ़ा जाना चाहिए।

मैं Google "सरोगेट बनाम प्राकृतिक कुंजी" करूंगा। आरंभ करने के लिए यहां कुछ लिंक दिए गए हैं:

सिस्टम इंजीनियरिंग और RDBMS

Techrepublic

टोनी रोजर्सन का ब्लॉग

आशा है कि यह मदद करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL डेटाबेस का नाम बदलना

  2. किसी अन्य सत्र द्वारा उपयोग किए जाने वाले लेन-देन प्रसंग का कारण क्या है

  3. ऑब्जेक्ट 'पता', डेटाबेस 'CNET_85731', स्कीमा 'dbo' पर चयन अनुमति अस्वीकार कर दी गई थी

  4. एसक्यूएल सर्वर डेटाबेस में सूची बॉक्स की वस्तुओं को सम्मिलित करना

  5. सबस्ट्रिंग () और हेक्स मान