1. ملاحظات أولية عن قواعد البيانات العلائقية 

قبل أن نمضي لتتمة الدرس لا بد لنا من بسط بعض المفاهيم التي ستتردد في ما يلي من الدرس، بل بعض المفاهيم قد تم سردها في المقدمة و عنوان هذه الفقرة دون بسطها و ذلك ما سنقوم به :

  • قاعدة بيانات : جائت قواعد البيانات لتجيب عن حاجة بسيطة؛ نتوفر على كم كبير من المعلومات المخزنة في حاسب ما و نريد التمكن من إسترداد المعلومة التي نريد في زمن مقبول. هذا بالضبط ما تجيب عليه قواعد البيانات، إنها تمكننا من ترتيب كم هائل من المعلومات لنستطيع فيما بعد إسترداد أي جزء منه و تغيير محتواه إن أردنا في زمن مقبول.
  • جدول : عند تخزين معلوماتنا فإننا نضعها في جداول، كل جدول يمثل نوعا خاصا من المعلومات، مثلا إذا كنا بصدد تصميم قاعدة بيانات لتسيير مكتبة، فإن من بين الجداول التي سنخلقها جدول "الكتب"  ربما جدول "المستعملين" و ربما جدول "الإعارات" ...
  • عمود جدول : إذا أخذنا مثال جدول الكتب، فسيكون من بين أعمدته : "عنوان الكتاب"، "صنف الكتاب" ...
  • صف جدول: أي صف في الجدول سيمتل معلومة معينة، سنبقى في مثالنا مع جدول "الكتب"، من بين الصفوف سنجد مثلا كتاب "الفلانية" ل"فلان الفلاني".
  • مفتاح جدول: هو عمود معين أو مجموعة أعمدة تحدد بشكل كلي صف المعلومات. مثلا إذا إعتبرنا جدولا يحتوي على لائحة مواطني جزيرة الوقواق، إذا توفر هذا الجدول على عمود "رقم البطاقة الوطنية" فإنه سيكون عمودا مفتاحا بما أن معرفة رقم البطاقة الوطنية كافي لتحديد مواطن واحد و وحيد.
  • العلائقية: تسمى علائقية لأنها توفر إمكانية وضع جداول بينها علاقات معينة. لنرى مثال علاقة "المفتاح الخارجي" في النقطة الموالية.
  • المفتاح الخارجي : لنعد لقاعدة بيانات مكتبتنا بجداولها الثلاث : "الكتب" و "المستعملين" و "الإعارة". عندما سيستعير أحد المستعملين كتابا معينا فإننا سنضيف سطراً ( صفاً ) لجدول الإعارة للإشارة الى ذلك و هذا السطر لا بد له أن يحتوي على "تعريف" أو الأصح "تحديد" للمستعمل و الكتاب .. هنا ينفعنا مفهوم "المفتاح الخارجي"، لتحديد المستعمل وو الكتاب في جدول الإعارة سنضع عمودين أحدهما يحتوي على مفتاح جدول الكتب و الآخر على مفتاح جدول المستعملين .. في نهاية المطاف المفتاح الخارجي هو ليس إلا مفتاحا للجدول الآخر ذو علاقة بجدولنا.

بعد أن قدمنا جملة من التعاريف النظرية، حان وقت المرور لما هو عملي. أغلب مشاريع المعلوميات تمر عبر تكوين قاعدة أو قواعد بيانات. سنعود لمثالنا مثال "المكتبة" التي نود تجهيزها بنظام معلوماتي لإعارة الكتب، هذا النظام المعلوماتي سيحتوي على قاعدة بيانات، لنسمها "بيانات المكتبة".
"بيانات المكتبة" ككل قواعد البيانات المعروفة تتجزء لجداول، و كل جدول يحتوي على صنف معين من المعلومات، بالنسبة لمكتبتنا : "جدول الكتب" و "جدول المستعملين" و "جدول الإعارة" ( بإمكانكم تصور جداول أخرى بتصور متطلبات أخرى ..).

  • بالنسبة لجدول المستعملين سنضع عمودين هما رقم البطاقة و الإسم الكامل.
  • جدول الكتب سنضع الأعمدة التالية : "ترقيم الكتاب"، "عنوان الكتاب"، "إسم الكاتب"
  • أما جدول الإعارة فسنعرفه بالأعمدة التالية : "ترقيم الإعارة" و "ترقيم الكتاب"، "رقم بطاقة المستعير"، "تاريخ الإستعارة" و "تاريخ الإسترداد".

من الضروري ربط النظري بالعملي : أولا مفاتيح الجداول هي التي تعرِّف بشكل حصري كل سطر في جداولنا، لذلك قمنا بإضافة "ترقيم الكتاب" و هو ما سيمكن من تحديد كل كتاب بشكل فردي بغض النظر عن إسم الكتاب، نفس الشيء بالنسبة لعمود الإعارة . إذن مفتاح جدول الكتب هو "ترقيم الكتاب" و مفتاح جدول المستعملين هو "رقم البطاقة"  و مفتاح جدول الإعارة هو "ترقيم الإعارة".

من جهة أخرى يحتوي جدول "الإعارة" على مفتاحين خارجيين :  "ترقيم الكتاب" و "رقم بطاقة المستعير". ما معناه أننا عندما سنريد أن نضيف سطرا في جدول الإعارة سيكون من الضروري الإدلاء ب"ترقيم كتاب" موجود فعلا في جدول الكتب و ب"رقم بطاقة" موجود فعليا في جدول المستعملين. هنا يتعلق الأمر بمفهوم "القيود"؛ نحن مقيدون بقاعدة معينة لوضع البيانات في الجداول.

 

  1. التعرف على ال SQL

 

حسناً،
الخبر السار هو أن معجم الSQL يحتوي على عدد محدود من المفردات من السهل جدا تذكرها، يصنف هذا المعجم في 5 أجزاء كالتالي :

  • مفردات تعريف البيانات : و تتعلق بعمليا خلق قواعد البيانات و الجداول و القيود و المؤشرات ( سنراها فيما بعد). و يتعلق الأمر بمفردات : create لخلق هذه الأشياء، alter لتغييرها و drop لمحوها.
  • مفردات معالجة البيانات : و يتعلق الأمر هنا بإضافة المعلومات في الجداول insert و تغيير الموجود منها update و محوها delete و أخيرا قرائتها select. هناك درس كامل حول مفردات معالجة البيانات sql.
  • مفردات السيطرة : و تتعلق بإعطاء الحقوق و سلبها لمستعملي قاعدة البيانات؛ grant لإعطاء حق معين على قاعدة بيانات معينة أو جدول معين و revoke لسلب حق معين لمستعمل معين.
  • مفردات الصفقات : من مميزات الSQL أنه "ذري"، بمعنى أن كل عملية تشمل تغييرا في قاعدة البيانات لا بد لها أن تكون كليا أو لا تكون، لذلك نستعمل مفرد الصفقة Transaction للحديث عن ذلك. commit, rollback: سنعود بتفصيل لهذه المفردات التي من الضروري فهمها.
  • مفردات الSQL  المرسخ : و يتعلق الأمر باللغة الإجرائية التي ترتكز على الSQL، لن نتطرق لهذا الجزء في هذا الدرس.

 

  1. نوع البيانات

 

آخر نقطة سنتطرق لها في هذا الفصل هي نوع البيانات. و عندما نتحدث عن نوع البيانات فإننا نتحدث عن نوع المعلومات التي تندرج في كل عمود من جداولنا.
فعودة لمثال "بيانات المكتبة"، عندما عرفنا جدول المستعملين حددنا عمودا إسمه "رقم البطاقة" و "الإسم الكامل" في هذه الحالة البيانات في العمود الأول نوعها "رقم" فيما هي "حروف" في العمود الثاني.
بصفة عامة هذه هي الأنواع المتوفرة :

  • نوع أبجدي رقمي CHAR للدلالة على نوع ابجدي رقمي بطول معين  او  VARCHAR للدلالة على نوع ابجدي رقمي بطول لا يتجاوز قيمة معينة
  • نوع رقمي : INT للأعداد الصحيحة الطبيعية و FLOAT للأعداد الجذرية
  • نوع زمني : DATE و ترمز لتاريخ في التقويم الميلادي، فيما TIME لوقت معين في ال 24 ساعة 
  • نوع منطقي BOOLEAN و يأخذ قيمة "صحيح (1)" أو "خطأ (0)"