第一范式(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的第三个规则:
第一范式的最终规则,创建一个主键,我们已经在每个表中创建主键了。