- 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 | בְּרִיטַנִיָה | חנויות | D283 | 232 |
364 | בְּרִיטַנִיָה | מתפתח | D283 | 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 |
חנויות | D283 | 232 |
מתפתח | D283 | 549 |
EMP_DEPT_MAPPING טבלה:
EMP_ID | EMP_DEPT |
---|---|
D394 | 283 |
D394 | 300 |
D283 | 232 |
D283 | 549 |
תלות פונקציונלית:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO}
מפתחות מועמדים:
לשולחן הראשון: EMP_ID
לשולחן השני: EMP_DEPT
לשולחן השלישי: {EMP_ID, EMP_DEPT}
עכשיו, זה ב-BCNF כי חלק צד שמאל של שתי התלות הפונקציונלית הוא מפתח.