इस प्रश्न में एक टिप्पणी पढ़ने के बाद यह प्रश्न आता है:
जब आप कई-से-कई तालिका बनाते हैं, तो क्या आपको दो विदेशी कुंजी स्तंभों पर एक समग्र प्राथमिक कुंजी बनाना चाहिए, या एक ऑटो-इंक्रीमेंट सरोगेट "आईडी" प्राथमिक कुंजी बनाना चाहिए, और बस अपने दो एफके कॉलमों पर अनुक्रमणिकाएं डालें (और शायद एक अद्वितीय बाधा)? प्रत्येक मामले में नए रिकॉर्ड / पुन: अनुक्रमण सम्मिलित करने के लिए प्रदर्शन पर निहितार्थ क्या हैं?
मूल रूप से, यह:
PartDevice
----------
PartID (PK/FK)
DeviceID (PK/FK)
इस बनाम:
PartDevice
----------
ID (PK/auto-increment)
PartID (FK)
DeviceID (FK)
टिप्पणीकार कहता है:
पीके को दो आईडी बनाने का मतलब है कि तालिका भौतिक रूप से उस क्रम में डिस्क पर सॉर्ट की गई है। इसलिए यदि हम (Part1 / Device1), (Part1 / Device2), (Part2 / Device3) सम्मिलित करते हैं, तो (भाग 1 / Device3) डेटाबेस को तालिका को अलग करना होगा और प्रविष्टियों 2 और 3. के बीच अंतिम एक सम्मिलित करना होगा। कई रिकॉर्ड, यह बहुत समस्याग्रस्त हो जाता है क्योंकि इसमें हर बार एक जोड़ने के दौरान सैकड़ों, हजारों, या लाखों रिकॉर्ड शामिल होते हैं। इसके विपरीत, एक autoincrementing PK नए रिकॉर्ड को अंत तक निपटने की अनुमति देता है।
कारण मैं पूछ रहा हूँ क्योंकि मैं हमेशा बिना किसी सरोगेट ऑटो-इन्क्रीमेंट कॉलम के साथ समग्र प्राथमिक कुंजी करने के लिए इच्छुक हूं, लेकिन मुझे यकीन नहीं है कि सरोगेट कुंजी वास्तव में अधिक प्रदर्शनशील है।