數據庫 - 第三範式(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) );
去掉傳遞依賴的優勢主要有二點。首先,數據的重複的量減少,因此,數據庫變得更小。
第二個優點是數據的完整性。當重複數據的變化,還有隻更新一些數據,尤其是如果它攤開在多個數據庫中不同的地方的一大隱患。例如,如果地址和郵政編碼數據存儲在三個或四個不同的表,然後在郵政編碼的任何變化都需要波及到那些三個或四個表中的每一個記錄。