أسس قواعد البيانات › تمارين النموذج المفاهيمي للبيانات 6 / 24 السابق التالي

نموذج البيانات المفاهيمي: تمارين

لتكن القوة معك. —Star Wars

تتيح لك التمارين أدناه التدريب على إنشاء نماذج البيانات المفاهيمية (conceptual data models). ولكل تمرين يُقدَّم نموذج حل. ومن الممكن أن يكون لديك حل مختلف وصحيح بالقدر نفسه. وإذا كانت لديك أسئلة عن حلك الخاص، فلا تتردد في التواصل معنا!

تمرين 1: نادي الشباب: أنواع الكيانات

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

اقرأ الوصف أدناه بتمعّن وحاول تحديد أنواع الكيانات.

يريد نادي شباب إنشاء قاعدة بيانات لدعم إدارة عضويته وتخطيط أنشطته. وعند التسجيل الأولي يُمنح كل عضو رقم عضوية فريد. وتُسجَّل معلومات مثل الاسم والاسم الأول والعنوان وعنوان البريد الإلكتروني والجنس وتاريخ الميلاد.

وعلى أعضائنا إعادة التسجيل كل عام، لذا يكون التسجيل صالحًا لمدة عام واحد. وتُدفع رسوم العضوية أيضًا سنويًا لتغطية تكاليف التأمين مثلًا. وهذا المبلغ مختلف كل عام، والمهم معرفة أي الأعضاء دفعوا رسوم تسجيلهم وأيّهم لم يدفعها بعد. وفي لحظة إجراء التسجيل، يُوضع العضو في فئة عمرية معينة، مثل "6 إلى 9 سنوات" أو "10 إلى 12 سنة"... وتُحدَّد الفئة العمرية بناءً على عمر العضو عند بداية العام الجديد.

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

وسيكون لكل مجموعة عضو معيّن يتولّى دور "القائد" للمجموعة. وإضافة إلى ذلك، قد يكون لكل مجموعة "قادة مساعدون" إضافيون، وهم عضو أو أكثر يدعمون القائد "الرئيسي". ومن الواضح أنه لا ينبغي أن يتطابق عمر القادة مع الفئة العمرية للمجموعة، إذ سيكون ذلك غير لائق بعض الشيء. وتُعاد تحديد القيادة كل عام، وبالتالي تسري مدة حياة المجموعة. ويمكن للأعضاء تولّي قيادة مجموعة واحدة على الأكثر، وينطبق ذلك على "القادة" و"القادة المساعدين" معًا.

وينظّم القادة أنشطة معينة لمجموعاتهم تشكّل معًا الجدول السنوي للمجموعة. ويُجدول كل نشاط في تاريخ ومكان معينين. ويمكن جدولة النشاط نفسه لعدة مجموعات في الوقت نفسه.

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

وتقع مسؤولية تنسيق هذه الأنشطة على عاتق "القائد". وسيُبلَّغ بعنوان البريد الإلكتروني للقائد حتى يستطيع الأعضاء وذووهم طرح الأسئلة.

والغرض من النظام هو تتبّع سجلات العضوية حيث نريد أن نكون قادرين على الإجابة عن الأسئلة التالية:

  • ما المجموعات التي لدينا؟
  • ما الأعضاء الذين لدينا هذا العام؟
  • ما الأعضاء الذين كانوا لدينا العام الماضي؟
  • ما الأعضاء الذين لدينا من فئة عمرية معينة؟
  • ما الأعضاء الذين دفعوا رسوم التسجيل؟
  • أي الأعضاء في أي مجموعة؟
  • ما القيادة التي لدينا؟
  • من يقود أي مجموعة؟
  • ما الأنشطة المخطط لها لمجموعة معينة؟
  • من المسؤول عن تنسيق الأنشطة المخطط لها؟
  • متى تُخطط الأنشطة المختلفة؟
  • أين ستُقام الأنشطة؟

الحل

الأسماء المرشّحة لتكون نوع كيان هي: Member وRegistration وAge Group وGroup وActivity وActivity Type.

الحل للتمرين Conceptual.1

تمرين 2: نادي الشباب: الخواص

عُد إلى التمرين conceptual.1 وحدّد لكل من أنواع الكيانات الخواص التي تجدها في النص. وينبغي أن تتيح لك الخواص وصف الكيانات. واسأل نفسك الأسئلة التالية:

  • ما الخصائص التي ينبغي أن أتبّعها لكل من أنواع الكيانات؟
  • ما المعلومات اللازمة لتطبيقي؟ هل أستطيع إيجاد هذه المعلومات في الخواص؟
  • هل تنقص أنواع كيانات معينة لهيكلة البيانات اللازمة؟ هل يصعب وضع خواص معينة مع أنواع الكيانات التي حدّدتها؟
  • هل توجد أنواع كيانات معينة لها خاصية واحدة فقط؟ هل نحن متأكدون أن هذا نوع كيان بخاصية واحدة، أم خاصية لنوع كيان آخر؟ فمثلًا، إذا أردنا تتبّع عمر شخص ما، فيمكننا تحديد نوع كيان "Age" بخاصية "Age". ومن جهة أخرى، قد تكون هذه ببساطة خاصية لنوع الكيان "Person"، دون أن نجعل نموذج بياناتنا معقدًا بلا داعٍ.

وسّع مخطط الكيانات والعلاقات (ERD) لديك في draw.io بالخواص التي توصلت إليها. (نصيحة: يمكنك تكرار علامة تبويب في diagrams.net. وبذلك تستطيع البناء على إجابة سؤال سابق، دون فقدان إجابة السؤال الأول).

الحل

فيما يلي نظرة عامة على الخواص المختلفة التي حُدِّدت لكل من أنواع الكيانات:

الحل للتمرين Conceptual.2

تمرين 3: نادي الشباب: العلاقات

ابنِ على نتائج التمرين conceptual.2 واستكشف العلاقات المختلفة القائمة بين أنواع الكيانات. وصِف العلاقات باسم واضح وحدّد التعددية (cardinality) لكل من أنواع الكيانات المشاركة في العلاقة. واطرح الأسئلة التالية أثناء ذلك:

  • هل تتيح العلاقات إدراج جميع الروابط والمعلومات؟
  • هل جميع أنواع الكيانات متصلة؟

وسّع مخطط الكيانات والعلاقات لديك في diagrams.net بالعلاقات التي توصلت إليها.

الحل

يحتوي مخطط الكيانات والعلاقات أدناه على العلاقات مع تعددياتها.

الحل للتمرين Conceptual.3

تمرين 4: نادي الشباب: أنواع الخواص

عُد إلى نتيجة التمرين conceptual.3 وحسّن نتيجتك بأنواع الخواص الصحيحة. هل يطابق تدوين خواصك نوعها؟ هل توجد علاقات معينة لها خاصية؟

وسّع مخطط الكيانات والعلاقات لديك في diagrams.net بالعلاقات التي توصلت إليها.

الحل

الحل للتمرين Conceptual.4

تمرين 5: شركة تأجير السيارات

في التمارين التالية، سنرسم مخطط كيانات وعلاقات كاملًا على عدد من الخطوات. وتضيف كل خطوة قدرًا من المنطق و/أو التعقيد (النص الأزرق المائل). وصِف الكيانات والخواص والعلاقات بوضوح. ولكل من العلاقات، بيّن بوضوح تعددية كل من أنواع الكيانات المشاركة. وبما أن المهام المختلفة تُبنى على بعضها، يمكنك تكرار علامة تبويب في diagrams.net. ويتيح لك ذلك الاحتفاظ بنظرة عامة على عملك والتمييز بين الخطوات المختلفة.

الخطوة 1

تؤجّر شركة لتأجير السيارات سيارات للعملاء. وعند أول عملية تأجير، يُمنح العملاء رقم عميل. ولكل عميل نخزّن أيضًا الاسم والاسم الأول والعنوان وعنوان البريد الإلكتروني ورقم الهاتف المحمول. ولكل سيارة نحتفظ بسجل لعلامتها التجارية وطرازها ولوحة أرقامها ورقم هيكلها. وينبغي أن يولّد نظامنا سجلًا لـ:

  • العملاء الذين يؤجّرون سيارة حاليًا
  • السيارات ومع أي العملاء هي حاليًا
  • السيارات وما إذا كانت متاحة للتأجير التالي

الحل

الحل للتمرين Conceptual.5.1

الخطوة 2

النص الأزرق المائل هو امتداد للتمرين السابق. وتُضاف متطلبات إضافية في كل مرة.

تؤجّر شركة لتأجير السيارات سيارات للعملاء. ويمكن للعملاء حجز نوع من السيارات مسبقًا، مع بيان موعد الاستلام المفضل وموعد الإعادة المفضل. وعند أول عملية تأجير، يُمنح العملاء رقم عميل. ولكل عميل نخزّن أيضًا الاسم والاسم الأول والعنوان وعنوان البريد الإلكتروني ورقم الهاتف المحمول. ولكل سيارة نحتفظ بسجل لعلامتها التجارية وطرازها ولوحة أرقامها ورقم هيكلها. وينبغي أن يولّد نظامنا سجلًا لـ:

  • الحجوزات التي أجراها العملاء
  • العملاء الذين يؤجّرون سيارة حاليًا
  • السيارات ومع أي العملاء هي حاليًا
  • السيارات وما إذا كانت متاحة للتأجير التالي

نصيحة: لمن لم يؤجّر سيارة من قبل قط، قم بزيارة إحدى شركات تأجير السيارات على الإنترنت. واسأل نفسك: ما الذي أحجزه فعليًا؟

الحل

الحل للتمرين Conceptual.5.2

الخطوة 3

تؤجّر شركة لتأجير السيارات سيارات للعملاء. ويمكن للعملاء حجز نوع من السيارات مسبقًا، مع بيان موعد الاستلام المفضل وموعد الإعادة المفضل. وعند أول عملية تأجير، يُمنح العملاء رقم عميل. ولكل عميل نخزّن أيضًا الاسم والاسم الأول والعنوان وعنوان البريد الإلكتروني ورقم الهاتف المحمول. ولكل سيارة نحتفظ بسجل لعلامتها التجارية وطرازها ولوحة أرقامها ورقم هيكلها. وينبغي أن يولّد نظامنا سجلًا لـ:

  • الحجوزات التي أجراها العملاء
  • العملاء الذين يؤجّرون سيارة حاليًا
  • السيارات ومع أي العملاء هي حاليًا
  • السيارات ومتى تكون متاحة للتأجير التالي
  • جميع السيارات التي أجّرها عميل معين في الماضي
  • جميع العملاء الذين أجّروا سيارة معينة في الماضي

الحل

الحل للتمرين Conceptual.5.3

تمرين 6: إدارة الطلاب

في التمارين التالية، سنرسم مخطط كيانات وعلاقات كاملًا على عدد من الخطوات. وتضيف كل خطوة قدرًا من المنطق و/أو التعقيد (النص الأزرق المائل). وصِف الكيانات والخواص والعلاقات بوضوح. ولكل من العلاقات، بيّن بوضوح تعددية كل من أنواع الكيانات المشاركة. وبما أن المهام المختلفة تُبنى على بعضها، يمكنك تكرار علامة تبويب في diagrams.net. ويتيح لك ذلك الاحتفاظ بنظرة عامة على عملك والتمييز بين الخطوات المختلفة.

الخطوة 1

يمكن للطالب أن يدرس مقررًا واحدًا أو أكثر، ويُدرَّس كل مقرر على يد محاضر واحد. ويُدرّس المحاضرون للطلاب. وتُخزَّن للطالب بيانات الاسم والاسم الأول والعنوان والعمر. وتُخزَّن للمحاضر أيضًا بيانات الاسم والاسم الأول ومجال الخبرة وعدد سنوات الخدمة. ولكل مقرر نخزّن رمز المقرر واسمه. ويجب أن نكون قادرين على تقديم نظرة عامة للسنة الدراسية الحالية.

الحل

الحل للتمرين Conceptual.6.1

الخطوة 2

يمكن للطالب أن يدرس مقررًا واحدًا أو أكثر، ويُدرَّس كل مقرر على يد محاضر واحد. ويُدرّس المحاضرون للطلاب. ونريد أن نكون قادرين على توليد قائمة نحصل فيها على نظرة عامة عن الطلاب الذين يدرّسهم أي المحاضرين. وتُخزَّن للطالب بيانات الاسم والاسم الأول والعنوان والعمر. وتُخزَّن للمحاضر أيضًا بيانات الاسم والاسم الأول ومجال الخبرة وعدد سنوات الخدمة. ولكل مقرر نخزّن رمز المقرر واسمه. ويجب أن نكون قادرين على تقديم نظرة عامة للسنة الدراسية الحالية.

الحل

يمكننا توليد القائمة بناءً على النتيجة السابقة. ولا حاجة إلى إضافة أي شيء.

الخطوة 3

يمكن للطالب أن يدرس مقررًا واحدًا أو أكثر، ويُدرَّس كل مقرر على يد محاضر واحد أو أكثر. ويُدرّس المحاضرون للطلاب. ونريد أن نكون قادرين على توليد قائمة نحصل فيها على نظرة عامة عن الطلاب الذين يدرّسهم أي المحاضرين. وتُخزَّن للطالب بيانات الاسم والاسم الأول والعنوان والعمر. وتُخزَّن للمحاضر أيضًا بيانات الاسم والاسم الأول ومجال الخبرة وعدد سنوات الخدمة. ولكل مقرر نخزّن رمز المقرر واسمه. ويجب أن نكون قادرين على تقديم نظرة عامة للسنة الدراسية الحالية.

الحل

الحل للتمرين Conceptual.6.3

الخطوة 4

يمكن للطالب أن يدرس مقررًا واحدًا أو أكثر، ويُنسَّق كل مقرر على يد محاضر واحد على الأكثر لكنه يُدرَّس على يد محاضر واحد أو أكثر. ويُدرّس المحاضرون للطلاب. ونريد أن نكون قادرين على توليد قائمة نحصل فيها على نظرة عامة عن الطلاب الذين يدرّسهم أي المحاضرين. وتُخزَّن للطالب بيانات الاسم والاسم الأول والعنوان والعمر. وتُخزَّن للمحاضر أيضًا بيانات الاسم والاسم الأول ومجال الخبرة وعدد سنوات الخدمة. ولكل مقرر نخزّن رمز المقرر واسمه. ويجب أن نكون قادرين على تقديم نظرة عامة للسنة الدراسية الحالية.

الحل

الحل للتمرين Conceptual.6.4

الخطوة 5

يمكن للطالب أن يدرس مقررًا واحدًا أو أكثر، ويُنسَّق كل مقرر على يد محاضر واحد لكنه يُدرَّس على يد محاضر واحد أو أكثر. ويُدرّس المحاضرون للطلاب. ونريد أن نكون قادرين على توليد قائمة نحصل فيها على نظرة عامة عن الطلاب الذين يدرّسهم أي المحاضرين. وتُخزَّن للطالب بيانات الاسم والاسم الأول والعنوان والعمر. وتُخزَّن للمحاضر أيضًا بيانات الاسم والاسم الأول ومجالات الخبرة التي يساهم فيها وعدد سنوات الخدمة. ولكل مقرر نخزّن رمز المقرر واسمه. ويجب أن نكون قادرين على تقديم نظرة عامة للسنة الدراسية الحالية.

الحل

يمكنك حل ذلك بطريقتين: من جهة بنوع كيان "Field of Expertise"، ومن جهة أخرى بخاصية متعددة القيم "Field of Expertise". وكلا الحلين صحيح.

الحل للتمرين Conceptual.6.5.a الحل للتمرين Conceptual.6.5.b

الخطوة 6

يمكن للطالب أن يدرس مقررًا واحدًا أو أكثر، ويُنسَّق كل مقرر على يد محاضر واحد لكنه يُدرَّس على يد محاضر واحد أو أكثر. ويُدرّس المحاضرون للطلاب. ونريد أن نكون قادرين على توليد قائمة نحصل فيها على نظرة عامة عن الطلاب الذين يدرّسهم أي المحاضرين. وتُخزَّن للطالب بيانات الاسم والاسم الأول والعنوان والعمر. وتُخزَّن للمحاضر أيضًا بيانات الاسم والاسم الأول ومجالات الخبرة التي يساهم فيها وعدد سنوات الخدمة. ولكل مقرر نخزّن رمز المقرر واسمه. ولكل مقرر يدرسه طالب، نتتبّع النقاط التي حصل عليها الطالب في هذا المقرر. ويجب أن نكون قادرين على تقديم نظرة عامة للسنة الدراسية الحالية.

الحل

الحل للتمرين Conceptual.6.6

الخطوة 7

يمكن للطالب أن يدرس مقررًا واحدًا أو أكثر، ويُنسَّق كل مقرر على يد محاضر واحد لكنه يُدرَّس على يد محاضر واحد أو أكثر. ويُدرّس المحاضرون للطلاب. ونريد أن نكون قادرين على توليد قائمة نحصل فيها على نظرة عامة عن الطلاب الذين يدرّسهم أي المحاضرين. وتُخزَّن للطالب بيانات الاسم والاسم الأول والعنوان والعمر. وتُخزَّن للمحاضر أيضًا بيانات الاسم والاسم الأول ومجالات الخبرة التي يساهم فيها وعدد سنوات الخدمة. ولكل مقرر نخزّن رمز المقرر واسمه. ولكل مقرر يدرسه طالب، نتتبّع النقاط التي حصل عليها الطالب في هذا المقرر. ويختار الطالب تدريبًا ضمن مجال خبرة. ويجب أن نكون قادرين على تقديم نظرة عامة للسنة الدراسية الحالية.

الحل

الحل للتمرين Conceptual.6.7

الخطوة 8

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

الحل

الحل للتمرين Conceptual.6.8

الخطوة 9

يمكن للطالب أن يدرس مقررًا واحدًا أو أكثر، ويُنسَّق كل مقرر على يد محاضر واحد لكنه يُدرَّس على يد محاضر واحد أو أكثر. ويُدرّس المحاضرون للطلاب. ونريد أن نكون قادرين على توليد قائمة نحصل فيها على نظرة عامة عن الطلاب الذين يدرّسهم أي المحاضرين. وتُخزَّن للطالب بيانات الاسم والاسم الأول والعنوان والعمر. وتُخزَّن للمحاضر أيضًا بيانات الاسم والاسم الأول ومجالات الخبرة التي يساهم فيها وعدد سنوات الخدمة. ولكل مقرر نخزّن رمز المقرر واسمه. ولكل مقرر يدرسه طالب، نتتبّع النقاط التي حصل عليها الطالب في هذا المقرر. ويختار الطالب تدريبًا ضمن مجال خبرة يُعيَّن له محاضر مرشدًا. وينبغي أن يطابق مجال خبرة التدريب مجال خبرة المرشد. (هل من الممكن إضافة قيود إلى مخطط الكيانات والعلاقات؟) ويجب أن نكون قادرين على تقديم نظرة عامة للسنة الدراسية الحالية.

الحل

لا يمكن إضافة شروط إلى مخطط الكيانات والعلاقات. وبناءً على ذلك تبقى النتيجة دون تغيير.

الخطوة 10

يمكن للطالب أن يدرس مقررًا واحدًا أو أكثر، ويُنسَّق كل مقرر على يد محاضر واحد لكنه يُدرَّس على يد محاضر واحد أو أكثر. ويُدرّس المحاضرون للطلاب. ونريد أن نكون قادرين على توليد قائمة نحصل فيها على نظرة عامة عن الطلاب الذين يدرّسهم أي المحاضرين. وتُخزَّن للطالب بيانات الاسم والاسم الأول والعنوان والعمر. وتُخزَّن للمحاضر أيضًا بيانات الاسم والاسم الأول ومجالات الخبرة التي يساهم فيها وعدد سنوات الخدمة. ولكل مقرر نخزّن رمز المقرر واسمه. ويمكن تقديم وحدة مقرر في حرمات جامعية مختلفة. ولكل حرم جامعي اسم وعنوان. ولكل مقرر يدرسه طالب، نتتبّع النقاط التي حصل عليها الطالب في هذا المقرر. ويختار الطالب تدريبًا ضمن مجال خبرة يُعيَّن له محاضر مرشدًا. وينبغي أن يطابق مجال خبرة التدريب مجال خبرة المرشد. ويجب أن نكون قادرين على تقديم نظرة عامة للسنة الدراسية الحالية.

الحل

الحل للتمرين Conceptual.6.10

الخطوة 11

يمكن للطالب أن يدرس مقررًا واحدًا أو أكثر، ويُنسَّق كل مقرر على يد محاضر واحد لكنه يُدرَّس على يد محاضر واحد أو أكثر. ويُدرّس المحاضرون للطلاب. ونريد أن نكون قادرين على توليد قائمة نحصل فيها على نظرة عامة عن الطلاب الذين يدرّسهم أي المحاضرين. وتُخزَّن للطالب بيانات الاسم والاسم الأول والعنوان والعمر. وتُخزَّن للمحاضر أيضًا بيانات الاسم والاسم الأول ومجالات الخبرة التي يساهم فيها وعدد سنوات الخدمة. ولكل مقرر نخزّن رمز المقرر واسمه. وتُبنى بعض المقررات على مقررات قائمة، ولا يمكن دراستها إلا إذا درس الطالب ذلك المقرر أولًا. وقد يفتح المقرر الطريق إلى عدة مقررات. وقد يتطلب المقرر أيضًا أن تكون عدة مقررات أخرى قد دُرست سابقًا. ويمكن تقديم وحدة مقرر في حرمات جامعية مختلفة. ولكل حرم جامعي اسم وعنوان. ولكل مقرر يدرسه طالب، نتتبّع النقاط التي حصل عليها الطالب في هذا المقرر. ويختار الطالب تدريبًا ضمن مجال خبرة يُعيَّن له محاضر مرشدًا. وينبغي أن يطابق مجال خبرة التدريب مجال خبرة المرشد. ويجب أن نكون قادرين على تقديم نظرة عامة للسنة الدراسية الحالية.

الحل

الحل للتمرين Conceptual.6.11

الخطوة 12

يمكن للطالب أن يدرس مقررًا واحدًا أو أكثر، ويُنسَّق كل مقرر على يد محاضر واحد لكنه يُدرَّس على يد محاضر واحد أو أكثر. ويُدرّس المحاضرون للطلاب. ونريد أن نكون قادرين على توليد قائمة نحصل فيها على نظرة عامة عن الطلاب الذين يدرّسهم أي المحاضرين. وتُخزَّن للطالب بيانات الاسم والاسم الأول والعنوان والعمر. وتُخزَّن للمحاضر أيضًا بيانات الاسم والاسم الأول ومجالات الخبرة التي يساهم فيها وعدد سنوات الخدمة. ولكل مقرر نخزّن رمز المقرر واسمه. وتُبنى بعض المقررات على مقررات قائمة، ولا يمكن دراستها إلا إذا درس الطالب ذلك المقرر أولًا. وقد يفتح المقرر الطريق إلى عدة مقررات. وقد يتطلب المقرر أيضًا أن تكون عدة مقررات أخرى قد دُرست سابقًا. ويمكن تقديم وحدة مقرر في حرمات جامعية مختلفة. ولكل حرم جامعي اسم وعنوان. ولكل مقرر يدرسه طالب، نتتبّع النقاط التي حصل عليها الطالب في هذا المقرر. ويختار الطالب تدريبًا ضمن مجال خبرة يُعيَّن له محاضر مرشدًا. وينبغي أن يطابق مجال خبرة التدريب مجال خبرة المرشد. ويجب أن نكون قادرين على تقديم نظرة عامة للسنة الدراسية الحالية ولجميع السنوات الدراسية السابقة.

الحل

الحل للتمرين Conceptual.6.12

تمرين 7: المكتبة

في التمارين التالية، سنرسم مخطط كيانات وعلاقات كاملًا على عدد من الخطوات. وتضيف كل خطوة قدرًا من المنطق و/أو التعقيد (النص الأزرق المائل). وصِف الكيانات والخواص والعلاقات بوضوح. ولكل من العلاقات، بيّن بوضوح تعددية كل من أنواع الكيانات المشاركة. وبما أن المهام المختلفة تُبنى على بعضها، يمكنك تكرار علامة تبويب في diagrams.net. ويتيح لك ذلك الاحتفاظ بنظرة عامة على عملك والتمييز بين الخطوات المختلفة.

الخطوة 1

تُعير مكتبة كتبًا. ويُحدَّد كل كتاب برقم ISBN وعنوان ومؤلف واحد أو أكثر. وقد تكون لدينا عدة نسخ من كتاب معين، ولذلك نمنح كل كتاب رقم نسخة. ويتيح لنا الرقم ISBN ورقم النسخة تحديد كل كتاب تحديدًا فريدًا. ولاستعارة كتاب، يجب أن تكون عضوًا في المكتبة. وعندما يستعير عضو كتابًا للمرة الأولى، يحتاج إلى التسجيل. وعند تسجيل العضو، نستلم الاسم والاسم الأول والعنوان وعنوان البريد الإلكتروني ورقم الهاتف المحمول. ثم نمنحه أيضًا رقم عضوية. وتريد المكتبة معرفة الكتب المستعارة حاليًا. وعندما لا يُعاد كتاب في الوقت المحدد، تُسجَّل غرامة. ونريد أن نكون قادرين على توليد نظرة عامة على الغرامات المستحقة والمبلغ المتوجب.

الحل

يمكننا إضافة 3 علاقات ثنائية بين Member وFine وBook.

الحل للتمرين Conceptual.7.1.a

غير أن ذلك قد يؤدي إلى مواقف غريبة في الواقع. فلنفترض أن مستخدمة تُدعى Emma استعارت الكتاب 1 والكتاب 2. فقد تتلقى حينئذ غرامة على الكتاب 3 رغم أنها لم تستعره. وهذا غير صحيح. وسنستخدم بدلًا من ذلك علاقة ثلاثية، بحيث ترتبط الغرامة بفعل الاستعارة.

الحل للتمرين Conceptual.7.1.b

الخطوة 2

تُعير مكتبة كتبًا. غير أن لدينا أيضًا كتبًا أثمن من أن تُعار. فلا يمكن الرجوع إليها إلا داخل المكتبة. ويُحدَّد كل كتاب برقم ISBN وعنوان ومؤلف واحد أو أكثر. وقد تكون لدينا عدة نسخ من كتاب معين، ولذلك نمنح كل كتاب رقم نسخة. ويتيح لنا الرقم ISBN ورقم النسخة تحديد كل كتاب تحديدًا فريدًا. ولاستعارة كتاب، يجب أن تكون عضوًا في المكتبة. وعندما يستعير عضو كتابًا للمرة الأولى، يحتاج إلى التسجيل. وعند تسجيل العضو، نستلم الاسم والاسم الأول والعنوان وعنوان البريد الإلكتروني ورقم الهاتف المحمول. ثم نمنحه أيضًا رقم عضوية. وتريد المكتبة معرفة الكتب المستعارة حاليًا. وعندما لا يُعاد كتاب في الوقت المحدد، تُسجَّل غرامة. ونريد أن نكون قادرين على توليد نظرة عامة على الغرامات المستحقة والمبلغ المتوجب.

الحل

الحل للتمرين Conceptual.7.2

الخطوة 3

تُعير مكتبة كتبًا. غير أن لدينا أيضًا كتبًا أثمن من أن تُعار. فلا يمكن الرجوع إليها إلا داخل المكتبة. ويُحدَّد كل كتاب برقم ISBN وعنوان ومؤلف واحد أو أكثر. وقد تكون لدينا عدة نسخ من كتاب معين، ولذلك نمنح كل كتاب رقم نسخة. ويتيح لنا الرقم ISBN ورقم النسخة تحديد كل كتاب تحديدًا فريدًا. ولاستعارة كتاب، يجب أن تكون عضوًا في المكتبة. وعندما يستعير عضو كتابًا للمرة الأولى، يحتاج إلى التسجيل. وعند تسجيل العضو، نستلم الاسم والاسم الأول والعنوان وعنوان البريد الإلكتروني ورقم الهاتف المحمول. ثم نمنحه أيضًا رقم عضوية. وتريد المكتبة معرفة الكتب المستعارة حاليًا. وعندما لا يُعاد كتاب في الوقت المحدد، تُسجَّل غرامة. ونريد أن نكون قادرين على توليد نظرة عامة على الغرامات المستحقة والمبلغ المتوجب. ولا يريد أمين المكتبة نظرة عامة على الكتب المستعارة حاليًا فحسب، بل يريد أيضًا معرفة الكتب الأكثر أو الأقل استعارة، والكتب الأكثر أو الأقل مراجعة، والأعضاء الذين يعيدون الكتب متأخرين في أغلب الأحيان.

الحل

الحل للتمرين Conceptual.7.3

تمرين 8: جمعية ألعاب الطاولة

أنشئ مخطط كيانات وعلاقات للوصف التالي. وبيّن بوضوح تعددية العلاقات وخواص أنواع الكيانات.

تريد جمعية لألعاب الطاولة تطوير تطبيق لدعم جمعيتها. وتنظّم الجمعية دورات لأعضائها المختلفين. وتدور الدورة حول لعبة طاولة محددة. وعادةً ما يمنحون كل دورة اسمًا طريفًا للتواصل بسهولة مع أعضائها. والهدف هو إعلان أحد الأعضاء فائزًا بالدورة. ويسجّل الأعضاء أسماءهم في الدورة. وبناءً على التسجيلات تُنظَّم المباريات. وتُجدول كل مباراة في تاريخ ووقت محددين. وتُقام الدورات في مركز الجمعية. ولكل طاولة رقم. وبالنسبة للمباريات يتتبّعون الطاولة التي تُجدول عليها المباراة. وتُلعب كل مباراة من عدد من أعضاء الجمعية. وفي كل مباراة يتولّى أحد الأعضاء دور قائد اللعبة. وهذا الشخص مسؤول عن تسجيل النقاط الفردية للاعبين. ويُسجَّل الأعضاء في النظام حتى يستطيعوا المشاركة في المباريات وتولّي دور قائد اللعبة. ولكل عضو يريدون الاحتفاظ بالاسم وعنوان البريد الإلكتروني وتاريخ الميلاد. ويمكن للأعضاء تقديم أعضاء آخرين. ولديهم فهرس بالألعاب يستخدمونه لتنظيم الدورات والمسابقات. ولكل لعبة يحتاجون إلى تخزين الاسم وعدد اللاعبين والطبعة. ويمكن أن تكون لعبة الطاولة إما لعبة أساسية وإما توسعة. وإذا كانت توسعة، فيريدون معرفة اللعبة الأساسية التي هي توسعة لها. ولكل لعبة طاولة يريدون قائمة بالأعضاء الذين يستطيعون قيادة مباريات تلك اللعبة. وفي أي وقت، نحتاج إلى أن نكون قادرين على إنشاء نظرة عامة على:

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

الحل

الحل للتمرين conceptual.8