التبعية الوظيفية الكاملة هي حالة تطبيع قاعدة بيانات تساوي معيار التطبيع للنموذج الطبيعي الثاني (2NF). باختصار ، هذا يعني أنه يلبي متطلبات النموذج العادي الأول (1NF) ، وتعتمد جميع السمات غير الأساسية وظيفياً بشكل كامل على المفتاح الأساسي.
هذه ليست معقدة كما قد يبدو. دعونا ننظر في هذا بمزيد من التفصيل.
ملخص النموذج العادي الأول
قبل أن تصبح قاعدة البيانات معتمدة بشكل وظيفي بالكامل ، يجب أن تلتزم أولاً بالنموذج العادي الأول.
كل هذا يعني أن كل سمة يجب أن تحمل قيمة ذرية واحدة.
على سبيل المثال ، يفعل الجدول التالي ليس يتوافق مع 1NF ، لأن الموظف تينا مرتبط بموقعين ، كلاهما في خلية واحدة:
موظف | موقعك |
---|---|
يوحنا | لوس أنجلوس |
تينا | لوس انجليس ، شيكاغو |
قد يؤدي السماح بهذا التصميم إلى التأثير سلبيًا على تحديثات البيانات أو الإدخالات. لضمان التوافق مع 1NF ، أعد ترتيب الجدول بحيث تحتوي جميع السمات (أو خلايا الأعمدة) على قيمة واحدة:
الامتثال النموذج العادي الأول
لكن 1NF لا يزال غير كاف لتجنب المشاكل مع البيانات.
كيف يعمل 2NF لضمان الاعتماد الكامل
لتكون معتمدة بشكل كامل ، يجب أن تعتمد جميع سمات المفتاح غير المرشحة على المفتاح الأساسي. (تذكر أن سمة مفتاح المرشح هي أي مفتاح (على سبيل المثال ، مفتاح أساسي أو خارجي) يستخدم لتعريف سجل قاعدة بيانات بشكل فريد.
يستخدم مصممو قواعد البيانات رمزًا لوصف العلاقات التابعة بين السمات:
إذا حددت السمة A قيمة B ، نكتب هذاأ -> ب- بمعنى أن B يعتمد عمليا على A. في هذه العلاقة ، A يحدد قيمة B ، بينما B يعتمد على A.
على سبيل المثال ، في ما يلي أقسام الموظفين الجدول ، EmployeeID و DeptID كلاهما مفاتيح الترشيح: EmployeeID هو المفتاح الأساسي للجدول بينما DeptID مفتاح خارجي.
أي سمة أخرى - في هذه الحالة ، EmployeeName و DeptName - يجب أن تعتمد على المفتاح الأساسي للحصول على قيمته.
هوية الموظف | اسم الموظف | DeptID | DeptName |
---|---|---|---|
Emp1 | يوحنا | Dept001 | المالية |
Emp2 | تينا | Dept003 | مبيعات |
Emp3 | كارلوس | Dept001 | المالية |
في هذه الحالة ، لا يعتمد الجدول بشكل كامل لأن ، بينما يعتمد EmployeeName على المفتاح الأساسي EmployeeID ، يعتمد DeptName بدلاً منه على DeptID. هذا يسمي التبعية الجزئية .
لجعل هذا الجدول يتوافق مع 2NF ، نحتاج إلى فصل البيانات إلى جدولين:
هوية الموظف | اسم الموظف | DeptID |
---|---|---|
Emp1 | يوحنا | Dept001 |
Emp2 | تينا | Dept003 |
Emp3 | كارلوس | Dept001 |
نقوم بإزالة سمة DeptName من الموظفين الجدول وإنشاء جدول جديد الإدارات :
DeptID | DeptName |
---|---|
Dept001 | المالية |
Dept002 | الموارد البشرية |
Dept003 | مبيعات |
الآن العلاقات بين الجداول تعتمد بشكل كامل ، أو في 2NF.
لماذا التبعية الكاملة مهمة
تساعد التبعية الكاملة بين سمات قاعدة البيانات في ضمان سلامة البيانات وتجنب حالات الشذوذ في البيانات.
على سبيل المثال ، ضع في اعتبارك الجدول الموجود في القسم أعلاه والذي يلتزم فقط بـ 1NF. ها هو ، مرة أخرى:
موظف | موقعك |
---|---|
يوحنا | لوس أنجلوس |
تينا | لوس أنجلوس |
تينا | شيكاغو |
تينا لديه اثنين من السجلات. إذا قمنا بتحديث واحد دون إدراك أن هناك اثنين ، فإن النتيجة ستكون بيانات غير متناسقة.
أو ماذا لو أردنا إضافة موظف إلى هذا الجدول ، لكننا لا نعرف بعد الموقع؟ قد لا يتم السماح لنا بإضافة موظف جديد حتى إذا كانت سمة الموقع لا تسمح بقيم NULL.
التبعية الكاملة ليست الصورة الكاملة ، رغم ذلك ، عندما يتعلق الأمر بالتطبيع. يجب التأكد من أن قاعدة البيانات الخاصة بك في نموذج Normal الثالث (3NF).