ما المفتاح الأجنبي؟#
المفتاح الأجنبي جسر بين جدولين: عمود يجب أن تساوي قيمته المفتاح الأساسي لصف في جدول آخر. مثلًا في جدول الطلبات يكون العمود customer_id مفتاحًا أجنبيًا يشير إلى العمود id في جدول العملاء.
ماذا يفعل؟#
- يبيّن لأي عميل يعود كل طلب.
- لا يسمح بتسجيل طلب لعميل «غير موجود».
- يحدد عند حذف العميل ما الذي يحدث لطلباته.
قاعدة الحذف#
عند التعريف يمكن تحديد سلوك الحذف:
- المنع: لا يُحذف العميل ما دام لديه طلبات.
- الحذف المتسلسل: عند حذف العميل تُحذف طلباته أيضًا.
- التفريغ: يُفرَّغ عمود المرجع.
مثال#
إذا حذفتَ العميل رقم 7 وبقيت طلباته، فستمتلئ تقاريرك بطلبات «بلا صاحب». والمفتاح الأجنبي يمنع هذا الخلل تحديدًا.
نصيحة عملية#
بعض المطورين لا يعرّفون المفتاح الأجنبي طلبًا للسرعة أو المرونة، ويتحققون من سلامة البيانات في كود التطبيق. هذا ممكن، لكن خطر الخطأ يزداد. وللبيانات المهمة يبقى المفتاح الأجنبي داخل قاعدة البيانات أبسط تأمين.