شرح صفوف ومحتوى الفقرة
في هندسة قواعد البيانات الإنتاجية، تمثل الصيغة المعيارية الثالثة 3NF المعيار الافتراضي الواجب اتباعه؛ غير أن هناك حالتين عمليتين مهمتين يحتفظ فيهما المهندس بعمود إضافي عن وعي:
- أعمدة اللقطة التاريخية (Historical Snapshot): حفظ عمود سعر البيع
unit_priceداخل جدول عناصر الفاتورةorder_itemsليس تكراراً خاطئاً، بل هو ضرورة محاسبية لأن سعر المنتج في الكتالوج قد يتغير لاحقاً بينما يجب أن تبقى الفاتورة القديمة ثابتة بالسعر الذي دفعه العميل وقت الشراء. - التخزين المحسوب للقراءة الكثيفة: حفظ المجموع النهائي في الأنظمة الضخمة شريطة ضبطه بمعاملات صارمة أو أعمدة مولدة.
SQL
-- Historical snapshot: unit_price_paid preserves checkout price
CREATE TABLE order_line_snapshots (
order_id INT UNSIGNED NOT NULL,
product_id INT UNSIGNED NOT NULL,
qty SMALLINT UNSIGNED NOT NULL,
unit_price_paid DECIMAL(10, 2) NOT NULL,
PRIMARY KEY (order_id, product_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;