數據庫 - 第一範式(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的第三個規則:
第一範式的最終規則,創建一個主鍵,我們已經在每個表中創建主鍵了。