- 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 टिप्पणियां
Hacker News राय
cus_MJA953cFzEuO1zजैसे IDs को प्राथमिकता दी जाती है, जैसा Stripe इस्तेमाल करता है। इन्हें JavaScript/TypeScript में जनरेट करने का तरीका भी है.मैं artificial keys के लिए भी ऐसे TSID इस्तेमाल करने की सलाह देता हूँ जो global regions जैसी distributed environments को सपोर्ट करने के लिए तैयार हों. मैं MySQL और DynamoDB में PK के रूप में TSID इस्तेमाल करता हूँ.
https://jsonobject.hashnode.dev/using-tsid-as-database-pk