📊 نموذج الكيان والعلاقة المُحسَّن (EER)

دليل كامل لمفاهيم EER: التخصص، التعميم، الفئات والقيود

📚 الفصل ٣
🎯 CS 340
👩‍🎓 Shoug Alomran
⏱️ ملخص شامل

📑 المحتويات

🎯

وش هو EER؟

أساسيات نموذج الكيان والعلاقة المُحسَّن

📘 تعريف

EER اختصار لـ Enhanced ER (أو Extended ER). هو نسخة مطوّرة من نموذج ER العادي، تضيف مفاهيم نمذجة جديدة كانت صعبة التمثيل في مخططات ER التقليدية.

ليه نحتاج EER؟

مفاهيم نموذج ER التقليدي ما كانت كافية لنمذجة البيانات المعقّدة في تطبيقات قواعد البيانات الحديثة. EER يضيف إضافات تتعامل مع:

1

الفئات الفرعية/الفئات العليا

تمثّل تجميعات فرعية ذات معنى للكيانات مع خصائص موروثة وخصائص خاصّة

2

التخصص/التعميم

منهجية من الأعلى للأسفل ومن الأسفل للأعلى لإنشاء تسلسلات هرمية للفئات

3

الفئات (أنواع UNION)

فئات فرعية لها عدّة فئات عليا من أنواع كيانات مختلفة

⭐ الفائدة الأساسية

مفاهيم EER هذي تزيد القوة التعبيرية لمخططات ER وتخلّينا نقدّر نصمم تطبيقات قواعد بيانات معقّدة جداً تعكس الواقع بدقة.

🔹

الفئات الفرعية والفئات العليا

فهم التسلسلات الهرمية للكيانات وعلاقات IS-A

📘 المفهوم الأساسي

نوع الكيان يمكن يكون له تجميعات فرعية ذات معنى إضافي لكياناته تكون مهمة للمنظمة. هالتجميعات تُسمّى فئات فرعية أو أنواع فرعية.

مثال كلاسيكي: كيان EMPLOYEE

💼 تجميعات EMPLOYEE

كيان EMPLOYEE يقدر يتجمّع لفئات فرعية على أساس معايير مختلفة:

  • حسب نوع الوظيفة: SECRETARY, ENGINEER, TECHNICIAN
  • حسب الدور: MANAGER (الموظفين اللي هم مدراء)
  • حسب طريقة الدفع: SALARIED_EMPLOYEE, HOURLY_EMPLOYEE

مصطلحات رئيسية

الفئة العليا (Superclass)

نوع الكيان العام (مثل EMPLOYEE) اللي يضم كل الكيانات

الفئة الفرعية/النوع الفرعي

مجموعة جزئية من الفئة العليا بخصائص محدّدة (مثل SECRETARY)

علاقة IS-A

الفئة الفرعية IS-A فئة عليا (مثل SECRETARY IS-A EMPLOYEE)

وراثة الخصائص

🔄 كيف تشتغل الوراثة

الكيان اللي هو عضو في فئة فرعية يرث:

  • ✅ كل خصائص الكيان كعضو في الفئة العليا
  • ✅ كل العلاقات اللي تربط الكيان كعضو في الفئة العليا
  • ➕ يقدر يكون عنده خصائص محليّة (خاصة) وعلاقات خاصة فيه
💡 مثال على الوراثة

SECRETARY (و TECHNICIAN و ENGINEER) يرثون خصائص مثل:

  • Name, SSN, Birth_date, Address من EMPLOYEE

SECRETARY عنده خاصية خاصّة فيه:

  • Typing_speed (ما تنطبق على أنواع الموظفين الثانية)
🎯 قواعد أساسية
  • كيان الفئة الفرعية يمثّل نفس كيان العالم الحقيقي اللي هو عضو في الفئة العليا (نفس الكيان بدور معيّن مختلف)
  • كيان ما يقدر يتواجد في قاعدة البيانات بمجرد إنه عضو في فئة فرعية
  • لازم يكون عضو في الفئة العليا
  • مو ضروري كل كيان من الفئة العليا يكون عضو في فئة فرعية

الانتماء لعدّة فئات فرعية

عضو الفئة العليا يقدر اختيارياً ينضم كعضو في أي عدد من فئاتها الفرعية:

🔀 أمثلة على انتماءات متعددة
  • موظف براتب موظف ومهندس في نفس الوقت ينتمي لـ: ENGINEER و SALARIED_EMPLOYEE
  • موظف براتب موظف ومدير هندسة ينتمي لـ: MANAGER, ENGINEER, و SALARIED_EMPLOYEE
🔺

التخصص (Specialization)

منهجية من الأعلى للأسفل لتعريف الفئات الفرعية

📘 تعريف

التخصص هو عملية تعريف مجموعة من الفئات الفرعية لفئة عليا. مجموعة الفئات الفرعية تعتمد على خصائص مميّزة لكيانات الفئة العليا.

🔽 منهجية من الأعلى للأسفل

التخصص هو عملية تصميم من الأعلى للأسفل:

  • ابدأ بنوع كيان عام (فئة عليا)
  • حدد خصائص مميّزة
  • عرّف فئات فرعية متخصصة بناءً على هالخصائص
💼 أمثلة على التخصص
  • {SECRETARY, ENGINEER, TECHNICIAN} هو تخصص لـ EMPLOYEE على أساس نوع الوظيفة
  • MANAGER هو تخصص لـ EMPLOYEE على أساس الدور اللي يلعبه الموظف
  • {SALARIED_EMPLOYEE, HOURLY_EMPLOYEE} هو تخصص لـ EMPLOYEE على أساس طريقة الدفع

تخصصات متعددة

الفئة العليا تقدر يكون لها عدة تخصصات على أساس خصائص مميّزة مختلفة. مثلاً، EMPLOYEE تقدر يكون لها:

التخصص المُعرَّف بالخاصية

🎯 مفهوم المميِّز (Discriminator)

إذا كانت كل الفئات الفرعية في تخصص شرط عضويتها معتمد على نفس الخاصية للفئة العليا، التخصص هذا يُسمّى تخصص مُعرَّف بالخاصية.

هالخاصية تُسمّى الخاصية المُعرِّفَة أو المميِّز.

💡 مثال على المميِّز

Job_type هي الخاصية المُعرِّفَة (المميِّز) للتخصص {SECRETARY, TECHNICIAN, ENGINEER} لـ EMPLOYEE

  • إذا Job_type = 'Secretary' → الكيان في الفئة الفرعية SECRETARY
  • إذا Job_type = 'Engineer' → الكيان في الفئة الفرعية ENGINEER
  • إذا Job_type = 'Technician' → الكيان في الفئة الفرعية TECHNICIAN

التسلسل الهرمي للتخصص

🌳 وراثة فردية

التسلسل الهرمي للتخصص هو هيكل كل فئة فرعية فيه تشارك كفئة فرعية في علاقة مع فئة عليا واحدة فقط (وراثة فردية). هذا يكوّن هيكل شجري.

🔻

التعميم (Generalization)

منهجية من الأسفل للأعلى لإنشاء فئات عليا

📘 تعريف

التعميم هو عملية تعميم كيانات تشترك في خصائص مشتركة إلى كيان بمستوى أعلى (فئة عليا). يحدد نوع كيان عام من مجموعة أنواع كيانات متخصصة.

🔼 منهجية من الأسفل للأعلى

التعميم هو عملية تصميم من الأسفل للأعلى:

  • ابدأ بعدّة أنواع كيانات
  • حدد الميزات والخصائص المشتركة
  • أنشئ فئة عليا معمّمة تلتقط هذه المشتركات
  • الكيانات الأصلية تصير فئات فرعية للفئة العليا الجديدة

التخصص vs التعميم

التخصص (من الأعلى للأسفل)

  • ابدأ بفئة عليا
  • عرّف فئات فرعية
  • أضف خصائص خاصّة
  • منهجية تصميم

التعميم (من الأسفل للأعلى)

  • ابدأ بفئات فرعية
  • حدد المشتركات
  • أنشئ فئة عليا
  • منهجية تركيب
⭐ فكرة جوهرية

التعميم غالباً يكون TOTAL لأنك لما تعمّم من أنواع كيانات موجودة، كل كيان في هالأنواع لازم يكون مندرج في الفئة العليا الناتجة - كل الكيانات تشارك في التعميم بحكم التعريف.

🔄 تكافؤ هيكلي

الهياكل الناتجة من التخصص والتعميم متكافئة هيكلياً. الفرق الأساسي في عملية التصميم ووجهة النظر:

  • التخصص: "هذا الكيان يقدر ينقسم لهالأنواع"
  • التعميم: "هالكيانات تشترك في هالميزات المشتركة"
⚙️

القيود على التخصص/التعميم

قواعد تحكم العضوية في الفئات الفرعية

🎯 قيدين أساسيين

قيدين أساسيين ينطبقون على التخصص والتعميم:

  1. قيد التباين (Disjointness) - يتحكم في التداخل بين الفئات الفرعية
  2. قيد الاكتمال (Completeness/Exhaustiveness) - يتحكم إذا كل الكيانات لازم تنتمي لفئة فرعية

هالقيود مستقلين عن بعض.

١️⃣ قيد التباين (Disjointness)

منفصلة (d)

الفئات الفرعية لازم تكون منفصلة

  • الكيان يقدر يكون عضو في على الأكثر فئة فرعية واحدة
  • يُرمز له بـ d في مخطط EER
  • مثال: نوع الوظيفة (ما تقدر تكون Secretary و Engineer مع بعض)

متداخلة (o)

نفس الكيان يقدر يكون في عدّة فئات فرعية

  • الكيان يقدر يكون عضو في أكثر من فئة فرعية
  • يُرمز له بـ o في مخطط EER
  • مثال: MANAGER و ENGINEER (يقدر يكون الاثنين)

٢️⃣ قيد الاكتمال (Completeness)

كلي (Total) - خط مزدوج

كل كيان لازم ينتمي لفئة فرعية

  • كل كيان من الفئة العليا لازم يكون عضو في فئة فرعية على الأقل
  • يُعبّر عنه بـ خط مزدوج في مخططات EER
  • نفس المشاركة الكلية في ER

جزئي (Partial) - خط مفرد

ما هو ضروري كل كيان ينتمي لفئة فرعية

  • الكيان مو شرط يكون عضو في أي فئة فرعية
  • يُعبّر عنه بـ خط مفرد في مخططات EER
  • بعض الكيانات تبقى فقط في الفئة العليا

أربع توليفات ممكنة

d/T

منفصلة، كلية

الكيان في فئة فرعية واحدة بالضبط

d/P

منفصلة، جزئية

الكيان في على الأكثر فئة فرعية واحدة

o/T

متداخلة، كلية

الكيان في فئة فرعية أو أكثر

o/P

متداخلة، جزئية

الكيان في صفر أو أكثر من الفئات الفرعية

قواعد الإدراج والحذف

📜 قواعد مبنية على القيود

قواعد معيّنة للإدراج والحذف تنطبق نتيجة لهالقيود:

  • حذف من الفئة العليا: الكيان يُحذف تلقائياً من كل الفئات الفرعية اللي هو عضو فيها
  • إدراج في فئة عليا ذات تخصص كلي: الكيان لازم يُدرج في فئة فرعية على الأقل (إجباري)
  • إدراج في فئة عليا ذات تخصص جزئي: الكيان مو شرط يُدرج في أي فئة فرعية (اختياري)
🔣 رموز مخطط EER
d = منفصلة (داخل دائرة)
o = متداخلة (داخل دائرة)
━━ = كلي (خط مزدوج)
── = جزئي (خط مفرد)
🔶

الفئات (أنواع UNION)

فئات فرعية ذات فئات عليا متعددة ومختلفة

📘 تعريف

الفئة (أو نوع UNION) هي فئة فرعية لها عدة فئات عليا محتملة، وكل فئة عليا تمثّل نوع كيان مختلف.

الفئة تمثّل مجموعة من الكيانات هي مجموعة جزئية من UNION كيانات أنواع الكيانات المختلفة.

🔀 الفرق الجوهري عن التخصص العادي

التخصص/التعميم العادي: الفئات الفرعية تشترك في نفس الفئة العليا

الفئة (نوع UNION): فئة فرعية واحدة لها عدّة فئات عليا مختلفة

متى نستخدم الفئات

الفئات ضرورية لما نريد نمذجة علاقة فئة عليا / فئة فرعية بأكثر من فئة عليا والفئات العليا هذي تمثّل أنواع كيانات مختلفة.

💡 أمثلة على فئات
  • OWNER فئة بفئات عليا: PERSON, BANK, COMPANY
    • المالك يقدر يكون شخص، أو بنك، أو شركة
    • هذي أنواع كيانات مختلفة جوهرياً
  • REGISTERED_VEHICLE فئة بفئات عليا: CAR, TRUCK
    • المركبة المسجّلة تقدر تكون سيارة أو شاحنة

الوراثة الانتقائية في الفئات

🎯 كيف تشتغل الوراثة في الفئات

وراثة الخصائص تشتغل بشكل انتقائي أكثر في الفئات:

  • الكيان في الفئة يرث فقط الخصائص والعلاقات الخاصة بالفئة العليا الوحيدة اللي هو عضو فيها
  • هذا يُسمّى وراثة انتقائية
  • مختلف عن الوراثة العادية حيث كل خصائص الفئة العليا تُورث

فئات كلية vs فئات جزئية

فئة كلية (خط مزدوج)

تحتوي اتحاد كل الكيانات في فئاتها العليا

  • كل كيان من الفئات العليا موجود في الفئة
  • اتحاد كامل
  • يُمثّل بخط مزدوج

فئة جزئية (خط مفرد)

تحتوي مجموعة جزئية من اتحاد الكيانات

  • فقط بعض الكيانات من الفئات العليا موجودة في الفئة
  • اتحاد جزئي
  • يُمثّل بخط مفرد

خصائص المفتاح في الفئات

🔑 مرونة مع المفاتيح

الفئات العليا في الفئة تقدر يكون لها:

  • خصائص مفتاح مختلفة (مثل فئة OWNER: PERSON عنده SSN، COMPANY عنده Registration_num)
  • نفس خاصية المفتاح (مثل REGISTERED_VEHICLE: CAR و TRUCK كلاهما يستخدم Vehicle_id)

متى تستخدم الفئة ومتى تستخدم التخصص؟

🎯 إرشادات القرار

استخدم التخصص/التعميم عندما:

  • الفئات تمثّل نفس نوع الكيانات
  • تشترك في خصائص كثيرة
  • لها نفس خصائص المفتاح

استخدم التصنيف (نوع UNION) عندما:

  • الفئات العليا تمثّل أنواع كيانات مختلفة
  • تحتاج تمثّل مجموعة جزئية من اتحاد أنواع كيانات مختلفة
  • الفئات العليا لها خصائص مفتاح مختلفة

ملاحظة: للفئات الكلية، الاختيار ممكن يكون ذاتي لأنه ممكن تمثّل بديلاً كتخصص كلي.

ملخص الفصل

أهم النقاط من نمذجة EER

🎯 هدف EER

يوسّع ER العادي عشان يغطي تسلسلات هرمية معقّدة، تجميعات فرعية، ووراثة ما يقدر ER التقليدي يعبر عنها

🔄 الوراثة

الفئات الفرعية ترث كل الخصائص والعلاقات من الفئات العليا، وتقدر تضيف خصائصها الخاصّة

🔺 التخصص

منهجية من الأعلى للأسفل: تعريف فئات فرعية من فئة عليا بناءً على خصائص مميّزة

🔻 التعميم

منهجية من الأسفل للأعلى: إنشاء فئة عليا من أنواع كيانات بتحديد المشتركات

⚙️ القيود

التباين (d/o) والاكتمال (كلي/جزئي) يتحكمون بالعضوية في الفئات الفرعية بشكل مستقل

🔶 الفئات

أنواع UNION تسمح بفئات فرعية ذات فئات عليا متعددة ومختلفة، مع وراثة انتقائية

🎓 الخطوات الجاية

بعد ما أتقنت مفاهيم EER، تقدر تسوي تصاميم منطقية وتتعمّق في النموذج العلائقي - وتحوّل هالتصاميم المفاهيمية إلى مخططات قاعدة بيانات فعلية.

💡 مبدأ التصميم

كل مفاهيم EER - الفئات العليا/الفئات الفرعية، التخصص/التعميم، والفئات - تزيد القوة التعبيرية لمخططات ER وتخلّينا نقدّر نصمم تطبيقات قواعد بيانات معقّدة جداً تعكس الواقع بدقة.