تعريفات أساسية
- قاعدة بيانات الجامعة: فيها بيانات المقررات، الطلاب، أعضاء هيئة التدريس، والموارد الثانية.
- قاعدة بيانات الأفلام: فيها بيانات الأفلام، الأنواع، الممثلين، والمخرجين.
- قاعدة بيانات التجارة الإلكترونية: فيها المنتجات، العملاء، الطلبات، والمخزون.
- Oracle: نظام علائقي للشركات الكبيرة.
- PostgreSQL: نظام علائقي مفتوح المصدر.
- MySQL: قاعدة بيانات مفتوحة المصدر منتشرة.
- MongoDB: قاعدة بيانات NoSQL موجهة للوثائق.
ليش نستخدم نظام إدارة قواعد البيانات؟
قواعد البيانات تخزّن كل البيانات اللي يحتاجها النظام بطريقة موثوقة، آمنة، قابلة للمشاركة، وفعّالة. لكن لازم ننفذها بتأني.
مشكلة النظام القائم على الملفات (File-Based System)
قبل أنظمة إدارة قواعد البيانات، كان نظام الملفات حق نظام التشغيل هو اللي يخزّن المعلومات. في النظام القائم على الملفات، عندنا مجموعة برامج تطبيقية تؤدي خدمات للمستخدمين، وكل برنامج يعرّف ويدير بياناته بنفسه.
🔒 مشاكل أمنية
كيف تمنع الدخول غير المصرح به للملفات؟ أنظمة الملفات تفتقر لآليات تحكم قوية.
👥 وصول متزامن
وش يصير لما أكثر من شخص يفتح نفس الملف في نفس الوقت؟ خطر فساد البيانات يزيد.
💾 مشاكل استرجاع
وش تسوي لو انعطب القرص الصلب أو انقطعت الكهربا؟ أنظمة الملفات ما تضمن استرجاع البيانات.
⚡ الأداء
تقدر تضمن سرعة وصول معينة؟ أنظمة الملفات تفتقر لآليات بحث محسّنة.
🔁 تكرار البيانات
معلومات الطالب تتكرر في أكثر من ملف، يسبب تضارب وهدر في التخزين.
❌ أنظمة الملفات
- تكرار البيانات وعدم التناسق
- صعوبة الوصول للبيانات
- عزل البيانات
- مشاكل في التكامل (Integrity)
- مشاكل في الذرية (Atomicity)
- مشاكل الوصول المتزامن
- مشاكل أمنية
✅ أنظمة إدارة قواعد البيانات
- إدارة مركزية للبيانات
- وصول سهل للبيانات عن طريق الاستعلامات
- دمج البيانات والعلاقات بينها
- قيود تكامل مدمجة
- دعم معاملات ACID
- آليات التحكم بالتزامن
- المصادقة والصلاحيات
هيكلة مبسطة لنظام إدارة قواعد البيانات
كيف يتفاعل المستخدمون مع نظام إدارة قواعد البيانات؟
المستخدمين والمبرمجين يتفاعلون مع قاعدة البيانات عن طريق برامج تطبيقية واستعلامات. برنامج نظام إدارة قواعد البيانات يعالج هالطلبات ويوصل لقاعدة البيانات المخزنة على القرص، ويدير البيانات الفعلية وتعريف قاعدة البيانات (البيانات الوصفية).
مكونات نظام إدارة قواعد البيانات:
- البرامج التطبيقية والاستعلامات: طبقة واجهة المستخدم.
- برامج معالجة الاستعلامات: معالج الاستعلامات ومحسّن الأداء.
- برامج الوصول للبيانات المخزنة: مدير التخزين.
- قاعدة البيانات المخزنة: ملفات البيانات الفعلية.
- تعريف قاعدة البيانات المخزنة (البيانات الوصفية): كتالوج النظام.
الوظائف الأساسية لنظام إدارة قواعد البيانات
📋 تعريف قاعدة البيانات
يحدد الهيكل، أنواع البيانات، والقيود.
🔍 الاستعلام عن البيانات
يسترجع المعلومات بناءً على البيانات المخزنة.
✏️ تعديل البيانات
إدراج، تحديث، أو حذف البيانات.
🔐 الأمان
يتحكم بالدخول عن طريق المصادقة والصلاحيات.
👥 الوصول المتزامن
يقدّر يتعامل مع عدة مستخدمين بنفس الوقت.
🔧 الصيانة
النسخ الاحتياطي، الاسترجاع، وتحسين قاعدة البيانات.
الاستعلامات والمعاملات (Queries and Transactions)
التطبيقات ترسل نوعين رئيسيين من الطلبات لقاعدة البيانات:
FROM Student s
WHERE s.major = "CS"
يعني: جيب أسماء كل الطلاب اللي تخصصهم علوم حاسب.
أهداف أنظمة قواعد البيانات
📊 توفر البيانات
البيانات تكون متاحة لعدد كبير من المستخدمين بصيغة مفهومة وتكلفة معقولة، وتضمن سهولة الوصول.
✅ تكامل البيانات
البيانات اللي في قاعدة البيانات موثوقة وصحيحة، وتحافظ على الدقة والتناسق.
🔒 أمان البيانات
فقط المستخدمين المصرح لهم يقدرون يدخلون على البيانات. الأمان يُطبَّق عن طريق كلمات المرور والتحكم بالصلاحيات.
🔓 استقلالية البيانات
نظام إدارة قواعد البيانات يسمح للمستخدمين يخزّنوا، يحدّثوا، ويسترجعوا البيانات بكفاءة مع إخفاء تفاصيل التنفيذ.
أهم خصائص نهج قواعد البيانات
١. الطبيعة ذاتية الوصف (Self-Describing)
| اسم العلاقة | عدد الأعمدة |
|---|---|
| STUDENT | ٤ |
| COURSE | ٤ |
| SECTION | ٥ |
| GRADE_REPORT | ٣ |
| اسم العمود | نوع البيانات | تابع لعلاقة |
|---|---|---|
| Name | Character (30) | STUDENT |
| Student_number | Character (4) | STUDENT |
| Class | Integer (1) | STUDENT |
| Major | Major_type | STUDENT |
هذا يخلّي برنامج نظام إدارة قواعد البيانات يشتغل مع تطبيقات قاعدة بيانات مختلفة.
٢. استقلالية البرنامج عن البيانات (Program-Data Independence)
٣. التجريد (Data Abstraction)
٤. دعم طرق عرض متعددة (Multiple Views)
طريقة عرض السجل الأكاديمي: تظهر أسماء الطلاب مع أرقام المقررات، الدرجات، الفصول، السنوات، وأرقام الأقسام.
طريقة عرض متطلبات المقررات: تظهر أسماء المقررات مع أرقامها والمتطلبات السابقة.
مستخدمين مختلفين (طلاب، أعضاء هيئة تدريس، إداريين) يشوفون طرق عرض مختلفة لنفس البيانات.
٥. معالجة المعاملات متعددة المستخدمين (Multi-User Transaction Processing)
خصائص ACID
أي نظام إدارة قواعد بيانات لازم يدعم مبدأ ACID عشان يضمن معالجة موثوقة للمعاملات:
المعاملة كلها تنفذ مرة وحدة أو ما تنفذ أبدًا. كل معاملة وحدة متكاملة.
قاعدة البيانات تكون متناسقة قبل وبعد المعاملة. لازم تتبع قيود التكامل.
المعاملات المتعددة تشتغل بشكل مستقل وما تأثر على بعضها. المعاملات المتزامنة ما تتداخل.
التغييرات اللي تسويها المعاملة الناجحة تبقى حتى لو صار عطل بالنظام (انقطاع الكهربا، تعليق، إلخ).
كيف تصمّم وتنفّذ قاعدة بيانات
فيه خطوات مرتبة مع محتوى هالمادة:
نسوي مخططات العلاقات بين الكيانات (ER) عشان نمثّل الأشياء الواقعية (الكيانات) وعلاقاتهم. الكيانات توصف بخصائص (Attributes).
كيان: طالب (يوصف بالرقم الجامعي، الاسم، العنوان).
علاقة: الطالب "يسجّل" مقرر.
نستخدم النموذج العلائقي (Relational Model) - أكثر نموذج بيانات مستخدم في العالم اليوم. نحول مخططات ER إلى جداول.
| الرقم الجامعي | الاسم | التخصص |
|---|---|---|
| ١٢٣ | أحمد | علوم حاسب |
| ١٢٤ | علي | هندسة برمجيات |
ملاحظة: العرض المنطقي منفصل عن العرض الفيزيائي (كيف تُخزَّن البيانات). البرامج تشير إلى جداول النموذج المنطقي مو لمكان تخزين البيانات.
نصمم قاعدة البيانات بعناية عشان نغطي كل المعلومات المطلوبة، ونقلل استخدام المساحة، ونضمن سهولة الصيانة. نركّز على التسوية (Normalization) والأشكال الطبيعية (Normal Forms).
نستخدم لغة الاستعلامات الهيكلية (SQL) عشان نستعلم البيانات. SQL لغة تصريحية (Declarative): الأوامر توصف النتيجة المطلوبة مو خطوات التنفيذ.
FROM Student s
WHERE s.major = "CS"
يعني: جيب أسماء الطلاب اللي تخصصهم علوم حاسب.
- مستودعات البيانات (Data Warehousing) والمعالجة التحليلية (OLAP): المؤسسات تجمّع وتنظّم البيانات الحالية والتاريخية عشان تكتشف الأنماط.
- OLTP: معالجة المعاملات أونلاين وتضمن خصائص ACID.
- تنقيب البيانات (Data Mining): استكشاف وتحليل كميات كبيرة من البيانات لاكتشاف المعرفة على شكل أنماط.
نبني تطبيقات كاملة باستخدام Java مع JDBC (Java Database Connectivity) أو تقنيات ثانية مثل Python أو NodeJS. نصنع تطبيقات كاملة بواجهات رسومية.
مستخدمي قاعدة البيانات
👨💼 مدير قاعدة البيانات (DBA)
يأذن للمستخدمين بالدخول، يراقب استخدام قاعدة البيانات، ويتحكم بإدارة كفاءتها.
🎨 مصممي قاعدة البيانات
يحددون المحتوى، الهيكل، والقيود حق قاعدة البيانات. مسؤولين عن التصميم المفاهيمي والمنطقي.
👥 المستخدمين النهائيين
يقدرون يكونوا مطوري تطبيقات أو مستخدمين عاديين. يرسلون استعلامات، يطلبون تقارير، ويحدّثون محتوى قاعدة البيانات.
متى ما نستخدم قاعدة بيانات؟
باختصار: مو دايمًا. تصميم نظام إدارة قواعد بيانات عملية طويلة وفيها تكاليف إضافية.
حالات ممكن ما تحتاج فيها قاعدة بيانات:
📄 بيانات ثابتة
إذا كانت بياناتك ثابتة وما تتغير أبدًا، التكلفة الإضافية لنظام إدارة قواعد البيانات يمكن ما تبرر.
⚙️ إمكانيات العتاد محدودة
الأجهزة المضمنة (Embedded systems) اللي عندها موارد محدودة يمكن ما تدعم كل وظائف نظام إدارة قواعد البيانات.
👤 مستخدم واحد
إذا ما في حاجة لوصول أكثر من شخص، التخزين البسيط بالملفات يمكن يكفي.
ملخص الفصل
في هذا الفصل، استعرضنا المفاهيم الأساسية لقواعد البيانات وأنظمة إدارة قواعد البيانات:
- عرّفنا قاعدة البيانات ونظام إدارة قواعد البيانات وكيف يتفاعلون.
- استكشفنا فوائد نظام إدارة قواعد البيانات مقارنة بالأنظمة القائمة على الملفات.
- تعلمنا الخصائص الرئيسية لأنظمة قواعد البيانات: الطبيعة ذاتية الوصف، استقلالية البرنامج عن البيانات، التجريد، طرق العرض المتعددة، ومعالجة المعاملات متعددة المستخدمين.
- فهمنا خصائص ACID اللي تضمن معالجة موثوقة للمعاملات.
- راجعنا خطوات تصميم وتطبيق تطبيق قاعدة بيانات من النمذجة المفاهيمية إلى التنفيذ.
- حددنا أنواع مستخدمي قاعدة البيانات وأدوارهم.
الخطوات الجاية:
في الفصول الجاية، راح نتعمّق في كل هالخطوات بالتفصيل، بدءًا من النمذجة المفاهيمية باستخدام مخططات ER.