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