Friday, 14 September 2018

01 - Database Design Concepts

بسم الله الرحمن الرحيم


مطلوب إعداد جدول لزبائن الشركة .

هذا مثلاً:

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



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


و من وجهة نظر الجدول ، العامود هو صفة من صفات وحدة بنائه.
أي أن الاسم هو صفة من مواصفات الزبون ، و كذلك التولد و المدينة و الهاتف . نقول: لتوصيف الزبون ، نحن بحاجة لذكر رقمه و اسمه و تولده ، و هكذا . نسمي أسطر الجدول: سجلات ، Records . و نسمي أعمدة الجدول: حقول ، Fields.



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



مجوعة الحقول الموجودة في الجدول هي القاعدة التي بني عليها الجدول ، الأسطر هي البيانات.

لماذا سميت "القاعدة" ؟
لأنها الأساس الذي ستوضع في البيانات.
لأن مجموعة الحقول هي القاعدة التي ستوضع عليها السجلات.
كي نضيف زبون إلى جدول الزبائن ، يجب أن نتقيد بالقاعدة التالية: توفر البيانات رقمه و اسمه و تولده و مدينته و هاتفه . قاعدة.


إذا قلنا "باب المدرسة" فالقصد هو الباب ، المضاف . المصطلح الشهير الذي نعرفه هو "قاعدة البيانات" أو "قواعد البيانات" . المضاف هو "القاعدة" . لماذا كل هذا الاهتمام بالـ "قاعدة" ؟ أليست "البيانات" هي الأهم ؟


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


لنتخيل هذا الحوار الذي جرى بين مدير المشروع ، و صاحب القرار:
- مدير المشروع: تفضل يا سيدي.
- صاحب القرار: الله يعطيكم العافية ... ممم ، كم شخص لدينا في سوريا؟
- 16 مليون.
- ممم ، ما شاء الله . كم شخص في حلب ؟
- ... في الحقيقة المعلومة موجودة لدينا ، إلا أننا بحاجة للقيام بعملية إحصائية كي نجيب ... سنوافيك بها بأقرب وقت.
- حسناً ، كم شخص في سوريا زمرة دمهم B سلبي ؟
- ... !!!!!!!
- ماذا ؟
- لا نعرف ...
- كيف لا تعرف ؟ ألم تسألوا الناس عن زمر دمهم ؟
- لا ... النماذج التي قمنا بتعبئتها لا تحوي زمزة الدم ...
- ... ، كم شخص في سوريا حاصل على شهادة دكتوراه ؟
- ... لا نعرف L ، لم نسأل عن هذه المعلومة ...
- لماذا لم تسألوا عن هذه المعلومة؟
- يا سيدي ، عندما طلبت منا إحصاء سكان سوريا ، لم تقل لنا أنك تريد أن تعرف زمرة دمهم ، أو شهاداتهم الدراسية ...
- لا لا لا ، هذا غير مقبول ، الله يرضى عليك بتروح بتجبلي هالمعلومتين و بترجع ...


ماذا حصل ؟ هناك بيانات ناقصة . ناقصة من وجهة نظر صاحب القرار . صاحب القرار هو شخص يريد أن يستثمر البيانات ، و ذلك بطرح أسئلة منطقية . نقصد بـ "الأسئلة المنطقية" أسئلة ليست تعجيزية ، جوابها موجود في البيانات ، قد يحتاج الأمر لوقت ، إلا أن الجواب موجود بالتأكيد . السؤال عن عدد سكان حلب سؤال منطقي ، حيث أن "المحافظة" هي معلومة موجودة في كل نموذج تم تعبئته لكل شخص . أما السؤال عن زمرة الدم ، فهو سؤال "تعجيزي" ، مستحيل ، هذه المعلومة غير موجودة في النماذج ، غير موجودة في الجدول.


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


كيف حصل هذا الخطأ ؟ و من هو المسؤول عنه.في البداية ، صاحب القرار كانت لديه فكرة عن إحصاء سكان سوريا ، أسند ذلك لمدير المشروع . مدير المشروع قام بدراسة مستفيضة ، بدأ بأن سأل صاحب القرار:ما الهدف من هذا المشروع ؟ و ما هي المعلومات التي تريد أن تعرفها عن سكان سوريا ؟ الجواب أتاه واضحاً ، فقام بوضع "قاعدة" لتجميع بيانات سكان سوريا ، هذه القاعدة تحولت إلى نموذج ، كل نموذج يمثل فرداً في سوريا . تمت مراجعة النموذج (أو سمه الجدول ، أو القاعدة) ، تم طرح الأسئلة المعتمدة على هذا الجدول ، و تم التحقق من إمكانية الإجابة ، ثم تم اعتماد النموذج ، تم تثبيت القاعدة.


ثم ماذا ؟
بعد الانتهاء من مرحلة "التصميم" ، تصميم القاعدة ، بدأت مرحلة "إدخال البيانات" ، و أنشئت الهيئات التنظيمية لإدارة هذه المرحلة ، الخطيرة ، التي انتشرت ، و عبأت النماذج ، و عادت بها إلى مقراتها ، ثم أدخلت النماذج في القاعدة (سجلات في الجدول) ، و انتهت مرحلة "إدخال البيانات".


ثم ماذا ؟
عدنا لمدير المشروع ، تناول الجدول ، تناول بيانات الجدول ، و أسرع إلى صاحب القرار . صاحب القرار سأل الأسئلة المتوقعة ، ثم فاجأ الجميع بأسئلة "تعجيزية" . أسئلة من غير الممكن الإجابة عنها . القاعدة غير مصممة للإجابة عنها.


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


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


القاعدة هي الأساس.

لا بد من تقنين المسألة.
لا بد من وجود "قاعدة" لتصميم قواعد البيانات . في الواقع ليست قاعدة واحدة . هناك أربعة مدراس ، قدمت نظرياتها و أدواتها الخاصة ، كأصول لـ "تحليل" و "تصميم" قواعد البيانات.

No comments:

Post a Comment