أساس أنظمة قواعد البيانات الحديثة: العلاقات، القيود، والعمليات
تطور النموذج العلائقي
قدّمه Edgar Codd عام 1970، النموذج العلائقي غيّر شكل أنظمة إدارة قواعد البيانات. استبدل النماذج المعقّدة (التسلسلية والشبكية) بطريقة بسيطة وأنيقة قائمة على الجداول.
العنصر الأساسي هو الجدول - سهل تفهمه وتشتغل عليه
تقدّر تغيّر في التخزين (مادي) بدون ما تأثر على الهيكل المنطقي
تقدّر تغيّر في المخطط المفاهيمي بدون ما تعدّل التطبيقات (عرض Views)
اليوم، النموذج العلائقي هو أكثر نموذج مستخدم في العالم. المنافسين مثل NoSQL وقواعد بيانات XML ما حققوا نفس الشهرة أو الانتشار.
فهم العلاقات، الصفوف، والأعمدة
| مصطلح دارج | مصطلح رسمي | شرح |
|---|---|---|
| جدول | علاقة (Relation) | مجموعة من الصفوف والأعمدة تمثل كيانات |
| عنوان العمود | خاصية (Attribute) | حقل أو خاصية في العلاقة |
| كل القيم الممكنة للعمود | نطاق (Domain) | مجموعة القيم المسموحة للخاصية |
| صف | صف (Tuple) | سجل واحد داخل العلاقة |
| تعريف الجدول | مخطط العلاقة | هيكل التعريف مع الخصائص والأنواع |
| الجدول بعد تعبئته | حالة/نسخة العلاقة | البيانات الفعلية في لحظة معينة |
قاعدة البيانات العلائقية تتكوّن من:
عدد الأعمدة (الخصائص) في العلاقة
STUDENT(ID, Name, Major) درجتها = ٣
عدد الصفوف في العلاقة
لو STUDENT فيه ٥٠٠ طالب، الكارديناليتي = ٥٠٠
مخطط علاقة STUDENT:
مثال لنسخة:
| Student_number | Name | Class | Major |
|---|---|---|---|
| 17 | أحمد علي | 1 | CS |
| 8 | سارة خالد | 2 | SE |
الصفات اللي تحدّد الجداول العلائقية
كل القيم تكون ذرية (غير قابلة للتجزئة). ممنوع الخصائص المركبة أو متعددة القيم. هذا اسمه الصورة الطبيعية الأولى.
كل قيمة في الصف لازم تكون من نطاق الخاصية، أو تقدر تكون NULL إذا مسموح.
الصفوف في العلاقة ما لها ترتيب، حتى لو شفتها مرتبة بالجدول.
الخصائص وقيمها داخل الصف تُعتبر مرتبة (مع إن في تعريفات ثانية).
في طريقة ثانية للتمثيل ما تحتاج ترتيب للخصائص، وتحوي الاسم والقيمة مع بعض:
هذا يُسمّى تمثيل ذاتي الوصف.
قيمة NULL خاصّة تستخدم عشان تمثّل قيم:
قواعد تضمن سلامة البيانات
القيود هي شروط لازم تنطبق على كل حالات العلاقة الصحيحة. تضبط دقة البيانات واتساقها وسلامتها.
قيد التفرد: ما في صفين عندهم نفس القيم لخصائص المفتاح.
SerialNo هو المفتاح الأساسي
المفتاح الأساسي لا يقبل NULL: خصائص PK ما تقدر تكون null في أي صف.
ليش؟ قيم المفتاح الأساسي تحدّد الصفوف بشكل فردي. بدون قيمة، الصف ما ينعرف.
قيد المفتاح الخارجي: يضمن الاتساق بين العلاقات المترابطة.
الصف في العلاقة المرجعية R1 عنده مفتاح خارجي (FK) يشير إلى المفتاح الأساسي (PK) في العلاقة المرجع فيها R2.
قيمة FK لازم تكون:
قيد النوع: كل قيمة لازم تكون من نطاق الخاصية.
إذا نطاق Age هو Integer(0-120)، إذن:
تحدّد إذا قيم NULL مسموحة لخصائص معينة.
إذا كل STUDENT لازم يكون عنده اسم صحيح:
السيناريو: EMPLOYEE يشير إلى DEPARTMENT
كل D_num للموظف لازم يطابق Dnumber موجود في DEPARTMENT (أو يكون NULL إذا مسموح).
في مخططات قاعدة البيانات العلائقية:
تعديل حالة قاعدة البيانات
حالة قاعدة البيانات تتغيّر من خلال ثلاث عمليات:
يضيف صف جديد إلى العلاقة
يحذف صف موجود من العلاقة
يغيّر قيم خصائص صف موجود
كل عملية تحديث تخلق حالة قاعدة بيانات جديدة. حالة قاعدة البيانات العلائقية هي اتحاد كل حالات العلاقات الفردية في تلك اللحظة.
كيف كل عملية تخالف القيود
يُخالف إذا قيمة الخاصية مو من النطاق المحدد
❌ INSERT STUDENT(123, "أحمد", "أول سنة", "CS")
إذا Class لازم يكون Integer، "أول سنة" يخالف قيد النطاق
يُخالف إذا قيمة المفتاح موجودة مسبقاً
❌ INSERT STUDENT(123, "سارة", 2, "SE")
إذا Student_number 123 موجود من قبل، يخالف قيد التفرد
يُخالف إذا FK يشير إلى PK غير موجود
❌ INSERT EMPLOYEE(..., D_num=99)
إذا القسم ٩٩ غير موجود، يخالف سلامة المرجعية
يُخالف إذا قيمة PK = NULL
❌ INSERT STUDENT(NULL, "عمر", 1, "IT")
المفتاح الأساسي ما يقبل NULL
DELETE ممكن يخالف سلامة المرجعية إذا قيمة PK اللي بنحذفها مرجعية من FK في صفوف ثانية.
لما الحذف يخالف سلامة المرجعية:
واحد من هالخيارات لازم نحدّده أثناء تصميم قاعدة البيانات لكل قيد FK.
إذا هذا الموظف مرجعي من:
هذا الحذف غير مقبول بدون CASCADE أو معالجة ثانية.
تعديل صف ممكن يخالف القيود مثل INSERT و DELETE:
خيارات مشابهة لعمليات UPDATE:
أهم النقاط من النموذج العلائقي
العلاقات (جداول) مع الصفوف والأعمدة هي أساس قواعد البيانات الحديثة
التجريد بالجداول سهل الفهم، وخلّى قواعد البيانات العلائقية منتشرة ومقبولة
أربع قيود رئيسية (النطاق، المفتاح، الكيان، المرجعية) تضبط دقة البيانات واتساقها
INSERT, DELETE, UPDATE يعدّلون حالة قاعدة البيانات ويحترمون قيود التكامل
المفاتيح الخارجية تخلق علاقات بين الجداول وتضمن سلامة المرجعية
استقلالية البيانات المادية والمنطقية تفصل التخزين عن الهيكل، والهيكل عن التطبيقات
مع إننا أسسنا النموذج العلائقي، نقدر ننتقل إلى: