شرح مفصل لـ MySQL Foreign Key
مقدمة
في قواعد البيانات، يعد مفهوم المفتاح الأجنبي (Foreign Key) من الركائز الأساسية لضمان سلامة البيانات والعلاقات الصحيحة بين الجداول. في MySQL، يُستخدم المفتاح الأجنبي لربط جدولين معًا، مما يضمن تكامل البيانات والقدرة على تنفيذ العمليات المعقدة بشكل أكثر فعالية.
ما هو المفتاح الأجنبي؟
المفتاح الأجنبي هو قيد يُستخدم لربط عمود في جدول بعمود أساسي (Primary Key) في جدول آخر. الغرض الأساسي من المفتاح الأجنبي هو الحفاظ على التكامل المرجعي بين الجداول، مما يعني أن كل قيمة في العمود الذي يحمل المفتاح الأجنبي يجب أن تتوافق مع قيمة موجودة في العمود الأساسي للجدول المرتبط.
كيفية إنشاء مفتاح أجنبي في MySQL
لإضافة مفتاح أجنبي إلى جدول، [شركة برمجة مصرية] يجب أولاً أن يكون لديك جدولين على الأقل: الجدول الذي يحتوي على المفتاح الأساسي والجدول الذي سيحتوي على المفتاح الأجنبي.
مثال
لنفترض أن لدينا جدولين: `customers` و`orders`. نريد أن نربط الطلبات بالزبائن بحيث يكون لكل طلب زبون واحد فقط.
1. إنشاء جدول الزبائن:
CREATE TABLE customers (
customer_id INT AUTO_INCREMENT,
name VARCHAR(100),
PRIMARY KEY (customer_id)
);
2. إنشاء جدول الطلبات وربطه بجدول الزبائن باستخدام المفتاح الأجنبي:
CREATE TABLE orders (
order_id INT AUTO_INCREMENT,
order_date DATE,
customer_id INT,
PRIMARY KEY (order_id),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
في هذا المثال، `customer_id` في جدول `orders` هو مفتاح أجنبي يشير إلى `customer_id` في جدول `customers`.
كيفية عمل المفتاح الأجنبي
عند محاولة إدخال قيمة في عمود المفتاح الأجنبي، يتحقق MySQL من وجود هذه القيمة في العمود المرتبط في الجدول الآخر. إذا لم تكن القيمة موجودة، ستحصل على خطأ. وبذلك يضمن MySQL عدم وجود إدخالات غير صالحة أو غير مرتبطة.
الخيارات [شركة برمجة مصرية] المتاحة للمفتاح الأجنبي
يمكن تخصيص سلوك المفتاح الأجنبي باستخدام بعض الخيارات مثل `ON DELETE` و`ON UPDATE`:
– **ON DELETE CASCADE**: عند حذف صف من الجدول المرتبط، سيتم حذف جميع الصفوف المرتبطة في الجدول الآخر تلقائيًا.
– **ON UPDATE CASCADE**: عند تحديث قيمة المفتاح الأساسي، سيتم تحديث جميع القيم المرتبطة في الجدول الآخر.
مثال على استخدام هذه الخيارات:
CREATE TABLE orders (
order_id INT AUTO_INCREMENT,
order_date DATE,
customer_id INT,
PRIMARY KEY (order_id),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE ON UPDATE CASCADE
);
الخاتمة
المفاتيح الأجنبية في MySQL تعتبر أداة قوية لضمان سلامة البيانات والعلاقات بين الجداول. من خلال استخدامها بشكل صحيح، يمكنك التأكد من أن البيانات في قاعدة البيانات مترابطة ومنظمة بشكل صحيح، مما يسهل إدارتها واسترجاعها. تعتبر المفاتيح الأجنبية جزءًا لا يتجزأ من تصميم قواعد البيانات الفعّالة والقابلة للتوسع.
