شرح صفوف ومحتوى الفقرة
يربط قيد المفتاح الأجنبي FOREIGN KEY عموداً داخل الجدول الابن (مثل orders.customer_id) بالمفتاح الأساسي أو الفريد في الجدول الأب (مثل customers.id). ويفرض محرك InnoDB التكامل المرجعي (Referential Integrity) بحيث يستحيل تسجيل طلب لعميل غير موجود أصلاً (Error 1452):
- الجدول الأب (Parent Table): الجدول المرجعي الذي يحتوي على المفتاح الأساسي الأصلي (
customers). - الجدول الابن (Child Table): الجدول التابع الذي يضم عمود المفتاح الأجنبي المرتبط بالأب (
orders).
SQL
CREATE TABLE customers (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
full_name VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE orders (
order_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
customer_id BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (order_id),
CONSTRAINT fk_orders_customer
FOREIGN KEY (customer_id) REFERENCES customers (id)
);