logo

צורה רגילה שלישית (3NF)

  • יחס יהיה ב-3NF אם הוא ב-2NF ואינו מכיל תלות חלקית טרנזיטיבית.
  • 3NF משמש להפחתת כפילות הנתונים. הוא משמש גם כדי להשיג את שלמות הנתונים.
  • אם אין תלות טרנזיטיבית לתכונות שאינן ראשוניות, היחס חייב להיות בצורה נורמלית שלישית.

יחס הוא בצורה נורמלית שלישית אם הוא מקיים לפחות אחד מהתנאים הבאים עבור כל תלות פונקציה לא טריוויאלית X → Y.

  1. X הוא מפתח על.
  2. Y הוא תכונה ראשונית, כלומר, כל רכיב של Y הוא חלק ממפתח מועמד כלשהו.
  3. דוגמא:

    שפה גרובי

    טבלה EMPLOYEE_DETAIL:

    EMP_ID EMP_NAME EMP_ZIP EMP_STATE EMP_CITY
    222 לְהָצִיק 201010 לְמַעלָה נוידה
    333 סטפן 02228 לָנוּ בוסטון
    444 ו 60007 לָנוּ שיקגו
    555 קתרין 06389 בְּרִיטַנִיָה נוריץ'
    666 ג'ון 462007 MP בופל

    מפתח סופר בטבלה למעלה:

     {EMP_ID}, {EMP_ID, EMP_NAME}, {EMP_ID, EMP_NAME, EMP_ZIP}....so on 

    מפתח המועמד: {EMP_ID}

    תכונות שאינן ראשוניות: בטבלה הנתונה, כל התכונות מלבד EMP_ID אינן ראשוניות.

    כאן, EMP_STATE ו-EMP_CITY תלויים ב-EMP_ZIP ו-EMP_ZIP תלויים ב-EMP_ID. התכונות הלא ראשוניות (EMP_STATE, EMP_CITY) תלויות באופן טרנזיטיבי במפתח העל (EMP_ID). זה מפר את הכלל של צורה נורמלית שלישית.

    לכן אנחנו צריכים להעביר את ה-EMP_CITY וה-EMP_STATE לטבלה החדשה, עם EMP_ZIP כמפתח ראשי.

    צומת רשימת java

    טבלת עובדים:

    EMP_ID EMP_NAME EMP_ZIP
    222 לְהָצִיק 201010
    333 סטפן 02228
    444 ו 60007
    555 קתרין 06389
    666 ג'ון 462007

    טבלת EMPLOYEE_ZIP:

    EMP_ZIP EMP_STATE EMP_CITY
    201010 לְמַעלָה נוידה
    02228 לָנוּ בוסטון
    60007 לָנוּ שיקגו
    06389 בְּרִיטַנִיָה נוריץ'
    462007 MP בופל