في مقالتي السابقة مقدمة لمشروع التخرج : تصميم موقع لشركة طيران يدعم خدمات الجوال تحدثت عن المشروع و أعطيت نبذة مختصرة و عامة عن فكرة المشروع و أبرز ما يقدمه من خدمات و كما ذكرت سابقاً كانت الخطوة الإولى هي تجميع أكبر قدر من المعلومات عن عمليات الحجز الإلكتروني عن طريق الإنترنت و كذلك عن أنظمة شركات الطيران بشكل خاص.
أما الخطوة التالية و التي تعتبر حجر الأساس و العمود الذي يقوم عليه المشروع هي بناء قاعدة البينات .
لقد كان التحدي الأكبر أثناء هذه المرحلة ليس فقط بناء قاعدة البينات ولكن وضع نظام لشركت طيران كاملة و محاولت معرفت أفضل االطرق لعمل ذلك و كما ذكرت سابقاً ما وجدناه من معلومات هو ما كانت تعرضه مواقع شركات الطيران على الإنترنت و لم يكن من السهل الذهاب للمطار أو أحد شركات الطيران وسؤالها عن نظامها .
و أعطيك هنا مثال عن أحد العمليات التي يفترض بنا أنجد أفضل طريق لتمثيلها في قاعدة البينات و ماسأذكره في هذا المثال يمثل قطرة في بحر و مثال مبسط جداً أنظر للصورة التالية:
A قام بحجز رحلة و كان معه في الرحلة B و C وD أي قام بحجز لأربعة أشخاص وكان هو المسؤول عن الحجز وكذلك قام بحجز رحلة أخرى و كان معه فيها B و X و هو المسؤول عن الحجز أما D فقام بحجز رحلة أخرى و كان معه F و E .
بالإضافة لذلك يمكن ل A بما أنه قام بحجز رحلة سابقاً و أصبح له سجل في النظام أن يحجز لأشخاص دون أن يسافر معهم و يكون هو المسؤول عن حجزهم .
و حتى تعرف إلى أين أريد الوصول تابع معي في التالي :
يفترض أن كل شخص مسؤول يريد أدارة الرحلات التي قام بحجهزها أن تظهر له واجهة تحوي على كل الرحلات التي قام بحجزها سواء كانت رحلات مؤكده أو رحلات قام بإلغائها أو رحلات سابقة بالإضافة عند دخوله على كل رحلة يفترض به إيجاد بيانات جميع المسافرين في هذه الرحلة.
قد يعتقد البعض بأن هذا الأمر سهل عند قرأته لهذا الكلام ولكن لم يكن من السهل الوصول إلى بناء قاعدة تمثل هذه العملية و في نفس الوقت تلتزم بأهم الأسس الازم أتبعها في تصميم أي قاعدة مع ملاحظة أن المثال السابق هو جزء صغير فقط من عمليات متداخلة و متشابكة تزيد من صعوبت الأمر بكثير جداً .
و لم تقتصر المشاكل فقط على تصميم النظام بل كذالك على البيانات التي يفترض إدخالها في النظام والتي هي الأخرى كانت بحاجة للبحث ودراسة و من الأمثلة على هذه المشكلة كان رمز تعريف أو ما يعرفه المبرمجين ب ID .
فعلى سبيل المثال فعند وضعنا للجدول الخاص بالمطارات أعتقدنا بأنه قد يأخذ رمز تعريف عادي و لكن ما أكتشفناه لاحقاً بأن المطارات تستخدم رمز تعريف ثلاثي و الذي يعرف برمز الاتحاد الدولي للنقل الجوي للمطارات IATA لذلك كان لابد من التعرف على هذه الرموز أيضاً .
أما المشكلة التي كادت تؤدي بي إلى الجنون وضحكت على نفسي عند معرفتي لسبب المشكلة فكان طول الحقل !
لقد كنت أقرء كثيرأ عن أن طول الحقل و نوعه يحتاج لأن يكون مدروس جيدأ ليس فقط لأن ذلك قد يؤثر على حجم قاعدة البيانات فقط و لكن قد يسبب الكثير من المشاكل عند دخول في عملية البرمجة .
المشكلة التي صادفتني كانت في المقارنة و جلب السجلات التي تتوافق مع شروط معينة أو تطابق بيانات معينة وحتى تكون المشكلة واضحة خذ المثال التالي : لدي جدول أحد الحقول فيها تحوي على كلمة Space أو يكون هذا الحقل لا يحوي على بيانات .
قمت بإضافة العديد من السجلات في هذا الجدول و الذي كان بعض حقولها يأخذ هذه الكلمة أو يبقى فارغاً المشكلة كانت عندما أكتب كود برمجي لجب جميع السجلات التي يكون هذا الحقل فيها يحوي على هذه الكلمة كان الإستعلام لا يعطي نتيجة برغم من أن الكود البرمجي صحيح و السجلات موجوده فعلاً ! إذاً أين تكمن المشكلة !
المشكلة بأن طول الحقل كان بطول عشرة أحرف أي في المقارنة كنت أقارن كلمة Space ذات الخمسة أحرف مع كلمة
_ _ _ _ _Space ذات العشرة أحرف حيث الشرطات هنا تمثل الفراغ و لهذا لم يكن الإستعلام يعطي أي نتيجة .
و لم يكن إكتشاف هذه المشكلة سهلاً وما ساعدني على إكتشافها هو تتبع تنفيذ الكود خطوة خطوة أو مايعرفه المبرمجين بأستخدام Debug .
أما حل هذه المشكلة فكان له تجاهان أولاً أن أضبط طول الحق جيداً و ثانياً أن أصبح صديقة ل Trim و التي تقوم بإزالت الفراغت الزائدة عند تعاملنا مع البيانات من نوع String وهذه مشكلة لن أنساها فقد تعلمتها بطريقة صعبة .
و أخيراً النتيجة النهائبة التي وصلنا لها مع قاعدة البيانات كانت مفاجأة لنا , لقد كنا نعلم بأن حجم القاعدة سيكون كبير ولكن لم نتوقع أن تكون بهذا الحجم ليس فقط من ناحية عدد الجداول و لكن كذلك من ناحية عدد الحقول وهنا خذ بعين الإعتبار بأن سابقاً كان أكبر عدد من الجدول التي كنا قد تعاملنا معها في مره وحده كان لا يتجاوز الواحد أو ثلاتة , و لكن التعامل مع 30 جدول في مرة واحدة و عدد من الحقول قد تصل في بعض الجداول إلى 40 حقل فقد كانت مفاجأة كبرى و أكبر منها هي تعبئت هذه القاعدة بالبيانات فهذه المرحله هي الأخرى كانت مشكله فكثير من الجداول كان يعتمد على جداول اخرى و التي بدورها كذلك تعمتد على جداول أخرى أي حتى تدخل بيانات في جدول محدد لابد أن تتأكد بأن جميع الجداول التي يعتمد عليها قد أدخل فيها البيانات سابقاً و بشكل صحيح .
و الصورة التالية تمثل لقطة لقاعدة البيانات وجداولها
أما الخطوة التالية و التي تعتبر حجر الأساس و العمود الذي يقوم عليه المشروع هي بناء قاعدة البينات .
لقد كان التحدي الأكبر أثناء هذه المرحلة ليس فقط بناء قاعدة البينات ولكن وضع نظام لشركت طيران كاملة و محاولت معرفت أفضل االطرق لعمل ذلك و كما ذكرت سابقاً ما وجدناه من معلومات هو ما كانت تعرضه مواقع شركات الطيران على الإنترنت و لم يكن من السهل الذهاب للمطار أو أحد شركات الطيران وسؤالها عن نظامها .
و أعطيك هنا مثال عن أحد العمليات التي يفترض بنا أنجد أفضل طريق لتمثيلها في قاعدة البينات و ماسأذكره في هذا المثال يمثل قطرة في بحر و مثال مبسط جداً أنظر للصورة التالية:
A قام بحجز رحلة و كان معه في الرحلة B و C وD أي قام بحجز لأربعة أشخاص وكان هو المسؤول عن الحجز وكذلك قام بحجز رحلة أخرى و كان معه فيها B و X و هو المسؤول عن الحجز أما D فقام بحجز رحلة أخرى و كان معه F و E .
بالإضافة لذلك يمكن ل A بما أنه قام بحجز رحلة سابقاً و أصبح له سجل في النظام أن يحجز لأشخاص دون أن يسافر معهم و يكون هو المسؤول عن حجزهم .
و حتى تعرف إلى أين أريد الوصول تابع معي في التالي :
يفترض أن كل شخص مسؤول يريد أدارة الرحلات التي قام بحجهزها أن تظهر له واجهة تحوي على كل الرحلات التي قام بحجزها سواء كانت رحلات مؤكده أو رحلات قام بإلغائها أو رحلات سابقة بالإضافة عند دخوله على كل رحلة يفترض به إيجاد بيانات جميع المسافرين في هذه الرحلة.
قد يعتقد البعض بأن هذا الأمر سهل عند قرأته لهذا الكلام ولكن لم يكن من السهل الوصول إلى بناء قاعدة تمثل هذه العملية و في نفس الوقت تلتزم بأهم الأسس الازم أتبعها في تصميم أي قاعدة مع ملاحظة أن المثال السابق هو جزء صغير فقط من عمليات متداخلة و متشابكة تزيد من صعوبت الأمر بكثير جداً .
و لم تقتصر المشاكل فقط على تصميم النظام بل كذالك على البيانات التي يفترض إدخالها في النظام والتي هي الأخرى كانت بحاجة للبحث ودراسة و من الأمثلة على هذه المشكلة كان رمز تعريف أو ما يعرفه المبرمجين ب ID .
فعلى سبيل المثال فعند وضعنا للجدول الخاص بالمطارات أعتقدنا بأنه قد يأخذ رمز تعريف عادي و لكن ما أكتشفناه لاحقاً بأن المطارات تستخدم رمز تعريف ثلاثي و الذي يعرف برمز الاتحاد الدولي للنقل الجوي للمطارات IATA لذلك كان لابد من التعرف على هذه الرموز أيضاً .
أما المشكلة التي كادت تؤدي بي إلى الجنون وضحكت على نفسي عند معرفتي لسبب المشكلة فكان طول الحقل !
لقد كنت أقرء كثيرأ عن أن طول الحقل و نوعه يحتاج لأن يكون مدروس جيدأ ليس فقط لأن ذلك قد يؤثر على حجم قاعدة البيانات فقط و لكن قد يسبب الكثير من المشاكل عند دخول في عملية البرمجة .
المشكلة التي صادفتني كانت في المقارنة و جلب السجلات التي تتوافق مع شروط معينة أو تطابق بيانات معينة وحتى تكون المشكلة واضحة خذ المثال التالي : لدي جدول أحد الحقول فيها تحوي على كلمة Space أو يكون هذا الحقل لا يحوي على بيانات .
قمت بإضافة العديد من السجلات في هذا الجدول و الذي كان بعض حقولها يأخذ هذه الكلمة أو يبقى فارغاً المشكلة كانت عندما أكتب كود برمجي لجب جميع السجلات التي يكون هذا الحقل فيها يحوي على هذه الكلمة كان الإستعلام لا يعطي نتيجة برغم من أن الكود البرمجي صحيح و السجلات موجوده فعلاً ! إذاً أين تكمن المشكلة !
المشكلة بأن طول الحقل كان بطول عشرة أحرف أي في المقارنة كنت أقارن كلمة Space ذات الخمسة أحرف مع كلمة
_ _ _ _ _Space ذات العشرة أحرف حيث الشرطات هنا تمثل الفراغ و لهذا لم يكن الإستعلام يعطي أي نتيجة .
و لم يكن إكتشاف هذه المشكلة سهلاً وما ساعدني على إكتشافها هو تتبع تنفيذ الكود خطوة خطوة أو مايعرفه المبرمجين بأستخدام Debug .
أما حل هذه المشكلة فكان له تجاهان أولاً أن أضبط طول الحق جيداً و ثانياً أن أصبح صديقة ل Trim و التي تقوم بإزالت الفراغت الزائدة عند تعاملنا مع البيانات من نوع String وهذه مشكلة لن أنساها فقد تعلمتها بطريقة صعبة .
و أخيراً النتيجة النهائبة التي وصلنا لها مع قاعدة البيانات كانت مفاجأة لنا , لقد كنا نعلم بأن حجم القاعدة سيكون كبير ولكن لم نتوقع أن تكون بهذا الحجم ليس فقط من ناحية عدد الجداول و لكن كذلك من ناحية عدد الحقول وهنا خذ بعين الإعتبار بأن سابقاً كان أكبر عدد من الجدول التي كنا قد تعاملنا معها في مره وحده كان لا يتجاوز الواحد أو ثلاتة , و لكن التعامل مع 30 جدول في مرة واحدة و عدد من الحقول قد تصل في بعض الجداول إلى 40 حقل فقد كانت مفاجأة كبرى و أكبر منها هي تعبئت هذه القاعدة بالبيانات فهذه المرحله هي الأخرى كانت مشكله فكثير من الجداول كان يعتمد على جداول اخرى و التي بدورها كذلك تعمتد على جداول أخرى أي حتى تدخل بيانات في جدول محدد لابد أن تتأكد بأن جميع الجداول التي يعتمد عليها قد أدخل فيها البيانات سابقاً و بشكل صحيح .
و الصورة التالية تمثل لقطة لقاعدة البيانات وجداولها
يا أخي أنا عندي نفس المشروع
ردحذفياريت لو تقدر تساعدني أو ترسل اللي تقدر عليه
atccor@yahoo.com
السلام عليكم ياأخي أنا كذلك مشروعي قاعدة بيانات لشركة طيران فهل من الممكن أن تساعدني
ردحذفلان الدكتورة الي ماسكه الماده جداً معقدة
ومارح أنسالك هالمعروف ............
وهذا إيميلي
nicegirl1973@windowslive.com
مرحباً ياأخي ياليت ترد علي هل من الممكن أن تساعدنا في المشروع أتمنى أنك تستطيع مساعدتنا
ردحذف.... ويكتبها الله لك في ميزان حسناتك ,,,, وشكراً
إيميلي :
nicegirl1973@windowslive.com