الدرس 8: قواعد الانتقال من MCD إلى MLD (الجزء الثاني)
التعامل مع علاقات (n,n) - متعدد إلى متعدد
في الدروس السابقة، تعلمنا كيفية التعامل مع علاقات "الأب-الابن". لكن ماذا لو كانت العلاقة متساوية من الطرفين، حيث يمكن لكل طرف أن يرتبط بالعديد من الطرف الآخر؟ هذه هي علاقة (n,n)، وهي تتطلب قاعدة خاصة للتحويل.
أمثلة: الطالب يسجل في عدة مواد، والمادة يسجل فيها عدة طلاب. المنتج يوجد في عدة طلبات، والطلب يحتوي على عدة منتجات.
المشكلة هي أننا لا نستطيع تطبيق قاعدة "هجرة المفتاح" هنا، لأننا سنحتاج لتخزين عدة قيم في حقل واحد، وهذا ممنوع في قواعد البيانات العلائقية.
القاعدة الذهبية لتحويل علاقات (n,n)
مكونات جدول الربط:
- المفاتيح الأجنبية (FKs): يستقبل المفاتيح الأساسية (PKs) من كلا الجدولين الأصليين.
- المفتاح الأساسي المركب (Composite PK): المفاتيح الأجنبية التي استقبلها تُشكل معاً المفتاح الأساسي للجدول الجديد. هذا يضمن أن كل علاقة فريدة (مثل تسجيل طالب معين في مادة معينة) تحدث مرة واحدة فقط.
- خصائص العلاقة: إذا كانت العلاقة الأصلية في MCD تمتلك خصائص (مثل "الدرجة" في علاقة التسجيل)، فإن هذه الخصائص تصبح أعمدة عادية في جدول الربط.
أمثلة تطبيقية
مثال 1: الطلاب والدورات التدريبية (مع خاصية على العلاقة)
MCD: طالب (0,n) --- (يسجل_في | تاريخ_التسجيل) --- (0,n) دورة_تدريبية.
التحويل: تتحول علاقة "يسجل_في" إلى جدول جديد "التسجيلات_الدراسية".
- PK رقم_الطالب
- اسم_الطالب
- PKFK رقم_الطالب
- PKFK رمز_الدورة
- تاريخ_التسجيل
- PK رمز_الدورة
- عنوان_الدورة
- عدد_الساعات
مثال 2: الأفلام والممثلون (بدون خاصية على العلاقة)
MCD: فيلم (0,n) --- (يمثل_في) --- (0,n) ممثل.
التحويل: تتحول علاقة "يمثل_في" إلى جدول "المشاركات_التمثيلية".
- PK معرف_الفيلم
- عنوان_الفيلم
- PKFK معرف_الفيلم
- PKFK معرف_الممثل
- PK معرف_الممثل
- اسم_الممثل
مثال 3: الأطباء والمرضى (عبر كيان وسيط)
أحياناً، تكون العلاقة (n,n) الضمنية بين كيانين (طبيب ومريض) أكثر تعقيداً من مجرد رابط. قد تحتوي على خصائص مهمة جداً (تاريخ، ساعة، ملاحظات) تجعلها كياناً بحد ذاتها (موعد).
MCD: طبيب (0,n) -- (1,1) موعد (1,1) -- (0,n) مريض.
التحويل: هنا لا ننشئ جدول ربط، بل نعامل "الموعد" كجدول عادي يستقبل المفاتيح الأجنبية من جدول "الأطباء" وجدول "المرضى" بناءً على قواعد علاقات (1-n) التي تعلمناها سابقاً.
- PK رقم_الطبيب
- اسم_الطبيب
- PK رقم_الموعد
- تاريخ_الموعد
- FK رقم_الطبيب
- FK رقم_المريض
- PK رقم_المريض
- اسم_المريض
خلاصة قواعد الانتقال (الكاملة)
- الكيانات: كل كيان يصبح جدولاً.
- علاقات (1-n): المفتاح الأساسي من جهة "1" يهاجر كـ FK إلى جهة "n".
- علاقات (n-n): تتحول العلاقة إلى جدول ربط جديد، يأخذ المفاتيح الأساسية من الجدولين الأصليين كـ FKs، ويستخدمهما معاً كمفتاح أساسي مركب.
إتقان هذه القواعد الثلاث هو المفتاح لتصميم أي قاعدة بيانات علائقية بشكل صحيح ومنطقي.