मुझे पता है कि सरोगेट प्राथमिक कुंजी आमतौर पर प्राकृतिक प्राथमिक कुंजी पर अनुशंसा की जाती है, लेकिन जब उपयोगकर्ता नामों की बात आती है तो सरोगेट प्राथमिक कुंजी के पक्ष में कोई तर्क होता है?क्या उपयोगकर्ता नाम प्राथमिक कुंजी के लिए वैध उम्मीदवार हैं?
उत्तर
यदि आप डुप्लिकेट उपयोगकर्ता नाम प्राप्त नहीं करना चाहते हैं, तो UNIQUE constraint
बनाएं।
क्या होगा अगर DWong1145
अपना उपयोगकर्ता नाम बदलना चाहता है? क्या आप सभी डेटाबेस संबंध UPDATE CASCADE
बनेंगे?
ग्राहक दृष्टिकोण से, आप शर्त लगाते हैं। मैं नहीं चाहता कि मेरा उपयोगकर्ता नाम DWong1145 हो।
नहीं, आपको चाहिए केवल उपयोग उपयोगकर्ता नाम एक अद्वितीय कुंजी/निरंतर के रूप में। उपयोगकर्ता नाम बदला जा सकता है, बस और उदाहरण: यह एक ट्रेडमार्क हो सकता है और मालिक आपको इसे छोड़ने का अनुरोध करता है।
थोड़ा सा लगता है;) आप * सही हैं हालांकि। मैं उन प्रणालियों से नफरत करता हूं जिन पर आप अपना उपयोगकर्ता नाम नहीं बदल सकते - हालांकि, ओपी ने टिप्पणियों में कहा कि वह इसे बदलना नहीं चाहता है, इसलिए ... –
यह कुछ समझ में एक अच्छा उम्मीदवार है, हालांकि आपको यह विचार करना होगा कि क्या आप वास्तव में ऐसा करना चाहते हैं। उदाहरण के लिए, आपके पास एक निश्चित उपयोगकर्ता नाम वाला उपयोगकर्ता है, तो उपयोगकर्ता को "हटाया गया" (या हटाए गए के रूप में चिह्नित) हो जाता है। इसलिए, वास्तव में एक ही उपयोगकर्ता नाम के साथ किसी अन्य उपयोगकर्ता को बनाने की अनुमति न देने का कोई कारण नहीं है, लेकिन यह पहले से ही "लिया गया" है, क्योंकि यह प्राथमिक कुंजी है।
प्राथमिक कुंजी के रूप में स्ट्रिंग रखने का एक बड़ा नुकसान, भले ही यह उपयोगकर्ता नाम या कुछ और हो, यह भी है कि तालिका का संदर्भ देने वाले सभी विदेशी कुंजी कॉलम भी स्ट्रिंग्स होंगे, जो दोनों धीमे और अधिक जगह बर्बाद कर सकते हैं।
इसे धीमा नहीं होना चाहिए। अच्छा डेटाबेस इंजन किसी भी स्ट्रिंग मान पूर्व-हैश हो सकता है। इसके शीर्ष पर, प्राकृतिक चाबियों का उपयोग करने से शायद एप्लिकेशन में कई जुड़ने की ज़रूरत खत्म हो जाएगी, इसलिए प्रश्नों को तेज़ी से बनाते हैं। मैं स्वीकार करता हूं कि प्राकृतिक चाबियाँ आम तौर पर अधिक जगह का उपभोग करती हैं लेकिन ईमानदारी से, अंतरिक्ष सस्ता और भरपूर है। –
- 1. प्राथमिक कुंजी, अद्वितीय कुंजी और उम्मीदवार कुंजी
- 2. उम्मीदवार कुंजी का क्या मतलब है?
- 3. वहाँ संदर्भित तालिका में कोई प्राथमिक या उम्मीदवार कुंजी
- 4. सुपरकी बनाम उम्मीदवार कुंजी
- 5. JSON कुंजी नाम में कौन से वर्ण वैध/अमान्य हैं?
- 6. उम्मीदवार कुंजी है, वैकल्पिक कुंजी, एसक्यूएल में समग्र कुंजी क्या हैं?
- 7. प्राथमिक कुंजी
- 8. एक प्राथमिक कुंजी
- 9. प्राथमिक कुंजी
- 10. प्राथमिक कुंजी
- 11. MySQL - प्राथमिक कुंजी के लिए आवश्यक "नहीं पूर्ण" बाधाएं हैं?
- 12. प्राथमिक कुंजी
- 13. प्राथमिक कुंजी
- 14. प्राथमिक कुंजी
- 15. प्राथमिक कुंजी
- 16. कुंजी 'प्राथमिक'
- 17. प्राथमिक कुंजी
- 18. प्राथमिक कुंजी
- 19. मानक वेबसाइट उपयोगकर्ता भूमिकाओं के लिए क्या नाम हैं?
- 20. पायथन गेम प्रोग्रामिंग: क्या मेरा आईओ ऑब्जेक्ट वैश्विक चर होने के लिए एक वैध उम्मीदवार है?
- 21. एक यादृच्छिक प्राथमिक कुंजी
- 22. MySQL प्राथमिक कुंजी बदल देते हैं विदेशी कुंजी contraints मौजूद
- 23. Mercurial के रंग एक्सटेंशन के लिए वैध रंग क्या हैं?
- 24. PostgreSQL: क्या प्राथमिक कुंजी या अद्वितीय के लिए कस्टम नाम प्रदान करना संभव है?
- 25. अनन्य कुंजी बनाम प्राथमिक कुंजी?
- 26. प्राथमिक कुंजी के बिना हाइबरनेट
- 27. गैर-प्राथमिक कुंजी फ़ील्ड के लिए इकाई फ्रेमवर्क विदेशी कुंजी
- 28. एसक्यूएल सर्वर इंडेक्स प्राथमिक कुंजी शामिल हैं?
- 29. समग्र प्राथमिक कुंजी
- 30. होस्ट नाम के वैध वर्ण?
मेरा प्रश्न प्रमाणीकरण प्रणाली के संदर्भ में है जो नहीं होगा उपयोगकर्ता नाम परिवर्तन की अनुमति दें। मुझे इसका उल्लेख करना चाहिए था। –
@ इमानुइल - जुरासिक पार्क में जेफ गोल्डब्लम को उद्धृत करने के लिए, "जीवन एक रास्ता पाता है।" अगर आपको कुछ दिन अपने उपयोगकर्ता नाम बदलने की ज़रूरत है, तो आप अभी इस पल पर पछतावा कर रहे हैं ... –
"सूचना 'को कुंजी के रूप में उपयोग नहीं किया जाना चाहिए;' डेटा' कर सकते हैं"; 'डेटा' को बदलने की जरूरत नहीं है, जैसे कि हमेशा किसी प्रोग्राम द्वारा समझा जाना चाहिए। क्या होगा यदि मैं SO को कॉल करता हूं और अपने उपयोगकर्ता _id_ को बदलने के लिए कहता हूं? मैं ऐसा नहीं कर सकता, लेकिन मैं अपना उपयोगकर्ता _name_ बदल सकता हूं। –