تهدف هذه الوحدة إلى شرح الاعتماديات الوظيفية وأهميتها في تصميم قواعد البيانات العلائقية، وكيفية تحليل البيانات لضمان التطبيع (Normalization) وحماية البيانات من التكرار وحالات الشذوذ.
تهدف هذه الوحدة إلى شرح الاعتماديات الوظيفية (Functional Dependencies) وأهميتها في تصميم قواعد البيانات العلائقية، وكيفية تحليل البيانات لضمان التطبيع (Normalization) وحماية البيانات من التكرار وحالات الشذوذ.
تُعد الاعتماديات الوظيفية (Functional Dependencies - FDs) حجر الزاوية في فهم وتطبيق عملية التطبيع (Normalization) في قواعد البيانات العلائقية. إنها تصف العلاقات بين السمات (الأعمدة) داخل الجدول.
الاعتمادية الوظيفية هي علاقة بين مجموعتين من السمات (الحقول) في الجدول بحيث تُحدد مجموعة واحدة (المُحدِّد - Determinant) قيمة مجموعة أخرى (المُعتمد - Dependent) بشكل فريد. بعبارة أخرى، إذا عرفت قيمة السمات في المجموعة الأولى، يمكنك تحديد قيمة السمات في المجموعة الثانية بشكل مؤكد.
يُرمز لها بـ: $X \rightarrow Y$
حيث $X$ و$Y$ هما مجموعتان من السمات في العلاقة (الجدول). تعني هذه الرمزية أنه "X تحدد Y وظيفياً". إذا كانت قيم السمات في $X$ محددة، فإنها تحدد القيم المقابلة في $Y$.
تخيل جدول Employees بالسمات التالية: EmployeeID, Name, DepartmentID, DepartmentName.
EmployeeID |
Name |
DepartmentID |
DepartmentName |
|---|---|---|---|
| 101 | أحمد | D01 | الموارد البشرية |
| 102 | سارة | D02 | التسويق |
| 103 | فهد | D01 | الموارد البشرية |
الاعتماديات الوظيفية المحتملة هنا هي:
EmployeeID $\rightarrow$ Name (معرف الموظف يحدد اسمه بشكل فريد).EmployeeID $\rightarrow$ DepartmentID (معرف الموظف يحدد قسمه).DepartmentID $\rightarrow$ DepartmentName (معرف القسم يحدد اسم القسم بشكل فريد).من هذه الاعتماديات، نستنتج أن EmployeeID هو المفتاح الرئيسي للجدول، وأن هناك اعتمادية متعدية (Transitive Dependency) حيث EmployeeID $\rightarrow$ DepartmentID و DepartmentID $\rightarrow$ DepartmentName، مما يعني EmployeeID $\rightarrow$ DepartmentName. هذه الاعتمادية المتعدية تشير إلى أن الجدول ليس في الشكل الطبيعي الثالث (3NF)، ويجب تطبيعه.
لفهم أعمق، تُصنف الاعتماديات الوظيفية إلى عدة أنواع رئيسية:
هي اعتمادية تعتمد على حقل واحد (سمة واحدة) لتحديد قيمة حقل آخر.
EmployeeID $\rightarrow$ Name (معرف الموظف يحدد اسم الموظف).ProductID $\rightarrow$ ProductName (معرف المنتج يحدد اسم المنتج).هي اعتمادية تعتمد على مجموعة من الحقول (أكثر من سمة واحدة) لتحديد قيمة حقل آخر. عادة ما يكون المُحدِّد هو مفتاح مركب.
Enrollment (التسجيل) الذي يربط الطلاب بالمقررات:
(CourseID, StudentID) $\rightarrow$ Grade (معرف المقرر ومعرف الطالب معاً يحددان الدرجة التي حصل عليها الطالب في ذلك المقرر).(OrderID, ProductID) $\rightarrow$ Quantity (رقم الطلب ومعرف المنتج يحددان الكمية المطلوبة من هذا المنتج في ذلك الطلب).تحدث عندما يكون هناك جدول له مفتاح رئيسي مركب (Composite Primary Key)، وتعتمد سمة غير المفتاح الرئيسي على جزء فقط من هذا المفتاح المركب، وليس على المفتاح المركب بأكمله. هذه الاعتمادية تمنع الجدول من أن يكون في الشكل الطبيعي الثاني (2NF).
Project_Employee بالمفتاح المركب (ProjectID, EmployeeID)، والسمات: ProjectName، EmployeeName.
(ProjectID, EmployeeID)(ProjectID, EmployeeID) $\rightarrow$ ProjectName (هذه صحيحة لكن ليست اعتمادية جزئية بحد ذاتها).(ProjectID, EmployeeID) $\rightarrow$ EmployeeName (هذه صحيحة).ProjectID $\rightarrow$ ProjectName (أي ProjectName يعتمد فقط على ProjectID، وهو جزء من المفتاح المركب)، فهذه اعتمادية جزئية.مثال أكثر وضوحًا: في جدول Enrollment إذا كان المفتاح المركب (StudentID, CourseID)، وكانت السمة CourseName تعتمد فقط على CourseID (جزء من المفتاح المركب)، وليس على كل من StudentID وCourseID معًا، فهذه اعتمادية جزئية.
(StudentID, CourseID) (المفتاح الرئيسي المركب)CourseID $\rightarrow$ CourseName (اعتمادية جزئية، لأن CourseName يعتمد على جزء من المفتاح الرئيسي).تحدث عندما تكون هناك ثلاث سمات (أو مجموعات سمات) A, B, C في الجدول، بحيث:
Employee بالسمات EmployeeID, Name, DepartmentID, DepartmentName.
EmployeeID $\rightarrow$ DepartmentID (الموظف ينتمي لقسم).DepartmentID $\rightarrow$ DepartmentName (رقم القسم يحدد اسم القسم).هنا، DepartmentID ليست مفتاحًا رئيسيًا للجدول Employee ولا هي مفتاح بديل له. لذلك، فإن العلاقة EmployeeID $\rightarrow$ DepartmentName هي اعتمادية انتقالية.
تُعرف قواعد الاستدلال (Inference Rules) بأنها مجموعة من القواعد المنطقية التي تُمكننا من استخلاص جميع الاعتماديات الوظيفية الممكنة ضمن جدول معين، بناءً على مجموعة معروفة من الاعتماديات. هذه القواعد أساسية لتحليل العلاقات وتطبيق التطبيع.
أهم هذه القواعد هي بدهيات أرمسترونغ (Armstrong’s Axioms)، والتي تُعتبر كاملة (تستطيع توليد جميع الاعتماديات) وسليمة (لا تولد اعتماديات غير صحيحة):
إذا كانت مجموعة السمات Y هي مجموعة فرعية من مجموعة السمات X (أي $Y \subseteq X$)، فإن X تُحدد Y وظيفياً. بعبارة أخرى، مجموعة من السمات دائمًا تحدد أيًا من سماتها الفرعية.
الصيغة: إذا كانت $Y \subseteq X$، فإن $X \rightarrow Y$
X = {EmployeeID, Name} و Y = {Name}، فإن {EmployeeID, Name} $\rightarrow$ Name. هذا منطقي؛ إذا عرفت كل من معرف الموظف واسمه، فإنك بالتأكيد تعرف اسمه.
إذا كانت X تُحدد Y وظيفياً ($X \rightarrow Y$)، وأضفنا مجموعة سمات Z إلى كل من X وY، فإن XZ ستظل تُحدد YZ. بمعنى آخر، إضافة نفس السمات إلى طرفي الاعتمادية لا يُبطل صحتها.
الصيغة: إذا $X \rightarrow Y$، فإن $XZ \rightarrow YZ$ لكل مجموعة $Z$
EmployeeID $\rightarrow$ Name.
DepartmentID (كـ Z)، فإن: {EmployeeID, DepartmentID} $\rightarrow$ {Name, DepartmentID}.
إذا كانت X تُحدد Y وظيفياً ($X \rightarrow Y$)، وكانت Y تُحدد Z وظيفياً ($Y \rightarrow Z$)، فإن X تُحدد Z وظيفياً. هذا يُشبه الخاصية المتعدية في الرياضيات.
الصيغة: إذا $X \rightarrow Y$ و$Y \rightarrow Z$، فإن $X \rightarrow Z$
EmployeeID $\rightarrow$ DepartmentID (معرف الموظف يحدد معرف القسم الذي يعمل فيه).DepartmentID $\rightarrow$ DepartmentName (معرف القسم يحدد اسم القسم).إذن، يمكننا الاستدلال بأن EmployeeID $\rightarrow$ DepartmentName (معرف الموظف يحدد اسم القسم الذي يعمل فيه). هذه الاعتمادية المستنتجة هي مثال على الاعتمادية الانتقالية التي تحدثنا عنها سابقًا، وتشير إلى الحاجة إلى التطبيع.
مخطط الاعتمادية (Dependency Diagram) هو تمثيل رسومي يُستخدم لتوضيح جميع الاعتماديات الوظيفية الموجودة بين السمات (الحقول) داخل جدول معين. يُعتبر أداة بصرية قوية لتحليل تصميم الجدول واكتشاف المشاكل المحتملة (مثل حالات الشذوذ) قبل تطبيق التطبيع.
تمثيل رسومي يوضح الاعتماديات الوظيفية بين الحقول (السمات) داخل الجدول. يُرسم كل حقل كعقدة، وتُشير الأسهم من السمات المُحدِّدة إلى السمات المُعتمدة.
Employee_Department (غير مُطبع)
لنأخذ جدول Employee_Department الذي يحتوي على: EmployeeID, Name, DepartmentID, DepartmentName.
EmployeeID $\rightarrow$ NameEmployeeID $\rightarrow$ DepartmentIDDepartmentID $\rightarrow$ DepartmentNameكيف يمكن رسمه (وصف نصي بدلاً من صورة):
[EmployeeID] ------> [Name]
|
|
V
[DepartmentID] ----> [DepartmentName]
شرح المخطط:
EmployeeID $\rightarrow$ DepartmentID $\rightarrow$ DepartmentName. يوضح المخطط هذه السلسلة من الاعتماديات، مما يدل على أن DepartmentName لا يعتمد مباشرة على المفتاح الرئيسي EmployeeID، بل يعتمد عليه عبر DepartmentID. هذا يدعو إلى تطبيع الجدول وفصل معلومات القسم إلى جدول منفصل.| المصطلح (الإنجليزية) | المصطلح (العربية) | التعريف |
|---|---|---|
| Functional Dependency (FD) | الاعتمادية الوظيفية | علاقة بين مجموعتين من الحقول في الجدول بحيث تحدد مجموعة واحدة القيم في المجموعة الأخرى بشكل فريد. |
| Determinant | المُحدِّد | السمة أو مجموعة السمات في الجانب الأيسر من الاعتمادية الوظيفية (X في $X \rightarrow Y$). |
| Dependent | المُعتمد | السمة أو مجموعة السمات في الجانب الأيمن من الاعتمادية الوظيفية (Y في $X \rightarrow Y$). |
| Simple Dependency | الاعتمادية البسيطة | اعتمادية وظيفية يكون فيها المُحدِّد سمة واحدة فقط. |
| Composite Dependency | الاعتمادية المركبة | اعتمادية وظيفية يكون فيها المُحدِّد مجموعة من السمات (مفتاح مركب). |
| Partial Dependency | الاعتمادية الجزئية | اعتماد سمة غير رئيسية على جزء فقط من المفتاح الرئيسي المركب. |
| Transitive Dependency | الاعتمادية الانتقالية | اعتماد سمة غير رئيسية على سمة غير رئيسية أخرى (غير مفتاح) في نفس الجدول. |
| Inference Rules / Armstrong’s Axioms | قواعد الاستدلال / بدهيات أرمسترونغ | مجموعة من القواعد المنطقية لاستخلاص جميع الاعتماديات الوظيفية الممكنة من مجموعة معينة. |
| Reflexivity Rule | قاعدة الانعكاس | إذا كانت Y جزءًا من X، فإن X تحدد Y. |
| Augmentation Rule | قاعدة التوسيع | إذا كانت X تحدد Y، فإن XZ تحدد YZ. |
| Transitivity Rule | قاعدة النقل | إذا كانت X تحدد Y وY تحدد Z، فإن X تحدد Z. |
| Dependency Diagram | مخطط الاعتمادية | تمثيل رسومي يوضح الاعتماديات الوظيفية بين الحقول داخل الجدول. |
| Normalization | التطبيع | عملية تنظيم الجداول لتقليل التكرار وحالات الشذوذ بناءً على الاعتماديات الوظيفية. |
اختبر فهمك لمفاهيم هذه الوحدة بالإجابة على الأسئلة التالية:
Students_Courses_Grades الذي يحتوي على الحقول التالية: StudentID, StudentName, CourseID, CourseName, Instructor, Grade.
StudentID فريد للطلاب، CourseID فريد للمقررات، وأن لكل مقرر مدرس واحد).A $\rightarrow$ BB $\rightarrow$ CD $\rightarrow$ E