ما هو التطبيع؟
التطبيع (Normalization) تنظيم الجداول لتقليل التكرار ومنع تناقض البيانات.
المشكلة: جدول غير مطبَّع
orders: id | customer_name | customer_phone | product1, product2...
تكرار بيانات العميل في كل طلب → تحديثها كابوس.
الشكل الطبيعي الأول (1NF)
- كل خلية تحمل قيمة واحدة (لا قوائم).
- لكل صف مفتاح فريد.
❌ products: "قلم, دفتر" → ✅ صف لكل منتج.
الشكل الطبيعي الثاني (2NF)
- يحقّق 1NF.
- كل عمود يعتمد على كامل المفتاح الأساسي (مهمّ للمفاتيح المركّبة).
افصل بيانات العميل في جدول customers مستقلّ.
الشكل الطبيعي الثالث (3NF)
- يحقّق 2NF.
- لا عمود يعتمد على عمود غير مفتاحي (إزالة الاعتماد المتعدّي).
مثال: city و city_code معًا → انقل city_code لجدول مدن.
النتيجة
customers(id, name, phone)
products(id, name, price)
orders(id, customer_id)
order_items(order_id, product_id, quantity)
التوازن
💡 أحيانًا نتعمّد عدم التطبيع (Denormalization) لتسريع القراءة في الأنظمة الضخمة — مفاضلة بين النقاء والأداء.
🎯 التالي: أمان قواعد البيانات وحقن SQL.