يربط المفتاح الخارجي المركب مجموعة أعمدة في الجدول التابع بمجموعة مقابلة في الجدول الأب. عندما تكون القيم غير فارغة، يجب أن توجد المجموعة كاملة في صف أب واحد. لا يكفي أن نجد القيمة الأولى في صف والقيمة الثانية في صف آخر، لأن العلاقة تشير إلى سجل محدد بالمجموعة معًا.
مثلًا، قد تتميز نسخة كتاب برقم الكتاب ورقم الطبعة. إذا وُجدت الطبعة الأولى من الكتاب 10 والطبعة الثانية من الكتاب 20، فهذا لا يعني وجود الطبعة الثانية من الكتاب 10. تقسيم العلاقة إلى تحققين مستقلين قد يفقد هذه القاعدة المهمة في تصميم البيانات.
مثال
CREATE TABLE books (
book_id INT,
edition INT,
PRIMARY KEY (book_id, edition)
);
CREATE TABLE orders (
id INT PRIMARY KEY,
book_id INT NOT NULL,
edition INT NOT NULL,
FOREIGN KEY (book_id, edition)
REFERENCES books(book_id, edition)
);
يجب أيضًا احترام ترتيب الأعمدة في التعريف؛ يقابل العمود الأول أول عمود مرجعي، والثاني ثاني عمود مرجعي. استخدام NOT NULL هنا يجعل كل طلب يحدد نسخة كاملة.
باختصار: يتحقق المفتاح الخارجي المركب من وجود الزوج نفسه في صف أب واحد، وليس من وجود كل قيمة منفردة.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.