أنواع البيانات
أخر ما تحدثنا عنه في الدرس السابق هو ( تحديد أنواع البيانات المطلوبة ) .. تعال معي هنا كي نتعرف على بعض أنواع البيانات :
· نصي ( Text ) ← يحتوي على عدد متغير من الحروف يصل طوله إلى 255 حرف ويستخدم مع البيانات التي لا تحتاج إلى إجراء عمليات حسابية عليها مثل الأسماء والعناوين والأكواد التي تشتمل على أرقام وحروف.
· مذكرة ( Memo ) ← يحتوي على عدد كبير من الحروف ( أكبر بكثير من 255 حرف ) ومن أمثلة استخداماته استخدامه لحفظ مواصفات منتج.
· عددي – صحيح ( Integer ) ← يحتوي على أرقام صحيحة ( بدون كسور عشرية ) ، ومن أمثلة استخداماته حفظ كمية الأصناف من منتج معين أو عدد السكان في حي معين.
· عددي - عشري ( Decimal ) ← يشتمل على أرقام تحتوي على كسور عشرية مثل تكلفة المنتج ، ضريبة المنتج .. الخ.
· تاريخ أو وقت ( DateTime ) ← يمكنك بتحديد نوع الحقل انه من هذا النوع ، عندها يمكنك حفظ قيم زمنية – تاريخ أو وقت - ، كما يمكنك التعامل معها كما تريد.
· منطقي ( Boolean ) ← يحدد بإحدى القيمتين True أو False .. أو Yes أو No .. ومثال على ذلك الحالة الاجتماعية لشخص معين ، هل هو متزوج ؟ فيكتب أمام هذا السؤال Yes بمعنى نعم ليدل على أنه متزوج أو يكتب No بمعنى انه غير متزوج.
· ثنائي ( Binary ) ← يمكن أن يشتمل على صور أو مقطوعات موسيقية أو كائنات OLE ، ومثال ذلك يمكن الاحتفاظ بصور الأصناف التي تعرض للبيع أو غير ذلك.
تحديد الجداول المطلوبة
بعد تحديد البيانات التي يحتاجها النظام يلزم تنظيم هذه البيانات داخل الجداول ، حيث يتم حفظ البيانات داخل جدول أو اكثر ويتم عمل العلاقات Relationships اللازمة بين هذه الجداول.
يحتوي الجدول دائما على مجموعة من البيانات بينها علاقة ، فمثلا جدول العملاء Customers يحتوي على بيانات منها اسم العميل – عنوان العميل – رقم التليفون - .. الخ ، وهي بيانات كثيرة ولكنها تختص بالعملاء فقط. أما إذا تناولنا جدول الطلبات فإننا نحتاج فيه إلى بيانات عن الطلبات مثل عدد الأصناف – كمية الأصناف – أسماء الأصناف – السعر – رقم الطلب – تاريخ الطلب – وبيانات أخرى عن العملاء مثل اسم العميل وعنوانه ورقم تليفونه.
لاحظ معي حجم هذه البيانات وهل يصلح جمعها في جدول واحد أم لا ؟ فإذا تم جمع هذه البيانات كلها في جدول واحد فإننا سنقع في مشكلتين: المشكلة الأولى هي الزيادة الهائلة في حجم البيانات نتيجة تكرارها. انظر الشكل التالي ، تلاحظ لن كل بيانات العميل مثل الاسم والعنوان والتليفون تتكرر مع كل طلبية.
والمشكلة الثانية هي تكرار العمل ومثال ذلك إذا تغير رقم تليفون أحد العملاء ، فانه يلزم تعديل الرقم في جميع السجلات التي تحتوي على هذا الرقم وقد يتم في هذه الحالة تعديل الرقم في جميع السجلات التي تحتوي على هذا الرقم وقد يتم في هذه الحالة تعديل معظم سجلات الجدول.
ولعلاج المشكلتين السابقتين ، ننصح بتقسيم هذا الجدول إلى جدولين : جدول لبيانات العملاء ولآخر لأوامر الشراء كما في الشكل التالي :
ويتم ربط الجدولين بناءا على بيانات حقل مشترك بينهما. مثلا حقل رقم العميل ، في هذا المثال يجب إضافة حقل جديد داخل جدول العملاء يحتوي على رقم أو كود العميل وبذلك يمكننا التعامل مع أي بيان يخص العميل عن طريق معرفة رقمه ، ويتم أيضاً إضافة حقل جديد داخل جدول الطلبات يحتوي على رقم العميل. وبذلك نكون قد وصلنا إلى نفس النتيجة المطلوبة من وضع البيانات داخل جدول واحد وبالتالي فان تغيير رقم تليفون العميل يتم في سجل واحد فقط في جدول العملاء.
حساب حجم البيانات
من الأمور الهامة والتي يجب أن تأخذ في الاعتبار عند تصميم نظام لقاعدة بيانات حساب حجم البيانات والزيادة المتوقعة لها ، فيتم حساب المساحة المتاحة للتخزين على وسيط التخزين ( قرص صلب مثلا ) وليكن 100 ميجا بايت ، ويتم حساب حجم الزيادة الشهرية في البيانات فإذا كانت نسبة الزيادة كبيرة بالنسبة لحجم المساحة المتاحة على القرص الصلب فيلزم إعادة تصميم قاعدة بيانات بأسلوب افصل يوفر المساحة المطلوبة ولا يكون ذلك على حساب كفاءة النظام من حيث السرعة أو دقة البحث عن معلومة مطلوبة.
تصميم جداول تابعة
من الحلول التي يمكن أن نستخدمها لتجنب البيانات المتكررة تصميم جداول متفرعة أو تابعة لجداول أخرى. فمثلا في جدول العملاء توجد عائلات كاملة بأفرادها تحمل نفس البيانات واللقب والعنوان ولا يوجد اختلاف إلا في اسم العميل فقط ، في مثل هذه الحالة يمكن عمل جدول بيانات للعائلات ( جدول جديد ) يحتوي على بيانات كل عائلة في سجل واحد ( بدلا من استخدام سجل لكل فرد في العائلة ) ونضيف فيه حقل نسميه رقم العائلة حتى يسهل الوصول إلى بيانات العائلة بمجرد معرفة هذا الرقم ويتم استخدام نفس الرقم مع جدول العملاء الذي سوف تقتصر المعلومات بداخله على اسم العميل ورقم العمل وتاريخ الميلاد فقط.
في أحوال أخرى نجد أن بيانات العملاء قد تشترك في أسماء المدن والأحياء ويصبح من الضروري أن نقوم بعمل جدول جديد ( جدول الأحياء ) ويحتوي على رقم الحي واسم الحي واسم المدينة وهذا قد يؤدي إلى اختصار شديد في البيانات الموجودة داخل قاعدة البيانات.
أخر ما تحدثنا عنه في الدرس السابق هو ( تحديد أنواع البيانات المطلوبة ) .. تعال معي هنا كي نتعرف على بعض أنواع البيانات :
· نصي ( Text ) ← يحتوي على عدد متغير من الحروف يصل طوله إلى 255 حرف ويستخدم مع البيانات التي لا تحتاج إلى إجراء عمليات حسابية عليها مثل الأسماء والعناوين والأكواد التي تشتمل على أرقام وحروف.
· مذكرة ( Memo ) ← يحتوي على عدد كبير من الحروف ( أكبر بكثير من 255 حرف ) ومن أمثلة استخداماته استخدامه لحفظ مواصفات منتج.
· عددي – صحيح ( Integer ) ← يحتوي على أرقام صحيحة ( بدون كسور عشرية ) ، ومن أمثلة استخداماته حفظ كمية الأصناف من منتج معين أو عدد السكان في حي معين.
· عددي - عشري ( Decimal ) ← يشتمل على أرقام تحتوي على كسور عشرية مثل تكلفة المنتج ، ضريبة المنتج .. الخ.
· تاريخ أو وقت ( DateTime ) ← يمكنك بتحديد نوع الحقل انه من هذا النوع ، عندها يمكنك حفظ قيم زمنية – تاريخ أو وقت - ، كما يمكنك التعامل معها كما تريد.
· منطقي ( Boolean ) ← يحدد بإحدى القيمتين True أو False .. أو Yes أو No .. ومثال على ذلك الحالة الاجتماعية لشخص معين ، هل هو متزوج ؟ فيكتب أمام هذا السؤال Yes بمعنى نعم ليدل على أنه متزوج أو يكتب No بمعنى انه غير متزوج.
· ثنائي ( Binary ) ← يمكن أن يشتمل على صور أو مقطوعات موسيقية أو كائنات OLE ، ومثال ذلك يمكن الاحتفاظ بصور الأصناف التي تعرض للبيع أو غير ذلك.
تحديد الجداول المطلوبة
بعد تحديد البيانات التي يحتاجها النظام يلزم تنظيم هذه البيانات داخل الجداول ، حيث يتم حفظ البيانات داخل جدول أو اكثر ويتم عمل العلاقات Relationships اللازمة بين هذه الجداول.
يحتوي الجدول دائما على مجموعة من البيانات بينها علاقة ، فمثلا جدول العملاء Customers يحتوي على بيانات منها اسم العميل – عنوان العميل – رقم التليفون - .. الخ ، وهي بيانات كثيرة ولكنها تختص بالعملاء فقط. أما إذا تناولنا جدول الطلبات فإننا نحتاج فيه إلى بيانات عن الطلبات مثل عدد الأصناف – كمية الأصناف – أسماء الأصناف – السعر – رقم الطلب – تاريخ الطلب – وبيانات أخرى عن العملاء مثل اسم العميل وعنوانه ورقم تليفونه.
لاحظ معي حجم هذه البيانات وهل يصلح جمعها في جدول واحد أم لا ؟ فإذا تم جمع هذه البيانات كلها في جدول واحد فإننا سنقع في مشكلتين: المشكلة الأولى هي الزيادة الهائلة في حجم البيانات نتيجة تكرارها. انظر الشكل التالي ، تلاحظ لن كل بيانات العميل مثل الاسم والعنوان والتليفون تتكرر مع كل طلبية.
والمشكلة الثانية هي تكرار العمل ومثال ذلك إذا تغير رقم تليفون أحد العملاء ، فانه يلزم تعديل الرقم في جميع السجلات التي تحتوي على هذا الرقم وقد يتم في هذه الحالة تعديل الرقم في جميع السجلات التي تحتوي على هذا الرقم وقد يتم في هذه الحالة تعديل معظم سجلات الجدول.
ولعلاج المشكلتين السابقتين ، ننصح بتقسيم هذا الجدول إلى جدولين : جدول لبيانات العملاء ولآخر لأوامر الشراء كما في الشكل التالي :
ويتم ربط الجدولين بناءا على بيانات حقل مشترك بينهما. مثلا حقل رقم العميل ، في هذا المثال يجب إضافة حقل جديد داخل جدول العملاء يحتوي على رقم أو كود العميل وبذلك يمكننا التعامل مع أي بيان يخص العميل عن طريق معرفة رقمه ، ويتم أيضاً إضافة حقل جديد داخل جدول الطلبات يحتوي على رقم العميل. وبذلك نكون قد وصلنا إلى نفس النتيجة المطلوبة من وضع البيانات داخل جدول واحد وبالتالي فان تغيير رقم تليفون العميل يتم في سجل واحد فقط في جدول العملاء.
حساب حجم البيانات
من الأمور الهامة والتي يجب أن تأخذ في الاعتبار عند تصميم نظام لقاعدة بيانات حساب حجم البيانات والزيادة المتوقعة لها ، فيتم حساب المساحة المتاحة للتخزين على وسيط التخزين ( قرص صلب مثلا ) وليكن 100 ميجا بايت ، ويتم حساب حجم الزيادة الشهرية في البيانات فإذا كانت نسبة الزيادة كبيرة بالنسبة لحجم المساحة المتاحة على القرص الصلب فيلزم إعادة تصميم قاعدة بيانات بأسلوب افصل يوفر المساحة المطلوبة ولا يكون ذلك على حساب كفاءة النظام من حيث السرعة أو دقة البحث عن معلومة مطلوبة.
تصميم جداول تابعة
من الحلول التي يمكن أن نستخدمها لتجنب البيانات المتكررة تصميم جداول متفرعة أو تابعة لجداول أخرى. فمثلا في جدول العملاء توجد عائلات كاملة بأفرادها تحمل نفس البيانات واللقب والعنوان ولا يوجد اختلاف إلا في اسم العميل فقط ، في مثل هذه الحالة يمكن عمل جدول بيانات للعائلات ( جدول جديد ) يحتوي على بيانات كل عائلة في سجل واحد ( بدلا من استخدام سجل لكل فرد في العائلة ) ونضيف فيه حقل نسميه رقم العائلة حتى يسهل الوصول إلى بيانات العائلة بمجرد معرفة هذا الرقم ويتم استخدام نفس الرقم مع جدول العملاء الذي سوف تقتصر المعلومات بداخله على اسم العميل ورقم العمل وتاريخ الميلاد فقط.
|
|