स्पष्टीकरण के लिए बस: एक मेज में अधिकतम एक प्राथमिक कुंजी हो सकती है। एक प्राथमिक कुंजी में एक या अधिक कॉलम होते हैं (उस तालिका से)। यदि एक प्राथमिक कुंजी में दो या दो से अधिक कॉलम होते हैं, तो इसे समग्र प्राथमिक कुंजी कहा जाता है । इसे निम्नानुसार परिभाषित किया गया है:
CREATE TABLE voting (
QuestionID NUMERIC,
MemberID NUMERIC,
PRIMARY KEY (QuestionID, MemberID)
);
जोड़ी (प्रश्न, सदस्य) तब तालिका के लिए अद्वितीय होनी चाहिए और न ही मूल्य NULL हो सकता है। यदि आप इस तरह से एक प्रश्न करते हैं:
SELECT * FROM voting WHERE QuestionID = 7
यह प्राथमिक कुंजी के सूचकांक का उपयोग करेगा। यदि आप ऐसा करते हैं:
SELECT * FROM voting WHERE MemberID = 7
ऐसा इसलिए नहीं होगा क्योंकि कंपोजिट इंडेक्स का उपयोग करने के लिए "बाएं" से सभी कुंजियों का उपयोग करने की आवश्यकता होती है। यदि कोई इंडेक्स फ़ील्ड (A, B, C) पर है और आपका मानदंड B और C पर है, तो उस इंडेक्स का आपके लिए उस क्वेरी से कोई फायदा नहीं है। इसलिए (प्रश्न, सदस्य) और (सदस्य, प्रश्न) से चुनें कि आप तालिका का उपयोग कैसे करेंगे, इसके लिए सबसे उपयुक्त है।
यदि आवश्यक हो, तो दूसरे पर एक सूचकांक जोड़ें:
CREATE UNIQUE INDEX idx1 ON voting (MemberID, QuestionID);