سؤال

كيف يمكنني تحديد مفتاح أساسي مركب يتكون من حقلين في SQL؟

أنا أستخدم PHP لإنشاء جداول وكل شيء. أريد أن أجعل اسم الجدول voting مع الحقول QuestionID, MemeberID, ، و vote. وبعد والمفتاح الأساسي المركب يتكون من الحقول QuestionID و MemberID.

كيف أفعل ذلك؟

هل كانت مفيدة؟

المحلول

فقط للتوضيح: يمكن أن يكون الجدول على الأكثر دفعة أساسية واحدة. يتكون مفتاح أساسي من أعمدة واحدة أو أكثر (من هذا الجدول). إذا كان مفتاح أساسي يتكون من عمودين أو أكثر يسمى مفتاح أساسي مركب. وبعد يتم تعريفه على النحو التالي:

CREATE TABLE voting (
  QuestionID NUMERIC,
  MemberID NUMERIC,
  PRIMARY KEY (QuestionID, MemberID)
);

يجب أن يكون الزوج (مفاجئ، member) فريدا من نوعه بالنسبة للجدول ولا يمكن أن تكون أي قيمة فارغة. إذا قمت بإجراء استعلام مثل هذا:

SELECT * FROM voting WHERE QuestionID = 7

سيستخدم مؤشر المفتاح الأساسي. إذا كنت تفعل هذا:

SELECT * FROM voting WHERE MemberID = 7

لن يؤدي ذلك إلى استخدام مؤشر مركب يتطلب استخدام جميع المفاتيح من "اليسار". إذا كان الفهرس في الحقول (A، B، C) ومعاييرك موجودة في B و C إذن هذا الفهرس غير مفيد لك لهذا الاستعلام. لذا اختر من بين (مفاجئ أو أرفيك) و (OfficeID، مفيدا) أيهما هو الأنسب لكيفية استخدام الجدول.

إذا لزم الأمر، أضف فهرسا من ناحية أخرى:

CREATE UNIQUE INDEX idx1 ON voting (MemberID, QuestionID);

نصائح أخرى

CREATE TABLE `voting` (
  `QuestionID` int(10) unsigned NOT NULL,
  `MemberId` int(10) unsigned NOT NULL,
  `vote` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`QuestionID`,`MemberId`)
);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top