تظهر التبعية الانتقالية الشائعة عندما يحدد مفتاح الصف صفة غير مفتاحية، وتحدد هذه الصفة بدورها صفة أخرى غير مفتاحية. في جدول الموظفين، يحدد معرف الموظف قسمه، ويحدد معرف القسم اسم القسم. تخزين اسم القسم داخل كل صف موظف يكرر حقيقة تخص القسم في مواضع متعددة.
إذا تغير اسم القسم، نحتاج إلى تعديل جميع صفوف موظفيه. نسيان أحد الصفوف ينتج أسماء مختلفة للقسم نفسه. لمعالجة ذلك، نفصل بيانات القسم في جدول يكون معرف القسم مفتاحه، ونحتفظ في جدول الموظفين بمعرف القسم فقط. نستعيد الاسم عند الحاجة من العلاقة بين الجدولين.
مثال
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 من الأساسيات للاحتراف.