表滿足以下條件時就是第三范式:
滿足第二范式
所有非主字段都是依賴于主鍵
非主字段的依賴是數(shù)據(jù),例如,在下面的表中,街道名稱,城市,國家是可綁定到郵政編碼的。
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) );
郵政編碼和地址之間的依賴關(guān)系稱為傳遞依賴。為了符合第三范式,所有你需要做的是移動的街道,城市和國家領(lǐng)域納入自己表中,您可以調(diào)用郵編表:
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) );
去掉傳遞依賴的優(yōu)勢主要有二點(diǎn)。首先,數(shù)據(jù)的重復(fù)的量減少,因此,數(shù)據(jù)庫變得更小。
第二個優(yōu)點(diǎn)是數(shù)據(jù)的完整性。當(dāng)重復(fù)數(shù)據(jù)的變化,還有只更新一些數(shù)據(jù),尤其是如果它攤開在多個數(shù)據(jù)庫中不同的地方的一大隱患。例如,如果地址和郵政編碼數(shù)據(jù)存儲在三個或四個不同的表,然后在郵政編碼的任何變化都需要波及到那些三個或四個表中的每一個記錄。