तार्किक मॉडल में, एक तालिका में कम से कम एक कुंजी होनी चाहिए। मनमाने ढंग से निर्दिष्ट करने का कोई कारण नहीं है कि चाबियों में से एक 'प्राथमिक' है; सभी चाबियाँ बराबर हैं। यद्यपि 'प्राथमिक कुंजी' की अवधारणा टेड कोड के शुरुआती काम पर वापस देखी जा सकती है, लेकिन गलती को उठाया गया था, जिसे सिद्धांत सिद्धांत में लंबे समय से सही किया गया है।
अफसोस की बात है, PRIMARY KEY
इसे एसक्यूएल में मिला है और हमें तब से इसके साथ रहना पड़ा है। एसक्यूएल टेबल में डुप्लिकेट पंक्तियां हो सकती हैं और, यदि आप SELECT
क्वेरी के परिणाम को तालिका में भी मानते हैं, तो SQL टेबल में डुप्लिकेट पंक्ति भी हो सकती है। रिलेशनल सिद्धांतवादी एसक्यूएल को बहुत पसंद करते हैं। हालांकि, सिर्फ इसलिए कि एसक्यूएल आपको सभी तरह की निराशाजनक गैर-रिलेशनल चीजों को करने देता है, इसका मतलब यह नहीं है कि आपको वास्तव में उन्हें करना है। यह सुनिश्चित करने के लिए अच्छा अभ्यास है कि प्रत्येक SQL तालिका में कम से कम एक कुंजी हो।
एसक्यूएल में, PRIMARY KEY
का उपयोग करके इसके प्रभाव पर उदा। NOT NULL
, UNIQUE
, तालिका के विदेशी कुंजी के लिए डिफ़ॉल्ट संदर्भ। SQL सर्वर में, PRIMARY KEY
का उपयोग करके स्वयं पर प्रभाव पड़ता है उदा। तालिका की क्लस्टर सूचकांक। हालांकि, इन सभी मामलों में, अंतर्निहित व्यवहार विशिष्ट वाक्यविन्यास का उपयोग करके स्पष्ट किया जा सकता है।
आप एसक्यूएल में कुंजियों को लागू करने के लिए संयोजन में UNIQUE
(इंडेक्स की बजाय बाधा) और NOT NULL
का उपयोग कर सकते हैं। इसलिए, नहीं, SQL सर्वर में प्राथमिक कुंजी (या यहां तक कि PRIMARY KEY
) आवश्यक नहीं है।
सिर्फ रिकॉर्ड्स (और Google या Bing खोज रहे लोगों) के लिए: मेरा मानना है कि इस प्रश्न का उत्तर प्रत्येक SQL डेटाबेस (MySQL, Oracle, PostgreSQL, ...) के लिए मान्य है। – BlaM