- BCNF هو الإصدار المتقدم من 3NF. إنه أكثر صرامة من 3NF.
- يوجد جدول في BCNF إذا كانت كل تبعية وظيفية X → Y، X هي المفتاح الفائق للجدول.
- بالنسبة لـ BCNF، يجب أن يكون الجدول في 3NF، ولكل FD، يعد LHS مفتاحًا فائقًا.
مثال: لنفترض أن هناك شركة يعمل موظفوها في أكثر من قسم.
ما هو غيغابايت
جدول الموظفين:
| EMP_ID | EMP_COUNTRY | EMP_DEPT | DEPT_TYPE | EMP_DEPT_NO |
|---|---|---|---|---|
| 264 | الهند | تصميم | D394 | 283 |
| 264 | الهند | اختبارات | D394 | 300 |
| 364 | المملكة المتحدة | متاجر | د283 | 232 |
| 364 | المملكة المتحدة | النامية | د283 | 549 |
في الجدول أعلاه التبعيات الوظيفية هي كما يلي:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} مفتاح المرشح: {EMP-ID، EMP-DEPT}
الجدول غير موجود في BCNF لأنه لا يعد EMP_DEPT أو EMP_ID وحدهما مفاتيح.
لتحويل الجدول المحدد إلى BCNF، نقوم بتحليله إلى ثلاثة جداول:
جدول EMP_COUNTRY:
| EMP_ID | EMP_COUNTRY |
|---|---|
| 264 | الهند |
| 264 | الهند |
جدول EMP_DEPT:
| EMP_DEPT | DEPT_TYPE | EMP_DEPT_NO |
|---|---|---|
| تصميم | D394 | 283 |
| اختبارات | D394 | 300 |
| متاجر | د283 | 232 |
| النامية | د283 | 549 |
جدول EMP_DEPT_MAPPING:
| EMP_ID | EMP_DEPT |
|---|---|
| D394 | 283 |
| D394 | 300 |
| د283 | 232 |
| د283 | 549 |
التبعيات الوظيفية:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} مفاتيح المرشح:
بالنسبة للجدول الأول: EMP_ID
بالنسبة للجدول الثاني: EMP_DEPT
بالنسبة للجدول الثالث: {EMP_ID، EMP_DEPT}
الآن، هذا موجود في BCNF لأن الجزء الأيسر من كل من التبعيات الوظيفية هو المفتاح.