![]() |
أسلوب الرسم التخطيطي لعلاقات الكيانات ERD Entity relationship Diagram (ERD) إعداد : محمد طاهر |
سنتكلم فى هذا الموضوع عن أحد الاساليب المستخدمة فى تصميم قواعد البيانات
و هو أسلوب الرسم التخطيطي لعلاقات الكيانات ERD
Entity relationship Diagram (ERD)
الهدف من هذا الموضوع هو التعرف علي
أسلوب علمي لتحديد الجداول المطلوبة للبرنامج
بناء علي معلومات منطقية ، و ليس وفقا للمنطق و الخبرة فقط ، و انما هو
منهج يتم اتباعه و ينتهي بتحديد تصميم الجداول
|
هذا المثال تم عرضه أثناء احدي دورات الويب التي حضرتها ، و هو خاص بتصميم نظام لادارة مركز تدريب كمبيوتر :
و قبل أن نبدأ أود التأكيد علي ضرورة التفرقة بين التفكير العام فى النظام و الكيانات المختلفة فيه ، و بين التفكير فى الجداول و تصميمها فهنا سنصل الي تكوين الجداول بناء علي المنطق المتبع فى تطبيق هذا الأسلوب و ليس بناء علي الخبرة . و لنحاول أن نلتزم فقط بالتفكير منطقي و التسلسل المتبع فى تطبيق الأسلوب لنصل الي تصميم الجداول ، و لا نحاول القفز مسبقا الي التصميم.
سنتكلم عن نظام لادارة مركز تدريب للكمبيوتر ، و تعالوا نتخيل سويا أننا مطلوب منا اعداد برنامج لتشغيل هذا المركز
|
فنعقد جلسة عمل مع مدير المركز ، لكي نتلقي منه سياسات و قواعد العمل فى المركز، و التي ذكرنا أنها ستكون دليلننا لتحديد العلاقات بين الكيانات المختلفة الموجودة فى النظام ، و مرة أخري أذكركم بأنها علاقات بين كيانات و ليس بين جداول
و لكي يكون النظام واضحا سنتحدث فقط عن نظام حجز الدورات
أول خطوة هى تحديد الكيانات الموجودة فى النظام و هي هنا: الكورسات ، المدربين ، المتدربين ، و الكتب و بعد ذلك نتجه الي تحديد قواعد العمل التي تحكم العلاقات بين هذه الكيانات
قواعد نظام العمل
بالطبع هذه القواعد تختلف بحسب الحاجة و لكن هذه القواعد هلي لغرض المثال فقط
|
في العادة فإنه مع تلقي القواعد التي تحكم النظام نكون نتلقي فى نفس الوقت متطلبات العميل و نخطط الشكل المبدئي لواجهة الاستخدام و طلبات العميل فى تحديد مخرجات النظام سواء كشاشات أو تقارير مما يساعدنا علي تحديد المدخلات الي النظام و من ثم اعداد مستندات تحليل النظام ، كما تحدثنا سابقا ، و لكن هذا ليس موضوع هذا الدرس ، و انما سنتكلم هنا عن ال ُERD فقط
|
مرحلة التصميم هناك العديد من الاساليب المستخدمة فى تصميم قواعد البيانات الأسهل منها هو أسلوب الرسم التخطيطي لعلاقات الكيانات ERD
|
أسلوب الرسم التخطيطي لعلاقات الكائنات فى هذا الاسلوب نفكر فى المشروع كمجموعة كيانات بينها علاقات و هنا الكيانات بمعناها الحسي و ليس الجداول ففي المثال الذي نتكلم عنه الكيانات هي الكورسات ، المدريين ، المتدربين ، و الكتب |
|||||||||||||||
وبعد تحديد الكيانات الموجودة نبدأ علي التوالي فى بحث خصائص هذه الكيانات و هي :
|
|||||||||||||||
أولا الكيان الاول هو المدربين نحدد الخصائص التي نحتاجها لهذا الاسم
|
|||||||||||||||
رقم الكورس هو ليس من خصائص المدربين ، لأن كل مدرب يمكنه تدريس لأكثر من كورس و لكن علي العكس كود المدرب هو من خصائص الكورس ، لأن كل كورس يدرسه مدرب واحد ( كما فى المثال هنا و ليست حالة عامة بالطبع )
|
|||||||||||||||
أنواع البيانات للخواص المختلفة بصفة عامة أنواع البيانات بصفة عامة فى قواعد البيانات تكون
و لمراجعة أنواع البيانات فى الاكسس تحديدا ، يرجي مراجعة دروس انشاء الجداول فى الاكسس و الآن لنحدد البيانات الخاصة بالمدرب
|
|||||||||||||||
|
و الآن لنكرر ما فعلنا سابقا مع الكيان الثاني و هو المتدربين
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
الكيان الثالث : الكورس
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
و أخيرا تحديد المفاتيح لكل كيان من الكيانات المفاتيح المفاتيح كما تحدثنا سابقا هي أرقام معرفة لكل كيان من الكيانات ،و يمكن أن تكون من نوعية أخري غير الارقام ، و لكن فى أغلب الاحيان تكون رقم حيث أنه أفضل من النص فى الفرز و الترتيب و بصفة عامة فانها تمثل الصفة الفريدة لكل بيان من البيانات الخاصة بالكائن أو الحقل المعرف لكل سجل من سجلات الجداول لاحقا أي رقم فريد لا يتكرر يستخدم كمعرف لكل بيان ن بيانات هذا الكائن
فمثلا رقم ثابت غير متكرر لكل طالب فىالكيان المسمي الطلاب ، و لكل مدرب فى الكيان المسمي المدربين ، و لكل كتاب فى الكيان المسمي الكتب ، و أيضا لكل كورس فى الكيان المسمي كورسات و مثال علي ذلك الباركود بالنسبة للمنتجات ، فلكل منتج كود خاص به لا يتكرر و لتعريف المفتاح علي الورق نضع بجانبه * أو PK فيضاف الي كل كيان خاصية المعرف أو المفتاح كما يلي
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
و الآن سنقوم برسم العلاقات بين الكيانات المختلفة هناك 3 انواع من العلاقات كما تحدثنا سابقا فى درس العلاقات
و سنقوم ببناء العلاقات بين الكيانات المختلفة بناء علي قواعد نظام العمل السابق ذكرها ، و سنمر عليها الواحدة تلو الأخري و نستنتج العلاقة
|
|
كل مدرب يمكن أن يدرس أكثر من كورس في نفس الوقت فبذلك تكون العلاقة من نوع متعدد من ناحية الكورس و كل كورس يدرسه مجرب واحد فقط فبذلك تكون العلاقة من نوع واحد من ناحية المدربين و بذلك تكون العلاقة واحد الي متعدد
|
|
كل طالب يمكنه التسجيل فى أكثر من كورس فى نفس الوقت و هناك علاقة أخري منطقية لم تذكر و هي أن كل كورس به أكثر من طالب و بذلك تكون العلاقة متعدد الي متعدد |
|
كل كورس مخصص له كتاب واحد فقط و كل كتاب مخصص لكورس واحد فقط و بذلك تكون العلاقو من نوع واحد الي واحد |
و بذلك نكون قد غطينا جميع أنواع العلاقات بين الكيانات و لكن أؤؤكد ثانية علي أن هذه علاقات بين كائنات و ليست بعد علاقات بين جداول ، و سنحولها الي جداول و علاقات فى الخطوة القادمة |
|
|
و بذلك يصبح شكل الرسم التخطيطي لعلاقات الكائنات كما هو مبين فى الشكل |
و هكذا نكون انتهينا من اعداد ال الرسم التخطيطي لعلاقات الكائنات Entity Relationship Diagram (ERD) و يلي ذلك تحويله الي جداول |
تحويل الكيانات الي جداول |
|||||||||||||||||||||||||
|
القاعدة الأولي كل علاقة من نوع واحد الي واحد تتحول الي جدول واحد هذا يعني أن الحقول الموجودة فى الجدول الثاني يمكن ضمها الي الجدول الاول و اعتبارهما كيان واحد بدلا من كيانين و بالتالي جدول واحد بدلا من جدولين و بذلك نلغي حقل المعرف للكتب ، فقد أصبح يعرف بنفس معرف الكورس لأنها أصبحا جدول واحد و أصبحت بيانات الكتاب امتدادا لبيانات الكورس فيتم دمجهما فى جدول واحد كما يلي بدلا من هذه العلاقة
|
||||||||||||||||||||||||
|
فبدلا من وجود جدول مستقل للكتب |
||||||||||||||||||||||||
|
و آخر مستقل للكورسات |
||||||||||||||||||||||||
|
و بينهما علاقة |
||||||||||||||||||||||||
|
تكون النتيجة جدول واحد مشترك و نلغي رقم معرف الكتب لأن الرقم المعرف للكورس أصبح رقم معرف للبيانات الجديدة |
||||||||||||||||||||||||
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 جداول و هذه ليست قاعدة و انما مصادفة |
و هكذا تم تصميم الجداول الاربعة و العلاقات بينهم علي الورق و تبدأ بعد ذلك المرحلة الثالثة بعد التحليل و التنفيذ و هي التنفيذ و بخصوص التنفيذ يرجي مراجعة دروس الاكسس ( انشاء الجداول و العلاقات ) |