विश्वविद्यालय में अंतिम पाठों में से एक (मैं एक छात्र हूँ) के दौरान, व्याख्याता ने हमें एक डेटाबेस (MySQL सर्वर अगर यह मायने रखता है) विकसित करने के लिए कहा और छोटे ग्राहक ऐप जो डेटाबेस को डेटा स्रोत के रूप में उपभोग करेंगे।
आवश्यकताओं में से एक यह था कि पहचान कॉलम (जो हर तालिका में पीके है) अनुक्रमिक होना चाहिए, क्योंकि यह एक अच्छा अभ्यास है (व्याख्याता शब्दों के अनुसार)। यही है, जब तालिका पंक्ति हटा दी जाती है, तो उसे बाद के आवेषण में पुन: उपयोग किया जाना चाहिए। मुझे आरडीबीएमएस, पीके और पहचान कॉलम में औसत ज्ञान है। मैं जो समझता हूं, वह पहचान स्तंभ पंक्तियों को सम्मिलित करते समय DB को ऑटो-जनरेट करने के लिए बस एक तरीका है। और पहचान कॉलम मान किसी भी तरह से पंक्ति विशेषताओं से संबंधित नहीं होगा (जब तक कि यह प्राकृतिक कुंजी नहीं है)।
यह आवश्यकता (कड़ाई से अनुक्रमिक पहचान स्तंभ) मेरे लिए संदिग्ध थी। मैंने व्याख्याता से यह पूछने की कोशिश की कि क्या पहचान गलत है यदि पहचान अनुक्रमिक नहीं है (विलोपन के कारण अंतराल के साथ), लेकिन बहुत ही सारगर्भित उत्तर मिला जैसे "यह उपयोगकर्ताओं के लिए सुविधाजनक है और डेटाबेस को बनाए रखने वाले डीबी प्रशासकों के लिए उपयोगी है"। कोई विशिष्ट उदाहरण नहीं। तर्क "उपयोगकर्ताओं के लिए सुविधाजनक" मूर्खतापूर्ण लगता है, क्योंकि इसका व्यावसायिक डोमेन में कोई अर्थ नहीं है।
इसलिए मैं उत्सुक हूं कि क्या ये कारण वास्तविक हैं? मैं केवल एक मामले के बारे में सोच सकता हूं, जब पहचान कॉलम की आवश्यकता होती है - जब पहचान स्थान समाप्त हो जाता है। लेकिन यह अधिक डिज़ाइन का मुद्दा है जब पहचान कॉलम प्रकार को गलत तरीके से चुना गया था, int
इसके बजाय सरल कहें bigint
या uniqueidentifier
जब तालिका में अरब पंक्तियाँ हों। मान लीजिए, एक पहचान स्तंभ एक क्लस्टर इंडेक्स है: क्या पहचान कॉलम में अंतराल सूचकांक के प्रदर्शन को प्रभावित कर सकता है? हो सकता है कि प्रत्येक डिलीट के बाद री-सीड के अन्य वास्तविक दुनिया के कारण हो, जिनके बारे में मुझे जानकारी नहीं है?
अग्रिम में धन्यवाद!