بسم الله الرحمن الرحيم
تمهيد
الحمد لله وحده، والصلاة والسلام على من لا نبي بعده، اللهم صلّ على محمد وعلى آل محمد كما صليت على إبراهيم، وبارك على محمد وعلى آل محمد كما باركت على إبراهيم، في العالمين إنك حميد مجيد.
أما بعد...
مضت على نهاية الجزء الأول من هذه المذكرات بضع شهور الآن، وقد تناول الجزء الأول مبادئ تحليل وتصميم قاعدة البيانات، وتم جمعه في كتاب على هذا الرابط:
/index.php?showtopic=191995&view=findpost&p=1041066
ومن باب التذكير لمن سبق له الاطلاع على الكتاب، ولفت الانتباه لمن لم يسبق له ذلك، أورد هنا محتويات الجزء الأول:
====================================
تعريفات أساسية: قواعد البيانات والأكسس
المزيد من التعريفات الأساسية: DBMS وتطبيقات قواعد البيانات
تعريفات أساسية أخرى: SQL
هل SQL لغة برمجة؟
الطبقات في عالم قواعد البيانات وتطبيقاتها
الفرق بين البنى المنطقية والفيزيائية
دورة حياة النظام: أهمية التحليل
دورة حياة النظام: نظرة على التصميم وبقية المراحل
مقدمة إلى مخطط الكائنات والعلاقات ERD
التحليل من ناحية عملية: المقابلات
التحديات في وجه المحلل
وسائل التحليل الأخرى
مدخل إلى التصميم: نظرة عامة
قواعد البيانات العلائقية: المفاهيم الأساسية
قواعد البيانات العلائقية: المزيد من المفاهيم الأولية
العلاقات
التسوية Normalization: مدخل
الأشكال السوية: الشكل السوي الأول 1st NF
الأشكال السوية: الشكل السوي الثاني 2nd NF
الأشكال السوية: الشكل السوي الثالث 3rd NF
إزالة التسوية Denormalization
تكامل قاعدة البيانات
مخطط الكائنات والعلاقات ERD: المفهوم
مخطط الكائنات والعلاقات ERD: ما بعد المفهوم
ERD إلى جداول
تصميم جداول نظام مخازن ومبيعات: القليل من النقاش
تصميم جداول نظام مخازن ومبيعات: استكمال النقاش
ثم تلا ذلك مقدمة إلى لغة SQL.
====================================
كما ترى، معظم هذه الموضوعات تقع في صميم مفاهيم قواعد البيانات، ومع ذلك فهي من أقل الموضوعات طرحاً (وتفاعلاً) في أقسام قواعد البيانات. لماذا؟ أترك هذا كتمرين للقارئ الكريم.
فكرة اختتام الجزء الأول ببناء تطبيق لنظام مخازن ومبيعات تبدو جذابة للوهلة الأولى، ولكنها بكل بساطة غير ممكنة. ما وصلنا إليه في نهاية الجزء الأول هو تصميم لقاعدة بيانات نظام مخازن ومبيعات، مجموعة من الجداول التي ناقشنا السبب في اختيارها واختيار حقولها (لو تذكر طبعاً). من المهم التمييز بين قاعدة البيانات وبين التطبيق، بين الطرف الخلفي back-end وبين الطرف الأمامي front-end. والوصول إلى تصميم للطرف الخلفي (قاعدة البيانات) لا يعني حتماً أنك مستعد لكتابة الطرف الأمامي (التطبيق). أنت لا تستطيع أن تشرب الشاي قبل أن تعد الشاي. أعني أنك لا تستطيع أن تكتب التطبيق قبل أن تمتلك المهارات اللازمة لكتابة التطبيقات. فيما يلي أهم هذه المهارات:
1. البرمجة.
2. لغة البرمجة VBA.
3. نموذج كائنات الأكسس Access Object Model.
4. نموذج أو أكثر للوصول إلى البيانات DAO أو ADO أو كلاهما.
5. وبالطبع (مرة اخرى) لغة قواعد البيانات SQL.
الفرق بين البندين الأولين (البرمجة ولغة البرمجة VBA) يشبه الفرق بين اكتساب مهارة إعداد الخبز، وبين تعلم استخدام التنور أو الفرن الكهربائي أو الفرن الغازي من أجل إعداد الخبز فعلياً؛ الوصفة هي نفسها بالأساس، ولكن هناك ميزات وقيود تتعلق بكل أداة يجب أن تتعلمها، وتحسن التعامل معها من أجل خبز جيد. لاحظ أنك فيما عدا الوصفة، والنصائح النظرية، فإنك تبدأ في تعلم إعداد الخبز باستخدام واحدة من هذه الأدوات بالفعل، لكن ذلك ينبغي ألا يفقدك التمييز بين الأمرين. بنفس المنطق، أنت تبدأ تعلم البرمجة باستخدام إحدى لغات البرمجة، لكن المفاهيم العامة التي تكتسبها تبقى صالحة للتطبيق مع اللغات الأخرى.
الغرض من هذا الجزء هو تقديم هذه المفاهيم بشكل مختصر، لكنه كافٍ بإذن الله. هذا قد يستغرق وقتاً، لكن العائد يستحق. إذا كنت تريد مجرد تطبيق جاهز، فإنك لن تعدم أن تجد الكثير من الأمثلة في المنتدى وغيره، أما إذا كنت تريد أن تتعلم كيف تكتب التطبيق بنفسك، فأنت في الموضوع المناسب، مرحباً بك.
أنا أعلم أن البرمجة مستقلة عن قواعد البيانات، وقد تستخدم في غيرها من السياقات، لكن لا أستطيع أن أغفل التنبيه التالي: من فضلك، إذا كان هدفك من تعلم البرمجة هو كتابة تطبيقات من أجل قواعد البيانات (السبب الأرجح في هذا القسم)، فتأكد أولاً من أنك على اطلاع على مفاهيم تصميم قواعد البيانات. يمكنك الرجوع إلى أي مصدر، ويمكنك مثلاً أن تقوم بتنزيل الكتاب الذي يمثل الجزء الأول من هذه المذكرات هنا، وتمر عليه مستوضحاً عن أي نقطة مبهمة في موضوع مستقل هنا في القسم. من أجل أهمية هذا الأمر، أعتزم بإذن الله اقتطاع بعض الأجزاء المهمة من هذا الكتاب، وتقديمها في مواضيع مستقلة، من أجل أن تلقى نصيبها من القراءة والنقاش.
إلى كل من يريد أن ينضم إلينا، فليقل: أنا! (ولا داعي لأن يكتبها طبعاً)، ثم أرجو أن يراعي التالي:
1. التفاعل بعد كل حلقة بالسؤال والنقاش، كما أن باب التصحيح للأخطاء مفتوح ومحبّذ بشدة؛ لا تجامل الكاتب مطلقاً بالسكوت عن أخطائه، فإن هذا من خيانته.
2. التقيد بالسؤال في موضوع الحلقة أو الحلقات السابقة فقط، وعدم استباق المواضيع، لأن ذلك مدعاة إلى التشتيت. أتوقع أن أعيد الإشارة إلى هذه النقطة مراراً.
3. الصبر على الكاتب، فإن المشاغل كثيرة. الفترة الرسمية بين كل حلقتين هي أسبوع واحد، إلا أن ييسر الله بفراغ، أو يقدر بتأخير. لكن لاحظ من فضلك أن هذه الفترة من المفترض أن تكون غنية بالأسئلة والنقاشات حتى بين الأعضاء أنفسهم، مما قد يجعل لهذه الفترة مردوداً أكثر من الحلقة نفسها.
4. تجنب المديح والإطراء، ومحاولة قصر المشاركات على النقاش العلمي. ويكفي من أجل الشكر كلمة جزاك الله خيراً أو شكراً في بداية كلامك.
5. الجدية في القراءة والتعلم، يجب أن نبدأ في رفع مستوانا العام حتى نطمح فيما هو أبعد من ذلك.
طلب أخير من إخواني المشرفين، وهو عدم تثبيت الموضوع. إذا كان هناك الاهتمام الكافي، فإن الموضوع سيطفو دوماً حيث يكون بارزاً للعين بإذن الله.
والآن: أي اقتراحات؟
