الفصل الأول

مقدمة في أنظمة قواعد البيانات

CS 340: أساسيات إدارة البيانات الحديثة

المادة: CS 340: مقدمة في أنظمة قواعد البيانات
تقديم: شوق العمران

أهداف التعلُّم

تعريفات أساسية

قاعدة البيانات (Database) مجموعة منظمة من البيانات المترابطة، تُخزَّن على القرص، وأحيانًا يصل لها عدة أشخاص.
أمثلة على قواعد البيانات:
  • قاعدة بيانات الجامعة: فيها بيانات المقررات، الطلاب، أعضاء هيئة التدريس، والموارد الثانية.
  • قاعدة بيانات الأفلام: فيها بيانات الأفلام، الأنواع، الممثلين، والمخرجين.
  • قاعدة بيانات التجارة الإلكترونية: فيها المنتجات، العملاء، الطلبات، والمخزون.
نظام إدارة قواعد البيانات (DBMS) برنامج يدير قواعد البيانات. يسمح بالوصول، التعديل، النسخ الاحتياطي، واسترجاع البيانات.
أمثلة لأنظمة إدارة قواعد بيانات مشهورة:
  • Oracle: نظام علائقي للشركات الكبيرة.
  • PostgreSQL: نظام علائقي مفتوح المصدر.
  • MySQL: قاعدة بيانات مفتوحة المصدر منتشرة.
  • MongoDB: قاعدة بيانات NoSQL موجهة للوثائق.

ليش نستخدم نظام إدارة قواعد البيانات؟

قواعد البيانات تخزّن كل البيانات اللي يحتاجها النظام بطريقة موثوقة، آمنة، قابلة للمشاركة، وفعّالة. لكن لازم ننفذها بتأني.

مشكلة النظام القائم على الملفات (File-Based System)

قبل أنظمة إدارة قواعد البيانات، كان نظام الملفات حق نظام التشغيل هو اللي يخزّن المعلومات. في النظام القائم على الملفات، عندنا مجموعة برامج تطبيقية تؤدي خدمات للمستخدمين، وكل برنامج يعرّف ويدير بياناته بنفسه.

🔒 مشاكل أمنية

كيف تمنع الدخول غير المصرح به للملفات؟ أنظمة الملفات تفتقر لآليات تحكم قوية.

👥 وصول متزامن

وش يصير لما أكثر من شخص يفتح نفس الملف في نفس الوقت؟ خطر فساد البيانات يزيد.

💾 مشاكل استرجاع

وش تسوي لو انعطب القرص الصلب أو انقطعت الكهربا؟ أنظمة الملفات ما تضمن استرجاع البيانات.

⚡ الأداء

تقدر تضمن سرعة وصول معينة؟ أنظمة الملفات تفتقر لآليات بحث محسّنة.

🔁 تكرار البيانات

معلومات الطالب تتكرر في أكثر من ملف، يسبب تضارب وهدر في التخزين.

❌ أنظمة الملفات

  • تكرار البيانات وعدم التناسق
  • صعوبة الوصول للبيانات
  • عزل البيانات
  • مشاكل في التكامل (Integrity)
  • مشاكل في الذرية (Atomicity)
  • مشاكل الوصول المتزامن
  • مشاكل أمنية

✅ أنظمة إدارة قواعد البيانات

  • إدارة مركزية للبيانات
  • وصول سهل للبيانات عن طريق الاستعلامات
  • دمج البيانات والعلاقات بينها
  • قيود تكامل مدمجة
  • دعم معاملات ACID
  • آليات التحكم بالتزامن
  • المصادقة والصلاحيات

هيكلة مبسطة لنظام إدارة قواعد البيانات

كيف يتفاعل المستخدمون مع نظام إدارة قواعد البيانات؟

المستخدمين والمبرمجين يتفاعلون مع قاعدة البيانات عن طريق برامج تطبيقية واستعلامات. برنامج نظام إدارة قواعد البيانات يعالج هالطلبات ويوصل لقاعدة البيانات المخزنة على القرص، ويدير البيانات الفعلية وتعريف قاعدة البيانات (البيانات الوصفية).

مكونات نظام إدارة قواعد البيانات:

  • البرامج التطبيقية والاستعلامات: طبقة واجهة المستخدم.
  • برامج معالجة الاستعلامات: معالج الاستعلامات ومحسّن الأداء.
  • برامج الوصول للبيانات المخزنة: مدير التخزين.
  • قاعدة البيانات المخزنة: ملفات البيانات الفعلية.
  • تعريف قاعدة البيانات المخزنة (البيانات الوصفية): كتالوج النظام.

الوظائف الأساسية لنظام إدارة قواعد البيانات

📋 تعريف قاعدة البيانات

يحدد الهيكل، أنواع البيانات، والقيود.

🔍 الاستعلام عن البيانات

يسترجع المعلومات بناءً على البيانات المخزنة.

✏️ تعديل البيانات

إدراج، تحديث، أو حذف البيانات.

🔐 الأمان

يتحكم بالدخول عن طريق المصادقة والصلاحيات.

👥 الوصول المتزامن

يقدّر يتعامل مع عدة مستخدمين بنفس الوقت.

🔧 الصيانة

النسخ الاحتياطي، الاسترجاع، وتحسين قاعدة البيانات.

الاستعلامات والمعاملات (Queries and Transactions)

التطبيقات ترسل نوعين رئيسيين من الطلبات لقاعدة البيانات:

الاستعلامات (Queries) طلبات تولّد نتيجة بناءً على البيانات المخزنة. الاستعلامات تسترجع المعلومات بدون تعديلها.
مثال استعلام:
SELECT s.name
FROM Student s
WHERE s.major = "CS"

يعني: جيب أسماء كل الطلاب اللي تخصصهم علوم حاسب.

المعاملات (Transactions) مجموعة عمليات لازم تنفذ كوحدة واحدة عشان نحافظ على تناسق قاعدة البيانات.

أهداف أنظمة قواعد البيانات

📊 توفر البيانات

البيانات تكون متاحة لعدد كبير من المستخدمين بصيغة مفهومة وتكلفة معقولة، وتضمن سهولة الوصول.

✅ تكامل البيانات

البيانات اللي في قاعدة البيانات موثوقة وصحيحة، وتحافظ على الدقة والتناسق.

🔒 أمان البيانات

فقط المستخدمين المصرح لهم يقدرون يدخلون على البيانات. الأمان يُطبَّق عن طريق كلمات المرور والتحكم بالصلاحيات.

🔓 استقلالية البيانات

نظام إدارة قواعد البيانات يسمح للمستخدمين يخزّنوا، يحدّثوا، ويسترجعوا البيانات بكفاءة مع إخفاء تفاصيل التنفيذ.

أهم خصائص نهج قواعد البيانات

١. الطبيعة ذاتية الوصف (Self-Describing)

نظام قواعد البيانات لا يخزّن قاعدة البيانات فقط، بل يخزّن أيضًا تعريفًا كاملًا أو وصفًا لها، ويسمى كتالوج النظام (System Catalog). الوصف المخزّن في كتالوج النظام اسمه البيانات الوصفية (Meta-Data).
مثال لكتالوج قاعدة بيانات:
اسم العلاقة عدد الأعمدة
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)

يسمح لمجموعة من المستخدمين المتزامنين يسترجعوا ويحدّثوا قاعدة البيانات. التحكم بالتزامن (Concurrency Control) داخل نظام إدارة قواعد البيانات يضمن تنفيذ أو إلغاء كل معاملة بشكل صحيح.

خصائص ACID

أي نظام إدارة قواعد بيانات لازم يدعم مبدأ ACID عشان يضمن معالجة موثوقة للمعاملات:

A
الذرية (Atomicity)

المعاملة كلها تنفذ مرة وحدة أو ما تنفذ أبدًا. كل معاملة وحدة متكاملة.

C
التناسق (Consistency)

قاعدة البيانات تكون متناسقة قبل وبعد المعاملة. لازم تتبع قيود التكامل.

I
العزل (Isolation)

المعاملات المتعددة تشتغل بشكل مستقل وما تأثر على بعضها. المعاملات المتزامنة ما تتداخل.

D
الديمومة (Durability)

التغييرات اللي تسويها المعاملة الناجحة تبقى حتى لو صار عطل بالنظام (انقطاع الكهربا، تعليق، إلخ).

كيف تصمّم وتنفّذ قاعدة بيانات

فيه خطوات مرتبة مع محتوى هالمادة:

الخطوة ١
النمذجة المفاهيمية (Conceptual Modeling)

نسوي مخططات العلاقات بين الكيانات (ER) عشان نمثّل الأشياء الواقعية (الكيانات) وعلاقاتهم. الكيانات توصف بخصائص (Attributes).

مثال:

كيان: طالب (يوصف بالرقم الجامعي، الاسم، العنوان).

علاقة: الطالب "يسجّل" مقرر.

الخطوة ٢
النمذجة المنطقية (Logical Modeling)

نستخدم النموذج العلائقي (Relational Model) - أكثر نموذج بيانات مستخدم في العالم اليوم. نحول مخططات ER إلى جداول.

مثال: جدول الطلاب
الرقم الجامعي الاسم التخصص
١٢٣ أحمد علوم حاسب
١٢٤ علي هندسة برمجيات

ملاحظة: العرض المنطقي منفصل عن العرض الفيزيائي (كيف تُخزَّن البيانات). البرامج تشير إلى جداول النموذج المنطقي مو لمكان تخزين البيانات.

الخطوة ٣
تحسين الأداء (Optimization)

نصمم قاعدة البيانات بعناية عشان نغطي كل المعلومات المطلوبة، ونقلل استخدام المساحة، ونضمن سهولة الصيانة. نركّز على التسوية (Normalization) والأشكال الطبيعية (Normal Forms).

الخطوة ٤
الاستعلام عن البيانات

نستخدم لغة الاستعلامات الهيكلية (SQL) عشان نستعلم البيانات. SQL لغة تصريحية (Declarative): الأوامر توصف النتيجة المطلوبة مو خطوات التنفيذ.

مثال استعلام SQL:
SELECT s.name
FROM Student s
WHERE s.major = "CS"

يعني: جيب أسماء الطلاب اللي تخصصهم علوم حاسب.

الخطوة ٥
تطبيقات قواعد بيانات أخرى
  • مستودعات البيانات (Data Warehousing) والمعالجة التحليلية (OLAP): المؤسسات تجمّع وتنظّم البيانات الحالية والتاريخية عشان تكتشف الأنماط.
  • OLTP: معالجة المعاملات أونلاين وتضمن خصائص ACID.
  • تنقيب البيانات (Data Mining): استكشاف وتحليل كميات كبيرة من البيانات لاكتشاف المعرفة على شكل أنماط.
الخطوة ٦
سوي تطبيقك الخاص

نبني تطبيقات كاملة باستخدام Java مع JDBC (Java Database Connectivity) أو تقنيات ثانية مثل Python أو NodeJS. نصنع تطبيقات كاملة بواجهات رسومية.

مستخدمي قاعدة البيانات

👨‍💼 مدير قاعدة البيانات (DBA)

يأذن للمستخدمين بالدخول، يراقب استخدام قاعدة البيانات، ويتحكم بإدارة كفاءتها.

🎨 مصممي قاعدة البيانات

يحددون المحتوى، الهيكل، والقيود حق قاعدة البيانات. مسؤولين عن التصميم المفاهيمي والمنطقي.

👥 المستخدمين النهائيين

يقدرون يكونوا مطوري تطبيقات أو مستخدمين عاديين. يرسلون استعلامات، يطلبون تقارير، ويحدّثون محتوى قاعدة البيانات.

متى ما نستخدم قاعدة بيانات؟

باختصار: مو دايمًا. تصميم نظام إدارة قواعد بيانات عملية طويلة وفيها تكاليف إضافية.

حالات ممكن ما تحتاج فيها قاعدة بيانات:

📄 بيانات ثابتة

إذا كانت بياناتك ثابتة وما تتغير أبدًا، التكلفة الإضافية لنظام إدارة قواعد البيانات يمكن ما تبرر.

⚙️ إمكانيات العتاد محدودة

الأجهزة المضمنة (Embedded systems) اللي عندها موارد محدودة يمكن ما تدعم كل وظائف نظام إدارة قواعد البيانات.

👤 مستخدم واحد

إذا ما في حاجة لوصول أكثر من شخص، التخزين البسيط بالملفات يمكن يكفي.

ملخص الفصل

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

الخطوات الجاية:

في الفصول الجاية، راح نتعمّق في كل هالخطوات بالتفصيل، بدءًا من النمذجة المفاهيمية باستخدام مخططات ER.