أسلوب الرسم التخطيطي لعلاقات الكيانات ERD

Entity relationship Diagram (ERD)

إعداد : محمد طاهر

 

 

 

سنتكلم فى هذا الموضوع عن أحد الاساليب المستخدمة فى تصميم قواعد البيانات

و هو أسلوب الرسم التخطيطي لعلاقات الكيانات ERD

Entity relationship Diagram (ERD)

 

 

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

 

هذا المثال تم عرضه أثناء احدي دورات الويب التي حضرتها ،  و هو خاص بتصميم نظام لادارة مركز تدريب كمبيوتر :

 

و قبل أن نبدأ أود التأكيد علي ضرورة التفرقة بين التفكير العام فى النظام و الكيانات المختلفة فيه ، و بين التفكير فى الجداول و تصميمها

فهنا سنصل الي تكوين الجداول بناء علي المنطق المتبع فى تطبيق هذا الأسلوب و ليس بناء علي الخبرة . و لنحاول أن نلتزم فقط بالتفكير منطقي و التسلسل المتبع فى تطبيق الأسلوب لنصل الي تصميم الجداول ، و لا نحاول القفز مسبقا الي التصميم.

 

 

سنتكلم عن نظام لادارة مركز تدريب للكمبيوتر ، و تعالوا نتخيل سويا أننا مطلوب منا اعداد برنامج لتشغيل هذا المركز

 

 

فنعقد جلسة عمل مع مدير المركز ، لكي نتلقي منه سياسات و قواعد العمل فى المركز، و التي ذكرنا أنها ستكون دليلننا لتحديد العلاقات بين الكيانات المختلفة الموجودة فى النظام ، و مرة أخري أذكركم بأنها علاقات بين كيانات و ليس بين جداول

 

و لكي يكون النظام واضحا سنتحدث فقط عن نظام حجز الدورات

 

 

أول خطوة هى تحديد الكيانات الموجودة فى النظام

و هي هنا:

الكورسات ، المدربين ، المتدربين ، و الكتب

و بعد ذلك نتجه الي  تحديد قواعد العمل التي تحكم العلاقات بين هذه الكيانات

 

 قواعد نظام العمل

  1. كل مدرب يمكنه تدريب أكثر من دورة

  2. كل طالب يمكنه التسجيل فى أكثر من دورة

  3. كل كورس يقوم مدرب واحد فقط بتدريبه

  4. كل كتاب مخصص لدورة معينة و كل دورة لها كتاب واحد فقط

بالطبع هذه القواعد تختلف بحسب الحاجة و لكن هذه القواعد هلي لغرض المثال فقط

 

 

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

 

 

 

مرحلة التصميم

هناك العديد من الاساليب المستخدمة فى تصميم قواعد البيانات

الأسهل منها هو أسلوب الرسم التخطيطي لعلاقات الكيانات ERD

 

 

 أسلوب الرسم التخطيطي لعلاقات الكائنات

فى هذا الاسلوب نفكر فى المشروع كمجموعة كيانات بينها علاقات

و هنا الكيانات بمعناها الحسي و ليس الجداول

ففي المثال الذي نتكلم عنه

الكيانات هي

الكورسات ، المدريين ، المتدربين ، و الكتب

وبعد تحديد الكيانات الموجودة نبدأ علي التوالي فى بحث خصائص هذه الكيانات و هي :

 

  • الاسم

  • الخصائص الخاصة بالاسم

  • نوعية البيانات لكل خاصية

  • المفاتيح

أولا الكيان الاول هو المدربين

نحدد الخصائص التي نحتاجها لهذا الاسم

 

اسم الكيان

Properties

الخصائص

Instructors

Inst-Name

الاسم

 

Inst_Tel

رقم التليفون

 

Inst-Mob

رقم المحمول

 

Inst-Email

البريد الاليكتروني

 

رقم الكورس هو ليس من خصائص المدربين ، لأن كل مدرب يمكنه تدريس لأكثر من كورس

و لكن علي العكس كود المدرب هو من خصائص الكورس ، لأن كل كورس يدرسه مدرب واحد ( كما فى المثال هنا  و ليست حالة عامة بالطبع )

 

أنواع البيانات للخواص المختلفة

بصفة عامة أنواع البيانات بصفة عامة  فى قواعد البيانات تكون

  • نص أو مذكرة

  • رقم

  • عملة

  • تاريخ

  • نعم/ لا

  • ترقيم تلقائي

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

و الآن لنحدد البيانات الخاصة بالمدرب

 

نوعية البيانات

Properties

 Data Type

نص

Inst-Name

text

نص

Inst_Tel

text

نص

Inst-Mob

text

نص

Inst-Email

text

 

 

 

و الآن لنكرر ما فعلنا سابقا مع الكيان الثاني و هو المتدربين

 

اسم الكيان

Properties

 Data Type

Students

Std-Name

text

 

Std_Tel

text

 

Std-Mob

text

 

Std-Email

text

 

الكيان الثالث : الكورس

اسم الكيان

Properties

 Data Type

Course

Course-Name

text

 

Course-fee

Number

 

 

و أخيرا تحديد المفاتيح لكل كيان من الكيانات

المفاتيح

المفاتيح كما تحدثنا سابقا هي أرقام معرفة لكل كيان من الكيانات ،و يمكن أن تكون من نوعية أخري غير الارقام ، و لكن فى أغلب الاحيان تكون رقم حيث أنه أفضل من النص فى الفرز و الترتيب

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

أي رقم فريد لا يتكرر يستخدم كمعرف لكل بيان ن بيانات هذا الكائن

 

فمثلا رقم ثابت غير متكرر لكل طالب فىالكيان المسمي الطلاب ، و لكل مدرب فى الكيان المسمي المدربين  ، و لكل كتاب فى الكيان المسمي الكتب ، و أيضا لكل كورس فى الكيان المسمي كورسات

و مثال علي ذلك الباركود بالنسبة للمنتجات ، فلكل منتج كود خاص به لا يتكرر

و لتعريف المفتاح علي الورق نضع بجانبه *  أو PK

فيضاف الي كل كيان خاصية المعرف أو المفتاح كما يلي

 

Name

Properties

 Data Type

Instructors

Inst-ID*

Number

 

Inst-Name

text

 

Inst_Tel

text

 

Inst-Mob

text

 

Inst-Email

text

 

Inst-Sal

Number or Curr

 

Inst-HireD

Date

 

Name

Properties

 Data Type

Students

Std-ID*

Number

 

Std-Name

text

 

Std_Tel

text

 

Std-Mob

text

 

Std-Email

text

 

Name

Properties

 Data Type

Course

Course-ID*

Number

 

Course-Name

text

 

Course-fee

Number

 

و الآن سنقوم برسم العلاقات بين الكيانات المختلفة

هناك 3 انواع من العلاقات كما تحدثنا سابقا فى درس العلاقات

  • واحد الي واحد

  • واحد الي متعدد

  • متعدد الي متعدد

 

و سنقوم ببناء العلاقات بين الكيانات المختلفة بناء علي قواعد نظام العمل السابق ذكرها ، و سنمر عليها الواحدة تلو الأخري و نستنتج العلاقة

 

 

 

كل مدرب يمكن أن يدرس أكثر من كورس في نفس الوقت

فبذلك تكون العلاقة من نوع متعدد من ناحية الكورس

و كل كورس يدرسه مجرب واحد فقط فبذلك تكون العلاقة من نوع واحد من ناحية المدربين

و بذلك تكون العلاقة واحد الي متعدد

 

كل طالب يمكنه التسجيل فى أكثر من كورس فى نفس الوقت

و هناك علاقة أخري منطقية لم تذكر و هي أن كل كورس به أكثر من طالب

و بذلك تكون العلاقة متعدد الي متعدد

كل كورس مخصص له كتاب واحد  فقط و كل كتاب مخصص لكورس واحد فقط

و بذلك تكون العلاقو من نوع واحد الي واحد

 

و بذلك نكون قد غطينا جميع أنواع العلاقات بين الكيانات

و لكن أؤؤكد ثانية علي أن هذه علاقات بين كائنات و ليست بعد علاقات بين جداول ، و سنحولها الي جداول و علاقات فى الخطوة القادمة

و بذلك يصبح شكل الرسم التخطيطي لعلاقات الكائنات كما هو مبين فى الشكل

و هكذا نكون انتهينا من اعداد ال  الرسم التخطيطي لعلاقات الكائنات

Entity Relationship Diagram (ERD)

 و يلي ذلك تحويله الي جداول

 

 

تحويل الكيانات  الي جداول

 

Name

Properties

 Data Type

Course

Course-ID

Number

 

Course-Name

text

 

Course-fee

Number

 

Book-ID

no need now

 

Book-Name

 

 

Book-Price

 

 

 

 

القاعدة الأولي

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

هذا يعني أن الحقول الموجودة فى الجدول الثاني يمكن ضمها الي الجدول الاول  و اعتبارهما كيان واحد بدلا من كيانين

و بالتالي جدول واحد بدلا من جدولين

و بذلك نلغي حقل المعرف للكتب ، فقد أصبح يعرف بنفس معرف الكورس لأنها أصبحا جدول واحد  و أصبحت  بيانات الكتاب امتدادا لبيانات الكورس

فيتم دمجهما فى جدول واحد كما يلي

بدلا من هذه العلاقة

 

فبدلا من وجود جدول مستقل للكتب

و آخر مستقل للكورسات

و بينهما علاقة

 

 

 تكون النتيجة جدول واحد مشترك   و نلغي رقم معرف الكتب

لأن الرقم المعرف للكورس أصبح رقم معرف للبيانات الجديدة

 

Now we ca delete the books Entity from the ERD

و نحذف الكيان المسمي كتب من الرسم

 

 

القاعدة الثانية : أن كل علاقة بين الكيانات من نوع واحد الي متعدد يتم تحويلها الي جدول

و يتم اضافة حقل جديد الي الكيان الموجود فى ناحية المتعدد يسمي الحقل الغريب و يكون مساويا للمفتاح فى الكيان الموجود علي جانب ال واحد من العلاقة

و تكون العلاقة بين الحقل الغريب فى جانب ال متعدد من العلاقة و حقل المفتاح فى جانب ال واحد من العلاقة

و نلاحظ فى الرسم انه تم اضافة حقل INST-ID

 الي جدول الكورسات و هذا هو الحقل الغريب و تم عمل العلاقة بينه و بين حقل المفتاح فى الجدول الموجود علي جانب ال واحد من العلاقة (راجع درس العلاقات فى الاكسس)

و جدير بالذكر أنه فى حالة كون حقل المفتاح ترقيم تلقائي يكون الحقل الغريب رقمي و ليس تلقائي و من نفس نوع الباينات

أما فى غير ذلك فيكون مطابق له من حيث النوع و نوع البيانات

مع اختلاف أنه يقبل التكرار

و يكون حقل المفتاح PK  من خصائصه عدم قبول التكرار

و يكون الحقل الغريب يقبل التكرار لأنه فى جانب المتعدد من العلاقة

 و هكذا نكون أنشأنا جدولين الكورسات و المدربين و العلاقة بينهما

 

 

القاعدة الثالثة : أي علاقة من نوع متعدد الي متعدد ينتج عنها 3 جداول

الأول و الثاني هما الكيانان طرفي العلاقة

أما الثالث فهو جدول جديد يتكون علي الاقل من حقلين :

هما حقلي المفتاح فى كل من الجدولين الاول و الثاني

فى مثالنا السابق

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

ثم نضيف العلاقة من نوع واحد الي متعدد بين جدول الطلبة و الحجز و أيضا بين جدول الكورسات و الحجز

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

أي أنه اذا كان لدينا 3 كورسات فى جدول الكورسات و 30 طالب مسجلين يحضرون جميعا ال 3 كورسات فان اسم الكورس و قيمته و جميع بياناته ستكرر 30 مرة أمام كل من ال30 بعدد 3 مرات هي عدد الكورسات

أي بدلا من 3 سجلات فى جدول الكورسات و 30 فى جدول الطلاب

يصبح لدينا 90 سجل فى جدول واحد

 و بها كمية كبيرة من تكرار البيانات فى الحقول

 

و الآن و نضيف جدول حجز الكورسات

و في هذا الجدول يتم عمل مفتاح مركب لكل من حقلي

std-Id and Course ID

و يتم ذلك باختيار الحقلين سويا ثم الضغط علي ايقونة المفتاح من أعلي الشاشة

 

 

 

 

 

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

بعد اكتمال تصميم الجداول لا بد من وجود التالي

  • كل المعلومات ممكن الوصول اليها

  • كل معلمة يمكن الوصول اليها من طريق واحد فقط

  • لا يوجد تكرار فى المعلومات

نلاحظ أيضا أنه كان لدينا 4 كيانات و نتج عنها 4 جداول و هذه ليست قاعدة و انما مصادفة

و هكذا تم تصميم الجداول الاربعة و العلاقات بينهم علي الورق

و تبدأ بعد ذلك المرحلة الثالثة بعد التحليل و التنفيذ و هي التنفيذ

و بخصوص التنفيذ يرجي مراجعة دروس الاكسس ( انشاء الجداول و العلاقات )