SQL 3NF第三范式

SQL 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)
);

去除传递性依赖的优势主要有两个。首先,数据重复量减少,因此您的数据库变得更小。

第二个优势是数据完整性。当重复的数据发生变化时,如果数据库中的数据分散在许多不同的位置,只更新其中一部分数据就存在很大的风险。

例如,如果地址和邮政编码数据存储在三个或四个不同的表中,那么邮政编码的任何更改都需要传播到这三个或四个表中的每条记录。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程