العودة إلى الدورة

نمذجة العلاقات: متعدد لمتعدد (M:N) وجداول الوصل (Junction Tables)

أساسيات قواعد البيانات: من الصفر إلى الاحتراف

الدرس 11: نمذجة العلاقات: متعدد لمتعدد (M:N) وجداول الوصل (Junction Tables)

علاقة M:N هي الأكثر تعقيدًا في نمذجتها بشكل مباشر، حيث لا يمكن أن تتواجد بشكل طبيعي في الهيكل العلائقي.

تعريف علاقة متعدد لمتعدد (M:N)

تعني علاقة M:N أن سجلاً واحداً في الجدول A يمكن أن يرتبط بالعديد من السجلات في الجدول B، وسجل واحد في الجدول B يمكن أن يرتبط بالعديد من السجلات في الجدول A.

مثال: الطلاب والمقررات الدراسية

  • يمكن للطالب التسجيل في العديد من المقررات.
  • يمكن أن يتم أخذ المقرر من قبل العديد من الطلاب.

الحل: جدول الوصل (Junction Table)

لحل علاقة M:N، نقوم بإدخال جدول ثالث يسمى جدول الوصل (Junction Table) (أو جدول الربط/الجسر). يقوم هذا الجدول بتحويل علاقة M:N إلى علاقتين منفصلتين من نوع 1:N.

خطوات التطبيق:

  1. تحديد الكيانين الرئيسيين (Students و Courses).
  2. إنشاء جدول وصل جديد (Enrollments).
  3. يحتوي جدول الوصل على مفاتيح خارجية تشير إلى المفاتيح الأساسية لكلا الجدولين الأصليين.

sql -- 1. الجدول الرئيسي (Students) CREATE TABLE Students ( StudentID INTEGER PRIMARY KEY, StudentName VARCHAR(100) );

-- 2. الجدول الرئيسي (Courses) CREATE TABLE Courses ( CourseID INTEGER PRIMARY KEY, CourseTitle VARCHAR(100) );

-- 3. جدول الوصل (Enrollments) CREATE TABLE Enrollments ( EnrollmentID INTEGER PRIMARY KEY, -- مفتاح أساسي اختياري للرابط نفسه StudentID INTEGER, -- FK 1 (جانب المتعدد للطالب) CourseID INTEGER, -- FK 2 (جانب المتعدد للمقرر) EnrollmentDate DATE,

FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)

);

الآن، يمكن أن يكون للطالب عدة إدخالات في Enrollments، ويمكن أن يكون للمقرر عدة إدخالات في Enrollments.