متطلبات قبل البدء :اهداف الدرس :
- مقدمه عن قواعد البيانات
- قواعد البيانات مقابل نظام الملفات
- لماذا قواعد البيانات
- قاعدة البيانات MySQL
- معرفات قواعد البيانات
- انواع الاعمده في قواعد البيانات
- امثله على قواعد البيانات
- العلاقات في قواعد البيانات
- طرق ربط العلاقات في قواعد البيانات
- تصميم قاعدة بيانات
ملاحظه عن درس اليوم: هذه مقدمه عن قواعد البيانات ومختصره , وسوف يتم الشرح بالكامل في قسم خاص عن قواعد البيانات مستقبلا
مقدمه عن قواعد البيانات :قواعد البيانات بحر كبير , كل ما تراه من الانظمه الحاليه والمتطوره,
اساس نجاحها قواعد البيانات ولكن تتسائل ماهي قواعد البيانات ؟ قواعد
البيانات عباره عن قاعدة بها جداول توجد بها المعلومات الي تقوم بتخزينها ,
غير واضح صحيح ؟ انظر حولك في البيت, هل يوجد لديك مكتب, اعتبره قاعدة
البيانات, في هذا المكتب يوجد ادراج تضع بها اورقاك واشياء الشخصيه, درج
للاقلام , درج للكتب , و درج للاوراق وهذه هي اماكن التخزين في قاعدة
البيانات وماتسمى بي الجداول.
قواعد البيانات مقابل نظام الملفات :لو تسآلت لماذا نستخدم قواعد البيانات ؟ لماذا لا نستخدم ملف ونضع فيه
معلوماتنا, الاجابه بسيطه. طرق التخزين , المساحه , سهولة الاستعلام
طرق التخزين :
في الملفات نقوم بالتخزين بطريقه صعبه , فلو قلنا كل سطر يحوي على
معلومات مستخدم لدينا بالموقع , وفي هذا السطر فواصل تفصل كل معلومه على
حده مثل ( الاسم , العمر , كلمة المرور ) تخيل معي كيف ستقوم بقرائة هذا
الملف وماهي الطريقة التي ستستخرج بها المعلومات , طريقه طويله لتقوم بعمل
هذا كله ولكن مع قواعد البيانات فهي سهله جدا , فقط تقوم بتعيين نوع الحقل
الذي تريده وتضع به القيم وهي تقوم بعمل الباقي من ترتيب ومن استخراج ومن
وضع كل قيمه لوحدها وغيرها من الشروط مثل عدم التكرار.
المساحه :
تخيل موقع الياهو الذي يملك اكثر من مليون مستخدم , كم ملف سوف يقوم
بإستيعاب جميع هؤلاء المستخدمين ؟ وكم سوف تكون احجام الملفات ؟ هل هو شي
منطقي ؟ غير ان استخراج معلومه ما سوف يكون بطيئ جدا فهو غير منطقي اساسا,
لكن مع قواعد البيانات فهو مسهل بطريقه ممتازه, مرتب بطريقه جيده, ولا يأخذ
حيزا كبيرا مثل الملفات , وعند القراء يكون اسرع.
سهولة الاستعلام :
لو نرجع الى مثالنا , الملف الذي يحوي على اسماء المسجلين بالموقع ,
تخيل انهم 1000 مستخدم , كل مستخدم في سطر بالملف, لو اردت ان تقارن الاسم
في الملف بالاسم الذي ادخله المستخدم فسوف تحتاج الى تقوم بقراء الملف
كاملا اي 1000 سطر, لكي تقوم بإيجاد المعلومه المطلوبه , سوف تقول ماذا لو
كان المستخدم في اول الملف , اذن ماذا لو كان في اخر الملف وكان رقم 1000 ؟
اعتقد ان الصوره وضحت. لكن مع قواعد البيانات فالاستعلام سهل جدا عن طريق
اللغه المسماه SQL , فهي لغة منطقيه جدا وطريقتها سهله جدا فمجرد ان تقول
اختر من الجدول ( مستخدمين ) القيمه التي تساوي ( اسم المستخدم المدخل )
فقط , وسوف يقوم الاستعلام بأخبارك هل يوجد اسم المستخدم ام لا .
لماذا قواعد البيانات :اعتقد ان الكلام الذي قرأته بالاعلى اقنعك ان نظام قواعد البيانات افضل
بكثير واخبرك لماذا نحتاج الى قواعد البيانات, ولكن ذلك لا يعني اننا لو
اردنا عمل شي بسيط جدا ان نستعمل نظام قواعد البيانات, بل سيكون كافيا نظام
الملفات ولكن في حالات نادره , ولا اظن ان هناك احد يستخدم نظام الملفات
الى الان. من خصائص قواعد البيانات التالي:
- السرعه
- السهوله
- التنظيم
- تقليل التكرار
- تقليل المعلومات الغير مفيده
وغيرها الكثير التي لا حصر لها , ويمكن ان تذهب الى Google وان تكتب في
محرك البحث why to use database , وسوف تحصل على المعلومات الكافيه التي
تحتاجها.
قاعدة البيانات MySQL: هناك كثير من قواعد البيانات موجوده الان , ويمكن انك قرأت عنها في
الدرس الاول الذي يتكلم عن لغة PHP . ولكن لو لاحظت ان اغلب مبرمجين PHP
يستخدمون هذه القاعده لخصائصها , فهي مجانيه , مفتوحة المصدر , سريعه ,
سهله. ولكن احد عيوبها انها لا تدعم العلاقات الا بطريقه معينه. وسوف نتكلم
عن العلاقات في اخر الدرس.
معرفات قواعد البيانات:لدينا 3 معرفات في قواعد البيانات وهي : قاعدة البيانات , الجدول , العمود
قاعدة البيانات :
وهي المحتوى ( الحقيبه ) التي يكون بها جميع معلوماتنا , ويمكنك انشاء اكثر من قاعدة بيانات
الجدول :
كل حقيبه لديها حافظات ( جيب ) واحد للاقلام , وواحد للاوراق وواحد للكتب ,, وهذه ما اعنيه بالجداول
العمود :
العمود هنا تخيله كأنه التفرعات لحافظات , فحافظات الاقلام ( جيب
الاقلام ) يحتوي على اربع خانات لحفظ الاقلام واكثر , قلم احمر وقلم اخضر
وقلم ازرق وقلم اسود
انواع الاعمده في قواعد البيانات :الانواع الرقميه :
- TINYINT
- SMALLINT
- MEDUIMINT
- INT
- INTEGER
- BIGINT
الانواع العشريه :
- FLOAT
- DOUBLE
- REAL
- DECIMAL
- NUMERIC
الوقت والتاريخ :
- DATE
- TIME
- DATETIME
- TIMESTAMP
- YEAR
النصوص العاديه :
الكتابات و ( BLOB ) :
- TINYBLOB
- TINYTEXT
- BLOB
- TEXT
- MEDUIMBLOB
- MEDUIMTEXT
- LONGBLOB
- LONGTEXT
الخيارات والتعدديه:
امثله على قواعد البيانات:جدول يقوم بتخزين معلومات المستخدمين:
جدول يقوم بتخزين معلومات الكتب الي تباع:
العلاقات في قواعد البيانات :من اهم الاشياء التي يجب ان نراعيها في قواعد البيانات هي عدم التكرار ,
اي نجعل كل شي فريد من نوعه, لن استطيع شرح هذا كله الان , ولكن سوف اتكلم
عن العلاقات في قواعد البيانات بشكل مختصر , لدينا ثلاث انواع من العلاقات
:
العلاقه المسماه بي 1:1 او واحد لواحد ( One : One )
لنأخذ مثال على هذه العلاقه , تخيل ان لدينا متجر , وفي هذا المتجر يوجد
عامل واحد فقط, فالعلاقه تكون ان الموظف ينتمي الى متجر واحد و المتجر
يحوي على موظف واحد فقط لاحظ الصوره التاليه:
العلاقه المسماه بي M:1 او واحد لكثير ( Many : One )
تخيل ان لدينا رسام , هذا الرسام يقوم برسم عدة لوحات , ولكن كل لوحة من عمل رسام واحد فقط لاحظ الصوره التاليه :
العلاقه المسماه بي N:M او كثير لكثير ( Many : Many )
لو لدينا طلاب ولدينا مواد , فكل طالب يمكنه ان يأخذ ماده او اكثر , وكل
ماده يمكن ان يأخذها اكثر من طالب اليس ذلك صحيحا ؟ ولكن هذه العلاقه ليست
جيده لانها لن تحل مشكلة التكرار , ولكن نقوم بحلها عن طريق شي يسمى (
Bridge Entity ) او ( الجسر ) لاحظ الصورتين التاليه:
ولكي نقوم بحل هذه العلاقه او ايجاد طريقه اخرى لها نستخدم الجسر مثل الصوره التاليه:
طرق ربط العلاقات في قواعد البيانات :كل جدول نقوم بإنشاءه يجب ان نجعل له ما يسمى المفاتح الرئيسي ( PRIMARY
KEY ) وهذا المفتاح لا يتم تكراره في الجدول , حيث ان كل مستخدم لديه رقم
رئيسي نعرفه به , ونحدد به اسمه ومعلوماته الاخرى ولكي نقوم بربطه في علاقة
, في الجدول المربوط به نجعل هذه القيمه على شكل مفتاح اجنبي ( FOREIGN
KEY ) لاحظ معي الصوره التاليه :
لاحظ ان العمود CustomerID في جدول CUSTOMERS هو مفتاح رئيسي ولا يمكن
تكراره , ولكنه في جدول ORDERS على شكل ( FOREIGN KEY ) ويمكن تكراره , لان
عدة طلبات يمكن عملها عن طريق مستخدم واحد , ولكن كل طلب مربوط بمستخدم
واحد فقط.
تصميم قاعدة بيانات:في تصميم قاعدة البيانات يجب علينا ان نقوم بأشياء كثيره , اولها ان
نقوم بتحليل ومعرفة ماذا نريد من هذه القاعده , كيفية عملها , كيفية ترتيب
المعلومات المفيده لنا بالقاعده , ويجب ان نقوم برسم القاعده على الورق
اولا لكي نستنتج هل منطقنا صحيح في تصميم هذه القاعده ام لا. ويجب ان نحل
مشكلة التكرار , فتخيل لو لدينا جدول يحتوي على معلومات العميل ومعلومات
الموظف الذي قام بخدمته , في كل مره ندرج مستخدم يجب ان ندرج العميل مره
اخرى ولو قام العميل بتغيير اسمه او رقمه , فسنحتاج الى تغيير كل الصفوف
التي يوجد بها هذا العميل , ولكن لو جعلنا العميل في جدول والموظف في جدول ,
فسيكون لكل عميل صف واحد في جدول العملاء ولكل موظف صف واحد في جدول
الموظفين ثم نربطهما ببعض. فلو غير عميل رقم هاتفه سوف نقوم بالتعديل مره
واحده فقط.
سؤال على الدرس :1 – قم قراءة مواضيع عن قواعد البيانات بشكل اكبر تفصيلا , لكي تفهم هذا الدرس جيدا لانه مختصر جدا جدا
الـــدرس الــقادم :سوف نتعرف في الدرس القادم على جميع ما يتعلق بقواعد البيانات MySQL وطريقة ربط لغة PHP مع قواعد البيانات.