प्राथमिक और द्वितीयक सूचकांकों की परिभाषाओं में कुछ सटीकता की कमी है।
संदर्भ के रूप में दो लोकप्रिय विश्वविद्यालय ग्रंथों का उपयोग करना:
डेटाबेस सिस्टम के बुनियादी सिद्धांत, Elmasri &Navathe उन्हें इस प्रकार परिभाषित करता है:
डेटाबेस सिस्टम्स:द कम्प्लीट बुक, गार्सिया-मोलिना एट। अल उन्हें इस प्रकार परिभाषित करता है:
कुछ गुण जो ऊपर दी गई किसी भी परिभाषा के लिए सही हैं:
- प्राथमिक कुंजियां प्राथमिक सूचकांक हो सकती हैं
- प्रति तालिका अधिकतम 1 प्राथमिक अनुक्रमणिका हो सकती है
- प्राथमिक सूचकांक विशिष्ट रूप से निर्धारित करते हैं कि भौतिक भंडारण में रिकॉर्ड कहाँ रखा जाता है।
- अन्य सभी सूचकांकों को द्वितीयक के रूप में वर्गीकृत किया गया है।
हालाँकि, यदि डेटा फ़ाइल में रिकॉर्ड्स का स्थान किसी भी क्षेत्र द्वारा निर्धारित नहीं किया जाता है, तो प्राथमिक सूचकांक का निर्माण नहीं किया जा सकता है।
इस प्रकार सॉर्ट की गई फ़ाइलों के लिए, प्राथमिक अनुक्रमणिका के बारे में बात करना समझ में आता है (जो उन क्षेत्रों की सूची होगी जिन पर सॉर्टिंग आधारित है)। मुझे भौतिक फ़ाइल संरचनाओं के अन्य उदाहरण नहीं मिल रहे हैं जहाँ प्राथमिक अनुक्रमणिका का निर्माण किया जा सकता है।
Postgresql रिकॉर्ड के लिए भौतिक भंडारण के लिए एक ढेर संरचना का उपयोग करता है। ढेर क्रमबद्ध नहीं हैं (सजा चेतावनी:वे क्रमबद्ध हैं)। इसलिए, प्राथमिक कुंजियों को भी द्वितीयक सूचकांकों का उपयोग करके कार्यान्वित किया जाता है, और जैसे कि Postgresql में सभी सूचकांक द्वितीयक हैं।
अन्य RDBMS सिस्टम करते हैं प्राथमिक सूचकांकों का समर्थन करने वाले भंडारण प्रारूपों को लागू करें:
- Mysql का InnoDB इसे क्लस्टर इंडेक्स कहता है
- MSSQL प्राइम इंडेक्स को संकुलित अनुक्रमणिका
- Oracle इसे इंडेक्स-ऑर्गनाइज्ड टेबल्स कहते हैंए>
Postgres Documentation में भाषा सटीक नहीं है।
यह सच है।
यही कारण है कि Postgresql में सभी सूचकांक गौण हैं। प्राथमिक सूचकांकों को तालिका के मुख्य डेटा क्षेत्र से अलग से भी संग्रहित किया जा सकता है।