بسم الله الرحمن الرحيم
الدرس الثاني
ملاحظة مهمة : ما بين القوسين تنبيه او ما اتوقعه من القاريء
اسم الدرس : مدخلك الى تصميم قواعد البيانات
نوع الدرس : نظري مع مفاهيم أساسية ...
صعوبة الدرس : *** من *****
الوقت المتوقع منك لفهم الدرس : ساعة و 30 دقيقة ربما تزيد كثيرا أو تنقص
متطلبات تتوفر فيك : تحمل على قراءة السطور .. وتفهمها لكي ترتاح مستقبلا
ملاحظات :
- قد لا تفهم بعض النقاط !! لا تخف .. سوف تعرفها بالتمرس والتكرار فيما بعد ,,
- أصابني التعب والإعياء في هذا الدرس الصغير , لكي اجعله مفهوم لدرجة أن الأبله يفهمه !
المتوقع منك في هذا الدرس :
- معرفة أكثر عن قواعد البيانات
- معرفة أكثر في قواعد البيانات العلائقية
- معرفة ما هو المفتاح الاساسي
- العلاقات وانواعها
- ماهو المفتاح الاجنبي
===================================
قواعد البيانات .. بتعمق :
تحدثنا عن قواعد البيانات وقلنا انه مجموعة من البيانات مخزنة بطريقة نموذجية دون تكرار والمتصلة مع بعضها وفق علاقات متبادلة .
وانها
ملفات تركيبتها خاصة .. (لماذا لها هذه التركيبة الخاصة ؟) لكي تستوفي بعض
الشروط وبعض المميزات سوف اذكر بعض منها .. بعد ان قرأتها في احد المذكرات
الالكترونية من الكاتب "الاسيف" جزاه الله الف الف خير وبعض المميزات
مايلي :
- عدم تكرار البيانات
- تجانس وتوافق البيانات : أي مهما حدث من تغيير في البيانات لا تتأثر بنية البيانات
- قابلية التطوير : بامكاننا ان نطور قاعدة البيانات بسهولة وبدون ان نحذف القديم
- استقلالية البيانات عن البرامج .
- السرية
- امكانية وصول اكثر من مستخدم لقواعد البيانات
ذكر
لنا الاخ أسيف انه يوجد احد الانظمة القديمة التي تسمى بنظام الملفات
التقليدية وهو نظام استخدم قبل قواعد البيانات.. كانوا يخزنون البيانات في
ملفات مستقلة (مستقلة = لا يوجد بينها علاقة ) وبها عيوب وهي :
- التكرار :
مثلا للطلاب ملف خاص وبهذا الملف معلومات الطلاب . اسم الطالب , رقم الطالب , معدله ......
للمدرسين ملف خاص وبهذا الملف معلومات المدرسين . اسم المدرس , رقم المدرس , راتبه ....
طيب
... لو اردنا اسماء المدرسين الذين الطالب احمد ؟ او اسماء كل الطلبة
الذين يدرسون عند المدرس خالد ؟ مالحل ؟ طبعا ملف ثالث وفيه اسماء الطلبة
ومدرسيهم .. يعني تكراااااااار ...
سوف يتم كتابة معلومات الطلبة والمدرسين مرة اخرى في هذا الملف الثالث
ولا اعرف ما اذا كان في هذا النظام القديم يتم عمل ملف رابع وفيه اسماء المدرسين وطلبتهم ؟ ولكن لا نستغرب اذا كان هناك ملف رابع .
- عدم توافق البيانات
يجب
ان لا نفقد تجانس وتوافق البيانات اذا عدلنا او اضفنا او حذفنا بيانات ,,
لكن في مثالنا السابق.. قلنا انه يوجد ملف طلاب .. وملف مدرسين .. وملف
الطلاب ومدرسينهم , فلو حذفنا طالب في ملف الطلاب ولم نحذفه في الملف
الثالث (الملف المشترك بين الطلاب والمدرسين) فسوف نجد معلوماته في ملف و
ولا نجده في الملف الاخر .
فهذه ميزة في قواعد البيانات , وهي عيب في نظام الملفات التقليدية .
- زيادة زمن بناء الانظمة :
لماذا الزمن يزيد مع هذا النظام ؟ لاننا سوف نلجأ الى انشاء ملفات كثيرة لتحقيق المتطلبات المختلفة .
-
الحاجة المستمرة لاعادة هيكلة البرامج والملفات : أي ان التطوير صعب جدا
.. يفرض علينا ان نغير ونبدل ونضحي عن بعض هيكلة البرامج والملفات القديمة
.
==========================================
قواعد البيانات العلائقية ... بتعمق
تحدثنا
عن نظام قواعد البيانات العلائقية .. وقلنا بأنه تمثيل البيانات بجداول
ثنائية الابعاد (2D- Table ) , صفوفها سجلات , واعمدتها حقول .
الان
اريدك ان تعرف مسمى للاعمدة .. لان المسميات مزعجة قليلا .. فمثلا
Attribute" " (خصائص .. او صفات ).... فهي تخص الاعمدة .. أي ان الحقول
(Field) هي نفسها خصائص هي نفسها صفات هي نفسها الاعمدة .
الان يجب ان نراعي في قاعدة البيانات العلائقية وجود المفاهيم التالية :
- اسم للجدول : مثل جدول الطالب , جدول المواد , جدول ......
- الصفات : المقصود بها الاعمدة .. تسمى صفات الجدول كما ذكرنا ... مثل اسم الطالب , رقم الطالب ..... الخ
-
مجال القيم (Domain) :المقصود بها .. القيم الموجودة بداخل اسم الطالب
مثلا , كم تأخذ حرف ؟ مثال اخر , رقم الطالب .. ماهو مجاله ؟؟ يعني هل من
0 – 9999 ؟؟ او من 0- 100000 مثلا ؟؟ ويمكننا تحديد مجال القيم لكل صفة
على حسب احتياجنا .(لم افهم؟)
مثلا العمود "اسم الطالب" انا افرض انه يأخذ 15 حرف كحد اقصى .. و3 حروف كحد ادنى
والعمود "المعدل " افرضه من صفر الى 5 وان يكون كسري
والعمود
"راتب المدرس" مثلا .. افرضه من 3500 ريال الى 9000 ريال ... بالعقل يعني
هل من الممكن ان يكون راتب مدرس صفر ريال ؟؟ اذن مجال راتب المدرس هو من
3500 الى 9000
- العلاقة (Relation) : مثلا جدول المواد وجدول الطلاب , بينهما علاقة (Relation) ماهي هذه العلاقة ؟ سوف تعرف ذلك فيما بعد
- المفتاح الرئيسي للجدول (Primary key) : ماهو هذا المفتاح ؟ مجرد عمود , ولكن هذا العمود له شروط لكي يصبح مفتاح رئيسي للجدول .
* المفتاح الاساسي :
الشروط اللازمة لتوفرها في العمود لكي يكون مفتاح اساسي هو :
1- عدم التكرار
2- ان لا يكون خالي
وهذا العمود له غرض مهم جدا . وهو ان نميز الصف من بين الصفوف (لم افهم ؟)
انظر المثال :
يوجد لدينا جدول خاص بالموظفين لاحد الشركات
جدول الموظفين كما يلي : (صورة 12 )
مارأيك .. ما هو العمود الذي ترى انه مفتاح اساسي .. أي عمود لم يتكرر او لم يكن خاليا ؟
انا
اقول "اسم الموظف الاول " ... هذا العمود هو المفتاح الاساسي !! هل هذا
صحيح ؟ طبعا لا ,, لماذا ؟ لانه تكرر فيه صفين .. هما خالد و خالد
هل "اسم الاب " هو المفتاح الاساسي ؟ لا لان سعيد تكرر مرتين .
هل "الراتب " هو المفتاح الاساسي ؟ لا
هل تاريخ الميلاد هو المفتاح الاساسي ؟ لا
هل
المكافئة الاضافية هو المفتاح الاساسي ؟ نعم لانه لم يتكرر ... ولكن لحظة
!! قلنا انه من صفات المفتاح الاساسي ان لا يتكرر + ان لا يكون فيه قيم
خالية
والمكافئة الاضافية .. عمود لا يستحق ان يكون مفتاح اساسي .
لان به قيم خالية ... فمثلا محمد سعيد الثاني لا يوجد لديه مكافئة اضافية
(قيمة خالية)
(ما الحل ؟) نضيف عمود نجده يصلح بأن يكون مفتاح اساسي
(لماذا نضيف عمود .. ونزيد كمية البيانات بلا داعي؟) بل يوجد هناك سبب مقنع لاضافته ..
من
جدول الموظفين (الصورة 12 السابقة ) اريد معلومات خالد منصور بذاته ...
سوف تجد ان هناك اثنين ولا استطيع التمييز بينهما يمكن يكون هناك 1000
موظف اسمه خالد منصور ولا نعرف ان نفرق بينهما
انا من ناحيتي ...
ارى ان نضيف عمود جديد ويسمى "رقم بطاقة الاحوال المدنية" وهو رقم لا
يتكرر ابدا بين المواطنين في دولة ما .. ولا يمكن ان يكون خاليا !!
ماذا تقترح انت ؟ مارأيك ان نضيف مثلا عمود يسمى رقم الموظف كما في الجدول التالي (الصورة22)
اذن المفتاح الاساسي هو رقم الموظف ... لو أتى موظف جديد نعطيه الرقم 6 ...
مع العلم ان المفتاح الاساسي في الجدول يجب ان يكون تحته خط .. كما تشاهد الخط تحت رقم الموظف
-------------------------------------------------------------------
معلومة اضافية : بعض الشركات تعمل برامج خاصة تولد المفتاح الرئيسي (كيف تولد المفتاح الرئيسي ؟)
مثلا
تأخذ اول حرف من اسمه واول حرف من اسم الاب وتأخذ سنة ولادته وتضيف عداد
بجانب الرمز الناتج على سبيل المثال وتولد المفتاح الاساسي من هذه
المعلومات . على سبيل المثال .. الموظف سامي عبدالرحمن (انظر الصورة 22)
ممكن يكون رمزه " سع 1401_01" بدلا من الرقم 5 (في الصورة 22)
ولو فيه موظف اخر اسمه سامي عبدالرحمن ومولود في نفس سنة سامي عبدالرحمن السابق فان رمزه هو
"سع 1401_02"
وهذا مجرد مثال .... على حسب الشركة على حسب الغرض ينتج الرمز .
تابع الدرس التانى