5 पॉइंट द्वारा GN⁺ 2024-06-06 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • Natural key वह key है जिसका उपयोग database में uniqueness सुनिश्चित करने के लिए किया जाता है
  • Natural key वास्तविक data पर आधारित होती है, जैसे नाम, शहर, वर्ष आदि
  • उदाहरण के लिए, दुनिया के शीर्ष 50 restaurants के database में restaurantName, cityName, year को natural key के रूप में इस्तेमाल किया जा सकता है
  • लेकिन natural key uniqueness सुनिश्चित नहीं कर सकती। उदाहरण के लिए, एक ही नाम के restaurants कई शहरों में हो सकते हैं

पहचान

  • Natural key को uniqueness सुनिश्चित करने के साथ-साथ identity भी सुनिश्चित करनी चाहिए
  • उदाहरण के लिए, कार का chassis number या personal identification number (CPR number) को natural key के रूप में इस्तेमाल किया जा सकता है
  • लेकिन एक ही व्यक्ति के पास कई identification numbers हो सकते हैं। उदाहरण के लिए, डेनमार्क में gender transition करने वाले व्यक्ति को नया CPR number मिल सकता है

दस्तावेज़ी त्रुटियाँ

  • Natural key दस्तावेज़ी त्रुटियों के प्रति संवेदनशील होती है
  • Data entry errors, user typos, data conversion errors आदि हो सकते हैं
  • System को इन त्रुटियों को ठीक करने में सक्षम होना चाहिए। इसलिए external key को database key के रूप में इस्तेमाल करना उचित नहीं है

निष्कर्ष

  • Database design में natural key का इस्तेमाल करना अच्छा विचार नहीं है
  • Data errors हो सकती हैं, और इन त्रुटियों को ठीक किया जा सकना चाहिए
  • इसलिए database tables में हमेशा surrogate key का इस्तेमाल करना बेहतर है

GN⁺ की राय

  • Natural key की समस्याएँ: Natural key uniqueness और identity की गारंटी नहीं दे सकती, और data entry errors के प्रति संवेदनशील होती है.
  • Surrogate key के फायदे: Surrogate key uniqueness और identity सुनिश्चित करती है, और data errors को आसानी से ठीक किया जा सकता है.
  • ORM इस्तेमाल करते समय ध्यान देने योग्य बातें: ORM library का उपयोग करते समय surrogate key का उपयोग करना अधिक आसान है। ORM database structure को कुछ हद तक तय करता है, इसलिए surrogate key का उपयोग अधिक प्रभावी है.
  • मिलते-जुलते functionality वाले products: अन्य database design tools या ORM libraries भी surrogate key के उपयोग की सिफारिश करते हैं। उदाहरण के लिए, Hibernate, Entity Framework आदि.
  • तकनीक अपनाते समय ध्यान देने योग्य बातें: नया database design अपनाते समय natural key की कमियों पर विचार करना चाहिए, और surrogate key का उपयोग करना बेहतर है। Surrogate key data integrity सुनिश्चित करती है और errors को आसानी से ठीक किया जा सकता है.

2 टिप्पणियां

 
GN⁺ 2024-06-06
Hacker News राय
  • यूनिक, छोटे और इंसानों के लिए पढ़ने में आसान ID: cus_MJA953cFzEuO1z जैसे IDs को प्राथमिकता दी जाती है, जैसा Stripe इस्तेमाल करता है। इन्हें JavaScript/TypeScript में जनरेट करने का तरीका भी है.
  • व्यक्तिगत पहचान संख्या: डेनमार्क के CPR नंबर और अमेरिका के SSN की तुलना की गई है। SSN यूनिक नहीं होता, बदला जा सकता है, और यह गैर-अमेरिकी नागरिकों को भी जारी किया जा सकता है। इसे database key के रूप में इस्तेमाल न करने की सलाह दी जाती है.
  • उपनाम और audit log: डेनमार्क के CPR नंबर जैसी natural key का उपयोग करते समय, बदलावों को रिकॉर्ड करने के लिए एक अलग table की जरूरत होती है। URL को भी natural key के रूप में इस्तेमाल किया जा सकता है, लेकिन बदलने पर redirect table बनानी पड़ती है.
  • natural key की सीमाएँ: अगर यूनिक identifier बदल जाता है, तो उससे जुड़ी सारी जानकारी को track करना पड़ता है। artificial key जोड़ने पर track की जाने वाली जानकारी और बढ़ जाती है। data modeling को वास्तविक दुनिया को प्रतिबिंबित करना चाहिए.
  • natural key और privacy: अगर natural key में व्यक्तिगत जानकारी शामिल है, तो वह foreign key के जरिए दूसरी tables तक भी फैल सकती है.
  • gaming tag का उदाहरण: PlayStation Network के gaming tag को natural key के रूप में इस्तेमाल करने का उदाहरण। अगर gaming tag नहीं बदलता, तो उसे यूनिक identifier के रूप में इस्तेमाल किया जा सकता है.
  • चिकित्सा क्षेत्र का उदाहरण: अगर registration staff गलत personal health number (PHN) दर्ज कर दे, तो समस्या पैदा होती है। artificial key का उपयोग करने पर बाद में सुधार संभव होता है.
  • natural key पर नियंत्रण न होना: नाम, पता, आधिकारिक registration number आदि हमारे नियंत्रण में नहीं होते, इसलिए उन पर भरोसा नहीं किया जा सकता। यूनिक key system का उपयोग करना चाहिए.
  • artificial key का उपयोग: हर table में यूनिक ID field का उपयोग करने से समस्या सुलझाना आसान हो जाता है। data और relationships अक्सर बदलते रहते हैं, इसलिए natural key पर भरोसा करना मुश्किल है.
  • परिवर्तनीयता और यूनिक ID: बदल सकने की संभावना का मतलब है कि समय के साथ एक समान identifier की जरूरत होती है। database को schema में एक स्पष्ट surrogate key शामिल करनी चाहिए.
 
jsonobject 2024-06-07

मैं artificial keys के लिए भी ऐसे TSID इस्तेमाल करने की सलाह देता हूँ जो global regions जैसी distributed environments को सपोर्ट करने के लिए तैयार हों. मैं MySQL और DynamoDB में PK के रूप में TSID इस्तेमाल करता हूँ.

https://jsonobject.hashnode.dev/using-tsid-as-database-pk