انتقل إلى محتوى الدرس

Many to Many Junction Tables علاقة متعدد لمتعدد والوسيط

تعلّم العلاقات بين الجداول واحد لواحد وواحد لمتعدد ومتعدد لمتعدد في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
7 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

في علاقة متعدد لمتعدد (M:N)، يرتبط السجل الواحد في الجدول الأول بعدة سجلات في الجدول الثاني، والعكس صحيح أيضاً (مثل: الطلاب والدورات التدريبية، أو الطلبات والمنتجات):

  • استحالة الربط المباشر بين الجدولين: لا يمكن تخزين قائمة أرقام دورات داخل خلية واحدة في جدول الطلاب.
  • الحل الهندسي عبر جدول الربط الوسيط (Junction / Pivot Table): ننشئ جدولاً ثالثاً وسيطاً (مثل enrollments) يحتوي على مفتاحين أجنبيين؛ فيفكك علاقة M:N المعقدة إلى علاقتي 1:N قياسيتين.
SQL
CREATE TABLE enrollments (
  student_id INT UNSIGNED NOT NULL,
  course_id INT UNSIGNED NOT NULL,
  enrolled_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (student_id, course_id),
  FOREIGN KEY (student_id) REFERENCES customers(id),
  FOREIGN KEY (course_id) REFERENCES courses(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;