logo

בויס קוד צורה רגילה (BCNF)

  • 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 כי חלק צד שמאל של שתי התלות הפונקציונלית הוא מפתח.