位置:首页 » 文章/教程分享 » SQL第一范式(1NF)

第一范式(1NF)设置了一个有组织的数据库非常基本的规则:

  • 定义所需要的数据项,因为它们成为在表中的列。放在一个表中的相关的数据项。

  • 确保有数据没有重复的组。

  • 确保有一个主键。

1NF的第一条规则:

必须定义的数据项。这要求我们数据要被存储,组织数据到列,限定数据的每一列包含什么类型,最后把相关列到自己的表中。

例如,把所有涉及会议地点列到地点表,那些有关会员在会员明细表,等等。

1NF的第二条规则:

下一步骤是确保有数据的无重复组。考虑到我们有如下表:

CREATE TABLE CUSTOMERS(
       ID   INT              NOT NULL,
       NAME VARCHAR (20)     NOT NULL,
       AGE  INT              NOT NULL,
       ADDRESS  CHAR (25),
       ORDERS   VARCHAR(155)
);

因此,如果我们填充这个表一个客户有多个订单,那么数据如下:

ID NAME AGE ADDRESS ORDERS
100 Sachin 36 Lower West Side Cannon XL-200
100 Sachin 36 Lower West Side Battery XL-200
100 Sachin 36 Lower West Side Tripod Large

但按照1NF,我们需要确保数据没有重复的组。因此,让我们分解上面的表格分为两部分,并使用一个键加入行列如下:

CUSTOMERS 表:

CREATE TABLE CUSTOMERS(
       ID   INT              NOT NULL,
       NAME VARCHAR (20)     NOT NULL,
       AGE  INT              NOT NULL,
       ADDRESS  CHAR (25),
       PRIMARY KEY (ID)
);

此表将有以下记录:

ID NAME AGE ADDRESS
100 Sachin 36 Lower West Side

ORDERS 表 :

CREATE TABLE ORDERS(
       ID   INT              NOT NULL,
       CUSTOMER_ID INT       NOT NULL,
       ORDERS   VARCHAR(155),
       PRIMARY KEY (ID)
);

此表将具有以下记录:

ID CUSTOMER_ID ORDERS
10 100 Cannon XL-200
11 100 Battery XL-200
12 100 Tripod Large

1NF的第三个规则:

第一范式的最终规则,创建一个主键,我们已经在每个表中创建主键了。