الوحدة 6: نموذج الكيان والعلاقة (ER Model)

تُعرِّف هذه الوحدة الطلاب على نموذج الكيان والعلاقة (Entity-Relationship Model)، وهو أساس نمذجة البيانات المفاهيمية قبل تطبيقها في قواعد البيانات العلائقية. كما تشمل المفاهيم الأساسية للكيان، العلاقات، السمات، والمفاتيح.

الهدف من الوحدة

تُعرِّف هذه الوحدة الطلاب على نموذج الكيان والعلاقة (Entity-Relationship Model)، وهو أساس نمذجة البيانات المفاهيمية قبل تطبيقها في قواعد البيانات العلائقية. كما تشمل المفاهيم الأساسية للكيان، العلاقات، السمات، والمفاتيح.

6.1 الكيان ومجموعة الكيان ونوع الكيان (Entity, Entity Set, and Entity Type)

في قلب نمذجة البيانات المفاهيمية يكمن مفهوم الكيان (Entity). لنستكشف هذا المفهوم والمفاهيم المرتبطة به:

  • الكيان (Entity):

    هو شيء ذو وجود مستقل، يمكن تمييزه بوضوح عن غيره، وله أهمية في سياق النظام الذي نُصمم له قاعدة البيانات. الكيان يُمثل "المعلومات" التي نريد تخزينها وتنظيمها. يمكن أن يكون الكيان:

    • شيئًا ماديًا: مثل موظف، طالب، منتج، سيارة، كتاب.
    • شيئًا مفاهيميًا: مثل قسم، طلب شراء، مقرر دراسي، مشروع.
    أمثلة على الكيانات:
    • "أحمد محمد" هو كيان (طالب).
    • "مقدمة في البرمجة" هو كيان (مقرر دراسي).
    • "الطلب رقم 12345" هو كيان (طلب).
  • مجموعة الكيان (Entity Set):

    هي مجموعة من الكيانات المتماثلة في الخصائص (أي من نفس "النوع"). بعبارة أخرى، هي مجموعة من جميع الكيانات التي تنتمي إلى نوع كيان معين في لحظة زمنية محددة. تُقابل "الجدول" في النموذج العلائقي.

    مثال:
    • جميع الموظفين الحاليين في الشركة يُشكلون مجموعة الكيان `Employees`.
    • جميع الكتب المتوفرة في المكتبة تُشكل مجموعة الكيان `Books`.
  • نوع الكيان (Entity Type):

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

    مثال:
    • "الموظف" كـ نوع كيان (`Employee` Entity Type) له خصائص (سمات) مثل: `EmployeeID` (معرف الموظف)، `Name` (الاسم)، `Department` (القسم)، `Salary` (الراتب).
    • "المنتج" كـ نوع كيان (`Product` Entity Type) له سمات مثل: `ProductID`، `ProductName`، `Price`، `QuantityInStock`.

6.2 ارتباط الوجود (Existence Dependency)

ارتباط الوجود (أو الاعتماد الوجودي) هو مفهوم يحدد ما إذا كان وجود كيان معين يعتمد بشكل كلي على وجود كيان آخر.

  • تعريف ارتباط الوجود (Existence Dependency):

    إذا كان كيانًا ما لا يمكن أن يوجد بشكل منطقي في قاعدة البيانات دون وجود كيان آخر مرتبط به، فإننا نقول إن الكيان الأول لديه ارتباط وجودي بالكيان الثاني. الكيان الذي يعتمد وجوده على الآخر يُسمى الكيان التابع (Dependent Entity)، والكيان الذي يُعتمد عليه يُسمى الكيان المهيمن (Dominant Entity) أو (Identifying Entity).

  • الكيان الضعيف وارتباط الوجود:

    عادةً ما تكون الكيانات الضعيفة (Weak Entities) هي أمثلة كلاسيكية على الكيانات التي لديها ارتباط وجودي، حيث لا يمكن تحديدها بشكل فريد إلا من خلال ارتباطها بكيان قوي (Strong Entity).

مثال: جدول "الطلب" و"العميل"
  • لا يمكن أن يكون هناك طلب شراء (Order) موجود في النظام بدون أن يكون هناك عميل (Customer) قد قام بهذا الطلب.
  • هنا، "الطلب" هو كيان تابع (Dependent Entity) يعتمد وجوده على "العميل" (الكيان المهيمن). إذا حذفنا العميل، يجب حذف جميع الطلبات المرتبطة به لضمان سلامة البيانات.

6.3 أنواع الكيانات (Types of Entities)

تُصنف الكيانات في نموذج ER بناءً على مدى استقلاليتها في التحديد:

  • الكيان المستقل / القوي (Strong Entity):

    هو كيان له مفتاح رئيسي (Primary Key) خاص به يمكنه من تمييز سجلاته بشكل فريد دون الحاجة إلى الاعتماد على كيان آخر. يُرسم الكيان القوي بشكل مستطيل واحد في مخطط ER.

    أمثلة:
    • `Employee` (الموظف) لديه `EmployeeID` كمفتاح رئيسي.
    • `Department` (القسم) لديه `DepartmentID` كمفتاح رئيسي.
    • `Customer` (العميل) لديه `CustomerID` كمفتاح رئيسي.
  • الكيان الضعيف (Weak Entity):

    هو كيان يعتمد على كيان قوي آخر (يُسمى الكيان المهيمن أو المُعرف) لتمييز سجلاته بشكل فريد. أي أن الكيان الضعيف ليس لديه مفتاح رئيسي مستقل بذاته. يُرسم الكيان الضعيف بمستطيل مزدوج في مخطط ER، ويرتبط بالكيان القوي بعلاقة تحديد (Identifying Relationship) تُمثل بخط مزدوج.

    مثال:
    • `OrderItem` (عنصر الطلب) هو كيان ضعيف يعتمد على `Order` (الطلب). لا يمكن لـ `OrderItem` أن يوجد أو يتم تمييزه بشكل فريد إلا في سياق طلب معين. يمكن أن يكون `OrderItemID` مفتاحًا جزئيًا، ولكن لتحديد `OrderItem` بشكل كامل نحتاج إلى `OrderID` من الكيان القوي `Order`.
    • `Dependent` (المُعال/التابع) قد يكون كيانًا ضعيفًا يعتمد على `Employee` (الموظف)، حيث أن المُعال لا يُعرف إلا بوجود موظف يتبعه.
  • الكيانات المركبة / العلاقة الوسيطة (Composite / Associative Entities):

    هي كيانات تُستخدم لتمثيل علاقات معقدة (عادةً علاقة متعدد إلى متعدد Many-to-Many) بين كيانين أو أكثر من الكيانات الأساسية. هذه الكيانات المركبة غالباً ما تمتلك سمات خاصة بها بخلاف المفاتيح الخارجية التي تربطها بالكيانات الأساسية. تسمى أيضاً "كيانات ارتباطية" أو "الجداول الوسيطة" عند التحويل للنموذج العلائقي.

    مثال:
    • في نظام الجامعة، العلاقة بين `Student` (الطالب) و `Course` (المقرر الدراسي) هي علاقة متعدد إلى متعدد (الطالب يسجل في عدة مقررات، والمقرر يسجله عدة طلاب).
    • لتمثيل هذه العلاقة، يمكن إنشاء كيان مركب `Enrollment` (التسجيل). هذا الكيان سيحتوي على `StudentID` و`CourseID` (كمفتاح مركب)، وقد يحتوي على سمات إضافية مثل `EnrollmentDate` (تاريخ التسجيل) أو `Grade` (الدرجة).

6.4 السمات (Attributes)

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

أنواع السمات المختلفة في نموذج ER:

  • 1. سمة بسيطة (Simple Attribute):

    هي سمة غير قابلة للتجزئة إلى سمات أصغر ذات معنى. تُعتبر وحدة واحدة من المعلومات.

    مثال:
    • `Name` (اسم)
    • `Age` (العمر)
    • `EmployeeID` (معرف الموظف)
  • 2. سمة مركبة (Composite Attribute):

    هي سمة تتكون من جزأين أو أكثر من السمات البسيطة، كل جزء له معنى خاص به، ولكن تُعامل السمة المركبة ككل لتمثيل مفهوم واحد. تُظهر في مخطط ER كدائرة رئيسية تتفرع منها دوائر فرعية.

    مثال:
    • `Address` (العنوان) يمكن أن يكون سمة مركبة تتكون من: `Street` (الشارع)، `City` (المدينة)، `ZipCode` (الرمز البريدي).
    • `FullName` (الاسم الكامل) يمكن أن يتكون من: `FirstName` (الاسم الأول) + `MiddleName` (اسم الأب) + `LastName` (اسم العائلة).
  • 3. سمة مشتقة (Derived Attribute):

    هي سمة يمكن اشتقاق قيمتها أو حسابها من قيم سمات أخرى موجودة في قاعدة البيانات. لا تُخزن هذه السمة فعليًا في قاعدة البيانات، بل تُحسب عند الحاجة. تُرسم بدائرة متقطعة في مخطط ER.

    مثال:
    • `Age` (العمر) يمكن اشتقاقه من `DateOfBirth` (تاريخ الميلاد) الحالي.
    • `YearsOfService` (سنوات الخدمة) يمكن اشتقاقها من `HireDate` (تاريخ التوظيف) الحالي.
    • `TotalAmount` (إجمالي المبلغ) للطلب يمكن اشتقاقه من أسعار وكميات عناصر الطلب.
  • 4. سمة متعددة القيم (Multivalued Attribute):

    هي سمة يمكن أن تحتوي على أكثر من قيمة واحدة لنفس الكيان في نفس الوقت. تُرسم بدائرة مزدوجة في مخطط ER.

    مثال:
    • `PhoneNumbers` (أرقام الهواتف) لموظف واحد (قد يكون لديه رقم عمل، رقم منزل، رقم جوال).
    • `Degrees` (الشهادات العلمية) لشخص (قد يكون لديه بكالوريوس، ماجستير، دكتوراه).
    • `Skills` (المهارات) لموظف (مثل: برمجة، تحليل بيانات، إدارة مشاريع).

6.5 المفاتيح (Keys)

المفاتيح هي سمات أو مجموعات من السمات تلعب دورًا حاسمًا في تمييز الكيانات والعلاقات بينها، وتضمن سلامة البيانات.

  • المفتاح الرئيسي (Primary Key – PK):

    هو سمة (أو مجموعة من السمات) تُعرف كل كيان (سجل) بشكل فريد ضمن مجموعة الكيان الخاصة به. يجب أن تكون قيمته فريدة وغير فارغة (NOT NULL). يُختار من بين المفاتيح المحتملة (Candidate Keys).

    مثال:
    • `EmployeeID` (معرف الموظف) لكل موظف.
    • `StudentID` (معرف الطالب) لكل طالب.
    • `ISBN` (رقم الكتاب المعياري الدولي) لكل كتاب.
  • المفتاح المحتمل (Candidate Key):

    هي أي سمة (أو مجموعة من السمات) داخل الكيان التي لديها القدرة على أن تكون مفتاحًا رئيسيًا؛ أي أنها فريدة وغير قابلة للتكرار ويمكنها تحديد كل سجل بشكل فريد. من بين جميع المفاتيح المحتملة، يتم اختيار واحد ليكون المفتاح الرئيسي.

    مثال: في جدول "الموظفين"، قد يكون `EmployeeID` مفتاحًا محتملاً، وقد يكون `SSN` (رقم الضمان الاجتماعي) أيضًا مفتاحًا محتملاً إذا كان فريدًا. نختار أحدهما ليكون المفتاح الرئيسي.
  • المفتاح البديل (Alternate Key):

    هو أي مفتاح محتمل (Candidate Key) لم يتم اختياره ليكون المفتاح الرئيسي. لا يزال فريدًا ويمكن استخدامه لتعريف السجلات، ولكنه لا يُستخدم كمفتاح أساسي للربط.

    مثال: إذا كان `EmployeeID` هو المفتاح الرئيسي، فإن `SSN` (إذا كان فريدًا) يمكن أن يكون مفتاحًا بديلاً.
  • المفتاح الخارجي (Foreign Key – FK):

    هو سمة (أو مجموعة من السمات) في كيان ما تشير إلى المفتاح الرئيسي في كيان آخر، لإنشاء علاقة بين الكيانين. يضمن التكامل المرجعي بين البيانات في الجداول المرتبطة.

    مثال:
    • `DepartmentID` في جدول `Employee` هو مفتاح خارجي يربط الموظف بقسمه في جدول `Department`.
    • `CustomerID` في جدول `Order` هو مفتاح خارجي يربط الطلب بالعميل في جدول `Customer`.
  • المفتاح الجزئي (Partial Key / Discriminator):

    يُستخدم المفتاح الجزئي لتمييز الكيانات داخل مجموعة كيان ضعيفة (Weak Entity Set). بما أن الكيان الضعيف ليس لديه مفتاح رئيسي مستقل، فإن المفتاح الجزئي يميز الكيانات الضعيفة فقط بالنسبة للكيان القوي الذي تعتمد عليه. يُرسم بخط متقطع تحت السمة في مخطط ER.

    مثال: في كيان `Dependent` (التابع/المُعال) الضعيف الذي يعتمد على كيان `Employee` (الموظف)، قد يكون `DependentName` (اسم التابع) مفتاحًا جزئيًا. لإعطاء تابع هوية فريدة تمامًا، نحتاج إلى الجمع بين `EmployeeID` (من الكيان القوي) و`DependentName` (المفتاح الجزئي).

6.6 مصطلحات أساسية (Key Terms)

المصطلح (الإنجليزية) المصطلح (العربية) التعريف
Entity كيان شيء (شخص، مكان، حدث، مفهوم) له وجود مستقل ويمتلك سمات، ويُمثل البيانات في النظام.
Entity Set مجموعة كيان مجموعة من الكيانات المتماثلة في الخصائص (أي من نفس النوع).
Entity Type نوع الكيان تصنيف يحدد الهيكل (السمات المشتركة) لمجموعة كيانات معينة.
Existence Dependency ارتباط الوجود كون كيان لا يمكن أن يوجد منطقيًا إلا بوجود كيان آخر مرتبط به.
Strong Entity كيان قوي / مستقل كيان له مفتاح رئيسي يميزه بذاته ولا يعتمد على كيان آخر في هويته.
Weak Entity كيان ضعيف كيان يعتمد على كيان قوي آخر (مُعرف) لتمييز سجلاته، وليس له مفتاح رئيسي مستقل.
Composite Entity / Associative Entity كيان مركب / ارتباطي كيان يُستخدم لتمثيل علاقة معقدة (متعدد إلى متعدد) بين كيانين أو أكثر، ويمتلك سمات خاصة به.
Attribute سمة خاصية أو وصف يصف الكيان أو العلاقة (يُقابل العمود في الجدول).
Simple Attribute سمة بسيطة سمة غير قابلة للتجزئة (مثل الاسم).
Composite Attribute سمة مركبة سمة تتكون من سمات أبسط ذات معنى (مثل العنوان).
Derived Attribute سمة مشتقة سمة يمكن اشتقاق قيمتها من بيانات أخرى (مثل العمر).
Multivalued Attribute سمة متعددة القيم سمة يمكن أن تحتوي على أكثر من قيمة لنفس الكيان (مثل أرقام الهواتف).
Primary Key (PK) المفتاح الرئيسي مجموعة من السمات تُعرف كل سجل بشكل فريد في الجدول.
Candidate Key مفتاح محتمل أي سمة أو مجموعة سمات يمكن أن تعمل كمفتاح رئيسي لتمييز السجلات بشكل فريد.
Alternate Key المفتاح البديل أي مفتاح محتمل لم يتم اختياره ليكون المفتاح الرئيسي.
Foreign Key (FK) المفتاح الخارجي سمة (أو مجموعة سمات) في جدول تشير إلى مفتاح رئيسي في جدول آخر، لربط البيانات.
Partial Key / Discriminator المفتاح الجزئي سمة تُستخدم لتمييز الكيانات داخل كيان ضعيف، ولكنها لا تُميزها بشكل فريد بمفردها.

ملخص الوحدة

  • نموذج الكيان والعلاقة (ER Model) هو أداة قوية لنمذجة البيانات المفاهيمية.
  • يتكون النموذج من الكيانات (Entities) التي تُمثل الأشياء، والسمات (Attributes) التي تصف خصائصها.
  • الكيانات يمكن أن تكون قوية (Strong) إذا كان لها مفتاح رئيسي مستقل، أو ضعيفة (Weak) إذا كانت تعتمد على كيان آخر في هويتها.
  • تُستخدم المفاتيح (Keys) مثل المفتاح الرئيسي والخارجي والمفتاح الجزئي لتمييز الكيانات وربطها ببعضها البعض.
  • فهم هذه المفاهيم ضروري لتحويل المتطلبات المعقدة إلى تصميم قاعدة بيانات منطقي واضح.

6.7 تمارين مقترحة (Suggested Exercises)

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

  1. صمم مخطط ER مبسط لنظام مكتبة. يجب أن يشمل الكيانات التالية: كتاب، عضو، وإعارة. حدد السمات الرئيسية لكل كيان وأنواع المفاتيح التي تعتقد أنها مناسبة.
  2. قدم مثالين على كيانات قوية (Strong Entities) ومثالين على كيانات ضعيفة (Weak Entities) من أي نظام (على سبيل المثال، نظام بنك، نظام مستشفى، نظام تسجيل مركبات)، واشرح سبب تصنيفها بهذا الشكل.
  3. بالنسبة لـ كيان "الطالب"، حدد سمة بسيطة، سمة مركبة، سمة مشتقة، وسمة متعددة القيم. وضح كيف ستمثل كل واحدة في مخطط ER (اسم السمة فقط).
  4. في سياق نظام طلبات العملاء، صمم علاقة بين كيان "الطلب" وكيان "العميل". حدد نوع العلاقة، وحدد المفتاح الخارجي المطلوب لربط الكيانين بشكل صحيح.
  5. ارسم مخططًا بسيطًا يوضح الارتباط بين الكيانات: `Employee` (الموظف)، `Department` (القسم)، و`Project` (المشروع). افترض أن الموظفين يعملون في أقسام، وأن الأقسام تدير مشاريع، والموظفين يمكن أن يعملوا على مشاريع (علاقة متعدد إلى متعدد).
  6. ما هو الفرق بين المفتاح الرئيسي (Primary Key) و المفتاح الجزئي (Partial Key)؟ ومتى يتم استخدام كل منهما؟