简述
当满足以下条件时,表格处于第三范式 -
这些非主字段的依赖关系是在数据之间。例如,在下表中 – 街道名称、城市和州与其邮政编码牢不可破。
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)
);
邮政编码和地址之间的依赖关系称为传递依赖关系。为了符合第三范式,您只需将 Street、City 和 State 字段移动到它们自己的表中,您可以将其称为 Zip Code 表。-
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)
);
消除传递依赖的好处主要有两个。首先,减少了数据重复量,因此您的数据库变得更小。
第二个优势是数据完整性。当重复数据发生变化时,仅更新部分数据的风险很大,尤其是当它分布在数据库中的许多不同位置时。
例如,如果地址和邮政编码数据存储在三个或四个不同的表中,那么邮政编码的任何更改都需要影响这三个或四个表中的每条记录。