如果它在2NF 中,並且不包含任何傳遞性部分依賴性,則關係將在3NF 中。
3NF 用於減少資料重複,它還用於實現資料完整性。
如果非素數屬性沒有傳遞依賴關係,則關係必須是第三正規化。
如果關係對於每個非平凡函式依賴關係X→Y
保持至少以下條件之一,則該關係處於第三正規化。
X
是一把超級主鍵。Y
是主鍵屬性,即Y
的每個元素是某個候選鍵的一部分。範例:
EMPLOYEE_DETAIL
表的結構和資料:
EMP_ID | EMP_NAME | EMP_ZIP | EMP_STATE | EMP_CITY |
---|---|---|---|---|
222 | Harry | 201010 | UP | Noida |
333 | Stephan | 02228 | US | Boston |
444 | Lan | 60007 | US | Chicago |
555 | Katharine | 06389 | UK | Norwich |
666 | John | 462007 | MP | Bhopal |
上述表(EMPLOYEE_DETAIL
)中的超級鍵是:
{EMP_ID}, {EMP_ID, EMP_NAME}, {EMP_ID, EMP_NAME, EMP_ZIP}....等等
候選鍵:{EMP_ID}
非主屬性 :在給定表中,除EMP_ID
之外的所有屬性都是非主屬性。
這裡,EMP_STATE&EMP_CITY
依賴於EMP_ZIP
,而EMP_ZIP
依賴於EMP_ID
。 非主屬性(EMP_STATE,EMP_CITY)
可傳遞地依賴於超級主鍵(EMP_ID
)。 它違反了第三正規化的規則。
這就是為什麼需要將EMP_CITY
和EMP_STATE
移動到新的<EMPLOYEE_ZIP>
表,並將EMP_ZIP
作為主鍵。
員工(EMPLOYEE
)表的結構和資料如下:
EMP_ID | EMP_NAME | EMP_ZIP |
---|---|---|
222 | Harry | 201010 |
333 | Stephan | 02228 |
444 | Lan | 60007 |
555 | Katharine | 06389 |
666 | John | 462007 |
員工郵編(EMPLOYEE_ZIP
)表的結構和資料如下:
EMP_ZIP | EMP_STATE | EMP_CITY |
---|---|---|
201010 | UP | Noida |
02228 | US | Boston |
60007 | US | Chicago |
06389 | UK | Norwich |
462007 | MP | Bhopal |