الفصل الأول - ملحقات شرح

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

المستخدمين، الأمان، كتالوج النظام، وخصائص ACID

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

نظرة عامة على المحتويات

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

أنظمة قواعد البيانات تخدم أنواع مختلفة من المستخدمين، وكل نوع له احتياجاته ومسؤولياته وصلاحياته. فهم هالتصنيفات ضروري عشان تصمم قاعدة البيانات وتديرها بشكل صحيح.

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

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

المهام الأساسية:

  • إدارة حسابات المستخدمين
  • مراقبة الأداء
  • النسخ الاحتياطي واستعادة البيانات
  • توزيع الموارد
🎨
مصمم قاعدة البيانات

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

المهام الأساسية:

  • التصميم المفاهيمي (مخططات ER)
  • التصميم المنطقي (المخطط)
  • تحديد القيود
  • تحليل متطلبات المستخدم
👥
المستخدمين النهائيين

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

أنواع المستخدمين النهائيين

🎯 المستخدمين العَرَضِيين

يدخلون على قاعدة البيانات بين فترة وفترة، ويحتاجون طرق مختلفة عشان يطلبوا اللي يبغونه. غالباً مدراء أو ناس تشتغل بالتحليل.

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

📱 المستخدمين البسيطين (Parametric)

يشكلون نسبة كبيرة من المستخدمين. وظيفتهم الأساسية تدور حول استعلامات وتحديثات متكررة باستخدام عمليات محددة مسبقاً اسمها canned transactions.

أمثلة على مهام المستخدم البسيط

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

كثير من هالمهام صارت متوفرة بتطبيقات الجوال، فصار الوصول لقاعدة البيانات أسهل وأسرع.

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

وش هو أمان قاعدة البيانات؟ مجموعة من الإجراءات اللي نطبقها عشان نحمي قاعدة البيانات من الدخول غير المصرح به، التلاعب بالبيانات، وأي مخاطر أمنية ثانية.

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

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

مصادر الخطر الأمني

الخطر الأمني ممكن يجي من أحد المصادر الثلاثة هذي، وكلهم لهم طرق مميزة للدخول على قاعدة البيانات:

🔴
موظف خبيث

شخص داخل المؤسسة عنده نية سيئة ويحاول يخترق قاعدة البيانات عمداً.

⚠️
شخص مهمل

شخص داخل المؤسسة يتصرف بلا مبالاة ويعرض قاعدة البيانات للاختراق.

🚨
مخترق خارجي

شخص من برا يحصل على صلاحيات عبر الهندسة الاجتماعية أو يسرق بيانات الدخول.

ملاحظة مهمة:

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

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

١
التحكم بالوصول

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

٢
التشفير

يحمي البيانات بتحويلها لصيغة مشفرة ما تنفك إلا بمفتاح. حتى لو أحد دخل من غير إذن، البيانات تبقى مشفرة.

٣
سجلات المراجعة

يسجل كل شي صار بقاعدة البيانات: مين دخل، وش سوا، ومتى. يساعد في تتبع الأنشطة المشبوهة.

٤
إخفاء البيانات

يخفي المعلومات الحساسة لمن يشوفها مستخدم ما عنده صلاحية. يمنع الاطلاع على البيانات السرية.

٥
النسخ الاحتياطي واستعادة البيانات

يسوي نسخة احتياطية بشكل دوري عشان ما نضيع البيانات لو انحذفت أو تلفت. خطة الاستعادة تضمن ترجع البيانات بسرعة.

٦
إدارة التحديثات

يحدث نظام إدارة قاعدة البيانات والبرامج المرتبطة بها عشان يسد الثغرات الأمنية.

٧
جدران الحماية وأمن الشبكة

يطبق إجراءات أمنية على مستوى الشبكة لحماية خادم قاعدة البيانات من الاختراقات الخارجية.

أفضل الممارسات للأمان
  • طبّق مبدأ "الصلاحية الأقل" (Least Privilege).
  • استخدم طرق توثيق قوية.
  • راجع سجلات الدخول والأنشطة باستمرار.
  • حدث برامج قاعدة البيانات دورياً.
  • شفّر البيانات الحساسة سواءً مخزنة أو منقولة.
  • درّب المستخدمين على الأمان باستمرار.

كتالوج النظام (قاموس البيانات)

كتالوج النظام هو مجموعة من الجداول وطرق العرض اللي تحتوي معلومات مهمة عن قاعدة البيانات. هنا يخزن نظام إدارة قواعد البيانات العلائقية (RDBMS) البيانات الوصفية (Meta-data) زي معلومات الجداول والأعمدة، وبيانات داخلية للتنظيم.

وش هو كتالوج النظام؟

كل قاعدة بيانات عندها كتالوج نظام خاص فيها. المعلومات اللي في كتالوج النظام تحدد هيكل قاعدة البيانات. مثلاً، أوامر DDL لكل الجداول في قاعدة البيانات تكون مخزنة في كتالوج النظام.

📊 خاص بكل قاعدة

معظم كتالوجات النظام تُنسخ من قاعدة بيانات القالب (template) أثناء إنشاء قاعدة بيانات جديدة، وبعدها تصبح خاصة بهذه القاعدة.

🔗 مشتركة أحياناً

فيه كتالوجات قليلة تكون مشتركة بين كل قواعد البيانات في الخادم.

🗃️ جزء من قاعدة البيانات

كتالوج النظام حق قاعدة البيانات هو نفسه جزء منها.

هيكل كتالوج النظام

داخل قاعدة البيانات فيه كائنات مثل الجداول، الفهارس، وطرق العرض. كتالوج النظام هو مجموعة من الكائنات اللي تحتوي معلومات تُعرِّف الكائنات الثانية، وهيكل قاعدة البيانات نفسه، ومعلومات ثانية مهمة.

مصطلحات:

مصطلحين system catalog و data dictionary يستخدمون كمرادفات في أغلب الأوقات. لكن نقدر نفرق في سياق "نظام قاموس البيانات" وهو التطبيق البرمجي لكتالوج النظام.

المعلومات المخزنة في كتالوج النظام

محتويات الكتالوج:
  • أسماء العلاقات (الجداول).
  • أسماء الأعمدة (الخصائص).
  • أنواع البيانات للأعمدة.
  • وصف القيود (المفتاح الأساسي، المفاتيح الثانوية، المفاتيح الخارجية، NOT NULL، وغيرها).
  • طرق العرض (Views).
  • هياكل التخزين والفهارس (اسم الفهرس، الأعمدة المضمنة، نوع الفهرس...).

معلومات الأمان والصلاحيات

معلومات الأمان المخزنة:
  • أسماء المستخدمين المخوَّلين وكلمات المرور.
  • صلاحيات كل مستخدم للوصول لجداول وطرق عرض محددة.
  • منشئ ومالك كل علاقة.
  • الصلاحيات الممنوحة بأمر GRANT.

معلومات إحصائية ووصفية

📈 إحصائيات الصفوف

عدد الصفوف في كل جدول.

🔢 قيم الأعمدة

القيم المختلفة في الأعمدة وتوزيعها.

💾 طرق التخزين

طرق التخزين والوصول المستخدمة في الجدول.

⚡ تحسين الاستعلامات

كل هالمعلومات يستخدمها نظام تحسين الاستعلامات عشان يشتغل بكفاءة.

الوصول إلى كتالوج النظام

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

مثال: هيكل الكتالوج

نشوف هيكل كتالوج للعلاقات الأساسية بمثال لمخطط علائقي والكتالوج المناظر له:

Student (RollNo, Name, Address, PhoneNo, DOB, email, CourseNo, DNo)

Course (CourseNo, CourseTitle, Professor)

Dept (DeptNo, DeptName, Location)

Grade (RollNo, CourseNo, Grade)

مثال لجدول الكتالوج

اسم العلاقة العمود نوع البيانات مفتاح رئيسي مفتاح خارجي العلاقة المرجعية
Student RollNo INTEGER(10) نعم لا
Student Name VARCHAR2(30) لا لا
Student CourseNo INTEGER(10) لا نعم Course
Student DNo INTEGER(10) لا نعم Dept
Course CourseNo INTEGER(10) نعم لا
Course CourseTitle VARCHAR2(10) لا لا
Grade RollNo INTEGER(10) نعم نعم Student
Grade CourseNo INTEGER(10) نعم نعم Course

الكتالوج يخزن أسماء العلاقات، أسماء الأعمدة، أنواع الأعمدة، ومعلومات المفاتيح الأساسية والخارجية.

الخلاصة

كتالوج النظام يخلي قاعدة البيانات "توصف نفسها" - ما يخزن البيانات فقط، لكن كمان معلومات كاملة عن هيكلها، وهذا يسهل على برامج DBMS تشتغل مع تطبيقات قواعد بيانات مختلفة.

خصائص ACID في قواعد البيانات

Transaction هي وحدة عمل منطقية واحدة تدخل على قاعدة البيانات و/أو تعدل محتوياتها. الـ Transaction تنفذ بشكل مستقل إما لاسترجاع بيانات أو تحديثها.

الـ Transactions تتعامل مع البيانات بواسطة عمليات قراءة و/أو كتابة.

عشان نحافظ على التناسق (Consistency) في قاعدة البيانات، قبل وبعد الـ Transaction، نطبّق خصائص معينة اسمها خصائص ACID.

A
Atomicity (الذرية)

كل الـ Transaction تتم مرة وحدة كاملة أو ما تتم أبداً.

C
Consistency (التناسق)

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

I
Isolation (العزل)

العمليات المتعددة (Transactions) تشتغل بشكل مستقل وما يأثرون على بعض.

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

التغييرات اللي تسويها الـ Transaction الناجحة تبقى حتى لو صار عطل بالنظام.

Atomicity - "كلها أو لا شيء"

يعني إما الـ Transaction تنفذ بالكامل مرة وحدة، أو ما تنفذ أبداً. ما في نص نص. كل Transaction تعتبر وحدة واحدة، وإما تخلص بنجاح أو ما تتنفذ أبداً.

❌ إلغاء (Abort)

إذا ألغيت الـ Transaction، التغييرات اللي سوَتها ما تظهر.

✅ تأكيد (Commit)

إذا تأكدت الـ Transaction، التغييرات تظهر.

مثال على Atomicity: تحويل فلوس

Transaction T: تحويل ١٠٠ ريال من حساب X لحساب Y

قبل: X = ٥٠٠، Y = ٢٠٠
T1 T2
اقرأ (X) اقرأ (Y)
X := X - ١٠٠ Y := Y + ١٠٠
اكتب (X) اكتب (Y)
بعد: X = ٤٠٠، Y = ٣٠٠
مشكلة:

لو الـ Transaction صار فيها عطل بعد ما خلصت T1 وقبل T2 (مثلاً بعد كتابة X وقبل كتابة Y)، المبلغ انخصم من X لكن ما انضاف لـ Y. هذا يخلي قاعدة البيانات غير متناسقة.

الحل: الـ Transaction لازم تنفذ كاملة عشان نضمن صحة البيانات.

Consistency (التناسق)

يعني لازم قيود التكامل (Integrity constraints) تكون مضبوطة عشان قاعدة البيانات متناسقة قبل وبعد الـ Transaction. تشير إلى "صحة" قاعدة البيانات.

بالرجوع للمثال السابق:

المجموع الكلي قبل وبعد الـ Transaction لازم يثبت:

  • المجموع قبل T = ٥٠٠ + ٢٠٠ = ٧٠٠
  • المجموع بعد T = ٤٠٠ + ٣٠٠ = ٧٠٠

إذاً، قاعدة البيانات متناسقة. ✓

مثال على عدم التناسق:

عدم التناسق يصير لو T1 اكتملت بس T2 فشلت. وقتها T تكون ناقصة، والمجموع يصير ٤٠٠ + ٢٠٠ = ٦٠٠ (خسارة ١٠٠).

Isolation (العزل)

هذه الخاصية تضمن أن عمليات متعددة (Transactions) تقدر تشتغل في نفس الوقت بدون ما تسبب عدم تناسق في قاعدة البيانات. كل Transaction تشتغل بشكل مستقل وما تأثر على الثانية.

التغييرات اللي تسويها أي Transaction ما تظهر لأي Transaction ثانية إلا بعد ما تكتب بالذاكرة أو تأكدت (Commit).

الخاصية تضمن أن تنفيذ Transactions بشكل متزامن يعطي نتيجة تساوي نتيجة تنفيذها بشكل متسلسل (بأي ترتيب).
مثال: مشكلة العزل

نفترض X = ٥٠٠، Y = ٥٠٠. وعندنا عمليتين T و T".

T T"
اقرأ (X) اقرأ (X)
X := X * ١٠٠ اقرأ (Y)
اكتب (X) Z := X + Y
اقرأ (Y) اكتب (Z)
Y := Y - ٥٠
اكتب (Y)
المشكلة:

لنفرض T نفذت لحد قراءة Y وبعدها بدأت T". صار تداخل في العمليات:

  • T" تقرأ X بقيمة صحيحة (٥٠،٠٠٠) لكن قيمة Y غلط (٥٠٠).
  • المجموع اللي حسبته T": X + Y = ٥٠،٠٠٠ + ٥٠٠ = ٥٠،٥٠٠
  • المجموع الصحيح بعد T: X + Y = ٥٠،٠٠٠ + ٤٥٠ = ٥٠،٤٥٠

هذا يسبب عدم تناسق بقاعدة البيانات بسبب خسارة ٥٠.

الحل: Transactions لازم تنعزل، والتغييرات ما تظهر إلا بعد ما تصير بالذاكرة الرئيسية.

Durability (الديمومة)

تضمن هالخاصية أنه بعد ما تخلص الـ Transaction بنجاح، كل التعديلات تسجل وتنكتب على القرص وتضل محفوظة حتى لو صار عطل بالنظام.

💾 تخزين دائم

التحديثات تصير دائمة وتتخزن في ذاكرة غير متطايرة.

🔒 ما تروح أبداً

تأثير الـ Transaction ما يروح حتى لو انفصلت الكهرباء أو صاد عطل.

📝 تنكتب على القرص

التغييرات تنكتب على ذاكرة دائمة مو بس بالذاكرة المؤقتة.

ملخص خصائص ACID

خصائص ACID مجتمعة توفّر آلية تضمن صحة وتناسق قاعدة البيانات بحيث:

  • كل Transaction مجموعة عمليات تشتغل كوحدة واحدة.
  • تنتج نتائج متناسقة.
  • تشتغل معزولة عن العمليات الثانية.
  • التعديلات اللي تسويها تكون محفوظة بشكل دائم.

خلاصة

هالملحقات الأربعة تكمّل الفصل الأول وتعطيك نظرة أعمق عن مفاهيم مهمة في قواعد البيانات:

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

فهم أنواع المستخدمين (DBA، مصممين، مستخدمين نهائيين) يساعد في تصميم واجهات وصلاحيات مناسبة.

🔒 أمان قاعدة البيانات

الأمان شي أساسي لحماية البيانات الحساسة من خلال التحكم بالدخول، التشفير، سجلات المراجعة، وغيرها.

📚 كتالوج النظام

الخاصية اللي تخلي قاعدة البيانات "توصف نفسها" عن طريق الكتالوج تزيد المرونة وتسهل الإدارة.

⚡ خصائص ACID

إدارة العمليات Transactions بخصائص ACID يضمن موثوقية البيانات، تناسقها، وتكاملها.

الربط مع الفصل الأول:

هالمفاهيم تشتغل معاً عشان تنتج أنظمة قواعد بيانات قوية، آمنة، وموثوقة. المستخدمين يتفاعلون مع قاعدة البيانات المحمية بإجراءات أمنية، والكتالوج يوصف كل شي، وكل العمليات مضبوطة بخصائص ACID.