ما التبعية الجزئية التي تمنع تحقيق 2NF؟

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

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

الإجابة

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

افترض جدولًا يسجل الكتب الموجودة في كل طلب، ومفتاحه المرشح الوحيد هو الزوج (order_id, book_id). إذا كان عنوان الكتاب ثابتًا لكل معرف كتاب، فإنه يعتمد على book_id وحده. أما كمية الكتاب داخل الطلب فتحتاج إلى معرف الطلب ومعرف الكتاب معًا، ولذلك تختلف تبعيتها عن تبعية العنوان.

مثال

CREATE TABLE order_books (
  order_id INT,
  book_id INT,
  book_title VARCHAR(100),
  quantity INT,
  PRIMARY KEY (order_id, book_id)
);

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

باختصار: اعتماد عنوان الكتاب على جزء من المفتاح المركب تبعية جزئية، وفصله خطوة نحو تحقيق 2NF.

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

اختبر فهمك

المفتاح المرشح الوحيد هو (order_id, book_id)، ولكل book_id عنوان واحد ثابت. أي تبعية تخالف 2NF؟

CREATE TABLE order_books (
  order_id INT,
  book_id INT,
  book_title VARCHAR(100),
  quantity INT,
  PRIMARY KEY (order_id, book_id)
);