شرح صفوف ومحتوى الفقرة
عند هندسة مفاتيح جدول الربط الوسيط مثل order_items أو user_roles، تتاح أمامك طريقتان قياسيتان:
- المفتاح الأساسي المركب
PRIMARY KEY (order_id, product_id): يجعل زوج المفتاحين الأجنبيين هو المفتاح الأساسي العنقودي مباشرة في InnoDB، مما يمنع تكرار نفس المنتج داخل نفس الطلب دون الحاجة لعمود ترقيم إضافي. - مفتاح متسلسل
idمع قيدUNIQUE (order_id, product_id): يُستخدم عندما تتطلب أطر العمل معرفاً مفرداً مع الحفاظ على منع ازدواج الزوج.
SQL
CREATE TABLE order_items (
order_id INT UNSIGNED NOT NULL,
product_id INT UNSIGNED NOT NULL,
quantity SMALLINT UNSIGNED NOT NULL DEFAULT 1,
unit_price DECIMAL(10, 2) NOT NULL,
PRIMARY KEY (order_id, product_id),
FOREIGN KEY (order_id) REFERENCES orders(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;