كيف نعالج التبعية الانتقالية للوصول إلى 3NF؟

متوسطقراءة دقيقةآخر تحديث 3 أكتوبر 2026

SQL قواعد البيانات

الإجابة

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

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

مثال

CREATE TABLE departments (
  department_id INT PRIMARY KEY,
  department_name VARCHAR(100)
);
CREATE TABLE employees (
  employee_id INT PRIMARY KEY,
  department_id INT,
  FOREIGN KEY (department_id)
    REFERENCES departments(department_id)
);

يعتمد هذا التحليل على افتراض أن لكل قسم اسمًا واحدًا، وأن عدة موظفين قد ينتمون إليه. لا يكفي النظر إلى أسماء الأعمدة أو عدد الصفوف الحالي لتحديد الصيغة الطبيعية؛ يجب معرفة التبعيات وقواعد العمل التي تظل صحيحة عند إضافة بيانات جديدة.

باختصار: ضع اسم القسم مع معرفه في جدول الأقسام، بدل تكراره في كل صف موظف.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر فهمك

في employees(employee_id, department_id, department_name)، يحدد employee_id القسم، ويحدد department_id اسمه، وقد يضم القسم عدة موظفين. ما التفكيك الأنسب لإزالة هذه التبعية؟