الدرس 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.
خطوات التطبيق:
- تحديد الكيانين الرئيسيين (
StudentsوCourses). - إنشاء جدول وصل جديد (
Enrollments). - يحتوي جدول الوصل على مفاتيح خارجية تشير إلى المفاتيح الأساسية لكلا الجدولين الأصليين.
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.