DBMS第三正規化(3NF)


如果它在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_CITYEMP_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