Monday, December 17, 2012

Real Steps for Data Modeling

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

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


 2 -  تحديد موظفين لأجل اتمام المشروع :
كما قلنا سابقا أن الشركة تحوي على 6 موظفين يتم تحديدهم لتنفيذ المشاريع المطلوبة من قبل الزبون ,المعلومات سوف تكون على الشكل التالي :

3 -  تحضير فاتورة للزبون :
يتم تحضير فاتورة دفع النفقات الى الزبون ,هذه الفاتورة تحوي على معلومات كاملة حول المشروع والنفقات التي صرفت :

4 - أستلام المبلغ من الزبون :
لأجل تنفيذ استلام النقود من الزبون , الشركة سوف تحتاج الى معلومات حول عملية التسليم ومن قام بالدفع :

5 - نسبة الموظفين من المشروع عند أنتهائه:
لأجل تنفيذ عملية اعطاء أجور الموظفين , يجب على الشركة أن تعرف معلومات حول المشروع وحول الموظفين الذين نفذوا المشروع :

وبعد أكتمال نموذج البيانات الخارجي الذي أعتمد على متطلبات  واحتياجات ذوي المصلحة. نأتي الأن الى فحص جميع العناصر التي رسمناه في الجداول أعلاه والتي تخص عمليات متفرقة تقوم بها الشركة.يتم وضع هذه العناصر داخل مجاميع حسب ملأئمتها مثلا المعلومات حول الزبون الموجودة في الجداول ,توضع هذه المعلومات او ما تسمى بالعناصر في مجموعة ال Client مصطلح مجموعة يسمى في قواعد البيانات بأسم الكائن وبتوليد هذه المجاميع سوف يتولد النموذج المفاهيمي الذي يخلوا من كل التعابير المنطقية والفيزيائية وسوف يكون مرجع ودليل لمطوري قواعد البيانات وخاصة في المرحلة المنطقية.أذن لنرى النموذج المفاهيمي في الرسم التالي :  
وبعد أكتمال النموذج المفاهيمي وتبين الكائنات الرئيسية للشركة يمكننا الأن ان نضيف العلاقات مابين الكائنات أضافة الى تبيين المفتاح الرئيسي Primary Key والمفتاح الثانوي Foreign Key ,وفي النهاية ينتج نموذج المنطقي الذي يحوي العلاقات أضافة أستخدام مبدأ التطبيع Normalization لأجل تقليل التكرارات والوصول الى الأمثلية.سوف نستخدم برنامج يدعى ERWin الذي من خلاله يتم رسم الجداول المنطقية وأضافة المفاتيح وألملامح الرئيسية وبعد أنتهاء هذا النموذج يمكننا أن ننتقل الى بيئة أدارة قواعد البيانات لأجل خلق قاعدة البيانات الحقيقية.
نأتي الأن الى عمل العلاقات مابين الكائنات التي تم خلقها في المرحلة السابقة :
1 - علاقة الزبون مع المشروع (Client -- Project):
تركز العلاقة على حضور الزبون الى الشركة وطلب تنفيذ مشروع معين وليكن حفلة عيد ميلاد ويمكنه ان يطلب أكثر من مشروع ,وكل مشروع يرتبط بزبون واحد .أذن العلاقة هي One to Many .

2 - علاقة الموظف بالمشروع (Employee -- Project):
تعتمد العلاقة على تحديد الموظفين الذين سوف يخدموا المشروع المقترح بمعنى يمكن ان يكون أكثر من موظف يحدد لمشروع معين ,ويمكن أن يكون الموظف الواحد يعيين الى أكثر من مشروع بين فترة واخرى .أذن العلاقة هي Many to Many .

3 - علاقة المشروع بنوع الطعام (Project -- Food type):
المشروع المقترح يجب أن يحوي على قائمة بنوعية الطعام يحددها الزبون عندما يقوم بالطلبية مثلا حفلة عيد ميلاد تتطلب نوعية طعام مختلفة عن مأدبة غداء لرجال أعمال .كل مشروع مقترح من قبل الزبون ممكن أن يحوي على نوعية طعام واحدة أو أكثر من نوعية وفي نفس الوقت كل نوعية طعام يمكن أن توجد في مشروع وأحد أوأكثر .أذن العلاقة هي Many to Many.

4 - علاقة الزبون بالدفع (Client -- Payment):
تركز العلاقة على دفع الزبون جميع المستحقات التي اتفق عليها الطرفين عند بداية المشروع ,وأن كل زبون يملك فاتورة واحدة أو أكثر خاصة به,وكل فاتورة تتبع زبون واحد فقط.

الشكل التالي يوضح النموذج المنطقي التقريبي مغ غياب مبدأ التطبيع :

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

نلاحظ من الشكل أعلاه ظهور الجدول الثالث الذي زودناه بمفتاح أساسي PK لأجل الأبتعاد عن التكرار والوصول السهل للبيانات المختارة.يمكننا أن نحسن نموذج البيانات المنطقي لأنه لحد هذه اللحظة لم يتم خزنه فيزيائيا ولم يتم تحويل الجداول المنطقية الى جداول فيزيائية تحوي أعمدة وصفوف لخزن البيانات وفايلات خاصة لتهيئة الجداول والمفاتيح.بحيث يمكننا أن نضيف بعض العناصر مثلا نضيف حقل تم الدفع في جدول المدفوعات من نوع Boolean يعطي True في حالة دفع الزبون او False في حالة لم يدفع ,او يمكننا أن نضيف حقول معينة الى جدول نوعية الطعام مثلا حقل يعطي أصل الطعام ياباني ,عربي ,أيطالي .يمكنك أن نضيف جدول بأكمله بالرغم أنك يجب أن تحدد جميع الكائنات منذ مرحلة النموذج المفاهيمي لكن ممكن أن تخطر على بال ذوي المصلحة فكرة معينة أثناء التطوير مثلا يقول أريد جدول يتم من خلاله أعطاء الزبائن كارت تخفيض في حالة حجزه لبعض المشاريع مثال زبون حجز طلبية لتأمين مأدبة غداء ضخمة,أذن يتم أعطاءه كارت ذهبي هذا الكارت يحوي %5 تخفيض على القيمة النهائية أذن يجب أن يتصل بجدول المدفوعات وجدول الزبائن أردت أن اوضح من هذا أن كل نظام يمكن أن يختلف بالرغم من تشابه جوهر عمله وذلك بسبب أختلاف الأراء والأفكار والمتطلبات.

وفي النهاية يتم خلق قاعدة البيانات بالأعتماد على نموذج البيانات المنطقي وذلك بأستخدام بيئة أدارة قواعد البيانات مثلا Sql Server Oracle . في المقالة التالية سوف يتم توضيح بناء قاعدة البيانات بواسطة Sql Server 2008 R2 

No comments:

Post a Comment