شرح صفوف ومحتوى الفقرة
يكون الجدول في الصيغة المعيارية الثانية (2NF) إذا حقق الصيغة الأولى 1NF وخلا تماماً من الاعتماد الجزئي (Partial Dependency):
- تظهر في الجداول ذات المفتاح الأساسي المركب: إذا كان المفتاح الأساسي مركباً من عمودين مثل
(order_id, product_id)، فيجب أن يعتمد كل عمود آخر في الجدول على المفتاح المركب كاملاً (مثل الكميةquantity). - علاج مخالفة 2NF: عمود مثل اسم المنتج
product_titleيعتمد علىproduct_idوحده فقط؛ لذا يُنقل فوراً إلى جدول المنتجاتproducts.
SQL
-- 2NF Compliant: quantity depends on BOTH order_id and product_id
CREATE TABLE invoice_lines (
invoice_id INT UNSIGNED NOT NULL,
product_id INT UNSIGNED NOT NULL,
quantity SMALLINT UNSIGNED NOT NULL,
PRIMARY KEY (invoice_id, product_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;