資料庫 - 第三正規化 (3NF)



當滿足以下條件時,表處於第三正規化:

  • 它處於第二正規化。
  • 所有非主鍵欄位都依賴於主鍵。

這些非主鍵欄位之間的依賴關係存在於資料之間。例如,在下表中,街道名稱、城市和州與它們的郵政編碼不可分割地繫結。

CREATE TABLE CUSTOMERS(
   CUST_ID       INT              NOT NULL,
   CUST_NAME     VARCHAR (20)      NOT NULL,
   DOB           DATE,
   STREET        VARCHAR(200),
   CITY          VARCHAR(100),
   STATE         VARCHAR(100),
   ZIP           VARCHAR(12),
   EMAIL_ID      VARCHAR(256),
   PRIMARY KEY (CUST_ID)
);

郵政編碼和地址之間的依賴關係稱為傳遞依賴關係。為了符合第三正規化,您需要做的就是將街道、城市和州欄位移動到它們自己的表中,您可以將其稱為郵政編碼表。-

CREATE TABLE ADDRESS(
   ZIP           VARCHAR(12),
   STREET        VARCHAR(200),
   CITY          VARCHAR(100),
   STATE         VARCHAR(100),
   PRIMARY KEY (ZIP)
);

下一步是修改 CUSTOMERS 表,如下所示:

CREATE TABLE CUSTOMERS(
   CUST_ID       INT              NOT NULL,
   CUST_NAME     VARCHAR (20)      NOT NULL,
   DOB           DATE,
   ZIP           VARCHAR(12),
   EMAIL_ID      VARCHAR(256),
   PRIMARY KEY (CUST_ID)
);

消除傳遞依賴關係的主要優點有兩個方面。首先,減少了資料重複量,因此資料庫變得更小。

第二個優點是資料完整性。當重複資料發生變化時,存在很大的風險只更新部分資料,尤其是在資料分佈在資料庫中的許多不同位置時。

例如,如果地址和郵政編碼資料儲存在三個或四個不同的表中,那麼郵政編碼的任何更改都需要波及到這三個或四個表中的每個記錄。

sql-rdbms-concepts.htm
廣告