الدرس 35: الشكل العادي الثاني (2NF)
لتحقيق 2NF، يجب أن يكون الجدول بالفعل في 1NF، ويجب أن يفي بشرط إضافي يتعلق بالمفاتيح المركبة.
قاعدة 2NF
لا توجد خاصية غير مفتاحية تعتمد جزئيًا على أي مفتاح مرشح.
تُطبق هذه القاعدة فقط عندما يكون للجدول مفتاح أساسي مركب (Composite Primary Key) (مفتاح أساسي مكون من عمودين أو أكثر).
- الخاصية غير المفتاحية (Non-Key Attribute): أي عمود ليس جزءًا من المفتاح الأساسي.
- الاعتمادية الجزئية (Partial Dependency): عندما يتم تحديد خاصية غير مفتاحية بواسطة جزء فقط من المفتاح المركب، وليس المفتاح بأكمله.
مثال على الانتهاك: تفاصيل الطلب
افترض مفتاحًا أساسيًا مركبًا: (OrderID، ProductID).
| OrderID (PK) | ProductID (PK) | ProductName | Quantity | Price |
|---|---|---|---|---|
| 100 | A | Keyboard | 2 | 50 |
| 101 | A | Keyboard | 1 | 50 |
- يعتمد
ProductNameوPriceفقط علىProductID(وهو جزء من المفتاح). - تعتمد
Quantityعلى المفتاح الكامل (OrderID+ProductID).
إذا تغير ProductName، يجب علينا تحديثه لكل طلب يظهر فيه (تكرار).
التصحيح (تحقيق 2NF)
نفصل الخصائص التي تعتمد جزئيًا إلى جدول جديد:
- جدول
Products: المفتاح الأساسي:ProductID. يحتوي علىProductNameوPrice. - جدول
OrderDetails: المفتاح الأساسي المركب: (OrderID،ProductID). يحتوي علىQuantity.
الآن، يعتمد ProductName فقط على المفتاح في جدوله الخاص، مما يزيل الاعتمادية الجزئية.