كيف تحلل برنامجك

درس مهم جدا لجميع المبرمجين و المطورين لبرامج الكمبيوتر او برامج المواقع, وهو كيف تقوم تحليل برامجك عن طريق انشاء ( الرسم البياني للعلاقات بين الكوائن ) - و كوائن هنا هي جمع كلمة ( كائن ) وهي نفسها ( Object ) - ويرمز له باللغه الانجليزية ( ERD ) و هي عبراه عن الكلمله ( Entity Relationship Diagram ). لا اعلم اذا كانت ترجمت هذا المصطلح الى العربيه صحيح ولكن حاولت قدر المستطاع ان اقوم بكتابة الترجمه القريبه منه. مارأيك لو قسمنا هذا الدرس الى عدة اجزاء, مثلا في البدايه ماهو هذا الرسم البياني , ثانيا ماهي فوائد, ثالثا ماهي العيوب ,رابعا كيفية استخدامه ؟ اعجبت الفكره ؟ اذن لنبدأ.

  • ماهو الرسم البياني للعلاقات بين الكوائن ( ERD ) كمفهوم:

هو عباره عن مخطط لمكونات قواعد البيانات. فلو اردنا ان نقوم ببناء برنامج جيد فيجب علينا ان نقوم بتحليل هذا البرنامج وتحليل اساس البرنامج وهي ( قاعدة البيانات ) والتي اعني بها هنا ( DataBase ) من اي نوع كانت. مكونات هذا المخطط البياني 3 اجزاء وهي على الشكل التالي, 1 - مستطيلات تمثل الكوائن. 2 - خطوط لربط الكوائن والعلاقت بينهم. 3 - انواع العلاقات بين الكوائن.

  • مستطيل الكائن:

اي كائن نقوم برسم مخطط له نرمز له بالشكل المستطيل و يجب ان يكون اسم المستطيل باللغه الانجليزية وبالاحرف الكبيره , فلو عندنا كائن اسمه ( مستخدم ) فسوف يكون بالشكل التالي :

erd user

  • خطوط ربط الكوائن ( العلاقات ) :

عندما يكون لدينا كائن لو لكثر وبينهم علاقة معينه فيجب ان نقوم بربط الكائنين بخط لكي نشير على وجود علاقه بينهما لاحظ الشكل التالي المستخدم يكتب الدرس و الدرس كتب عن طريق المستخدم :

userlesson

  • انواع العلاقات بين الكوائن

توجد لدينا علاقات بين الكائنات, فلو تلاحظ الرسمه في الاعلى ان المستخدم يكتب الدرس والدرس كتب عن طريق المستخدم ولكن هل هذا كافي ؟ طبعا لا فيجب ان نبين اكثر عمل كل واحد منهم ولذلك اوجدنا شيئ اسمه العلاقات وهي على ثلاث ( 3 ) انواع :

  1. واحد لواحد ويرمز لها بالرمز ( 1:1 )
  2. واحد لكثير ويرمز لها بالرمز ( 1:M )
  3. كثير لـ كثير ويرمز لها بالرمز ( M:M ) او ( M:N )

فلو كانت لدينا علاقة من النوع واحد لـ واحد فنرمز لها بالرمز ــــــــــــــــــــــــــــــــ||ـــــ ولكي توضح لك الصوره لنأخذ مثال على هذه النوع من العلاقه , لدينا محل ولدينا مدراء , وكل محل لديه مدير واحد فقط فإذن العلاقه عندنا هي بالشكل التالي ( المدير يقوم بإدارة محل واحد فقط , و المحل يكون له مدير واحد فقط ) وهذه صوره تمثل العلاقه :

manager store

اما لو كانت لدينا علاقه من النوع واحد لكثير فسوف يرمز لها بالرمز ـــــــــــــــــــــــــ< �� �� �� �ــ ومثال على هذه العلاقه لتوضيح المفهوم تخيل لو ان لدينا رسام يرسم صور والصور ترسم من قبل الرسام , فالعلاقه هنا ( الرسام يرسم عدة صور , والصور مرسومه من قبل رسام واحد ) وصورة العلاقه كالتالي:

painter paint

بالنسبه للعلاقه من النوع كثير الى كثير فهي معقده قليلا , ولذلك سوف اقوم بشرح العلاقه قليلا ولكن لن ادخل في تفصيلها وسوف اجعلها في جزء خاص لوحده في درس قادم. تخيل لو ان لدينا موظف وهذا الموظف يتعلم المهارات. فالموظف محمد يتعلم القرائه والكتابه و ياسر يتعلم ايضا القرائه والكتابه. وهذه المهارتان تنتمي ال كل موظف تعلمها ولا تنسب الى واحد فقط. فتكون بالشكل التالي ( الموظف يتعلم عدة مهارات و المهارات يتعلمها اكثر من موظف ). هذه العلاقه تعتبر سيئه وذلك لانها تولد التكرار في قواعد البيانات ولذلك نستخدم خاصيه تسمها ( الجسر ) وهي تقوم بتفكيك هذه العلاقه وتحويلها الى النوع واحد لكثير لكي يتم التخلص من التكرار. صورة توضح العلاقه كثير لكثير مع المشكله :

employee skilss

ولحل هذه المشكله نستخدم طريقة الجسر وهي بالشكل التالي :

many to many

  • فوائد الرسم البياني للعلاقات بين الكوائن :
  1. تبسيط المفهوم حيث ان الرسم البياني يعطي نظره اكبر للتحليل و التدقيق في صحته
  2. التصوير المرئي حيث ان المبرمج او المصمم يستطيع تصور المطلوب وتنفيذه حالا بلغة الحاسب
  3. يعتبر اداة اتصال جيدة حيث ان اكثر من شخص يستطيع فهم التحليل الاولي واكتشاف الاخطاء به اذا كانت هناك بعضا منها
  4. تبسيط التنفيذ في قاعدة البيانات حيث ان المتبقي هو انشاء قاعدة البيانات بنفس طريقة الرسم البياني وهذا ما يجعلها نظام مبسط و يتبع بطريقه معينه.
  • عيوب الرسم البياني للعلاقات بين الكوائن :
  1. محدودية التصور حيث لو اننا قلنا ان الرسام لا يستطيع رسم اكثر من 10 صور فلا يمكننا وضعها في الرسم البياني
  2. مدودية العلاقات حيث ان العلاقات المتوفره من 3 انواع فقط
  3. عند كتابة خواص كل ( كائن ) سوف يكون الرسم البياني ممتلئ و يقلل التركيز على الكائن وهذا ما يمنع الكثير من المبرمجين و المحللين من كتابة خواص الكوائن في الرسم البياني
  • استخدام الرسم البياني للعلاقات بين الكوائن ( مثال كامل ) :

لنقم الان بعمل تحليل كامل لبرنامج نريد بنائه. نريد ان نبي برنامج دروس متاكمل , موافق ؟ اذن تابع معي. ( برنامج الدروس, يحتوي البرنامج على دروس تتم اضافتها من قبل المستخدم , كل درس يتبع قسم معين و كل مستخدم يمكنه اضافة درس في احد الاقسام, يمكن للمستخدم اضافة التعليقات على الدروس )

الان نريد ان نستخرج الكائنات الاساسيه من المتطلبات في الاعلى و سوف نكتشف انها ( درس , مستخدم , قسم , تعليق ) ونلاحظ ايضا التالي:

  1. الدرس يضاف من قبل مستخدم واحد و المستخدم يضيف عدة دروس
  2. الاقسام تحتوي على عدة دروس , و الدرس يتبع قسم واحد
  3. التعليق ينتمي الى درس واحد و الدرس يحتوي على عدة تعليقات

وفي النهايه ناتج هذا التحليل هو التالي :

full erd

ولو اردنا ان نقوم بإنشاء قاعدة البيانات فالذي نحتاجه ان نقوم بإنشاء 4 جداول فقط وهي ( مستخدم , درس , قسم , تعليق ) وهذكا انتهينا من مشكلة عويصة في التحليل, فبدلا من البدأ في التحليل وعند اكتشاف الخطأ نبدأ من جديد, قمنا بالتحليل بطريقه بسيطه و بنينا الاساس لانفسنا ثم بدأنا التطبيق

اتمنى ان يكون الدرس سهل ولا تواجهون اي مشكله وان شاء الله سوف اكمل عما قريب بتفصيل عن مشكلة ( الكثير لـ كثير ) في العلاقات

للاستزاده عن الرسم البياني للعلاقات بين الكائنات انصحك بالكتاب التالي:

  1. Database Systems: Design, Implementation & Management
  2. Systems Analysis & Design, in a changing world.

تحياتي :)

رد واحد

  1. ror كتب,

    مارس 5, 2008 في 7:30 ص

    thamks alot
    it was so usefull

اكتب رداً