數據庫三範式

一.數據庫中的範式:數據庫

  範式, 英文名稱是 Normal Form,它是英國人 E.F.Codd(關係數據庫的老祖宗)在上個世紀70年代提出關係數據庫模型後總結出來的,範式是關係數據庫理論的基礎,也是咱們在設計數據庫結構過程當中所要遵循的規則和指導方法,如下就是對這三個範式的基本介紹:設計

第一範式(1NF):orm

  數據表中的每一列(字段),必須是不可拆分的最小單元,也就是確保每一列的原子性。索引

  例如: userInfo: '山東省煙臺市 1318162008' 依照第一範式必須拆分紅
                   userInfo: '山東省煙臺市'   userTel: '1318162008'兩個字段字符串

第二範式(2NF):同步

  知足1NF後要求表中的全部列,都必需依賴於主鍵,而不能有 任何一列與主鍵沒有關係(一個表只描述一件事情)。產品

  例如:訂單表只能描述訂單相關的信息,因此全部的字段都必須與訂單ID相關。
                  產品表只能描述產品相關的信息,因此全部的字段都必須與產品ID相關。
        所以在同一張表中不能同時出現訂單信息與產品信息。基礎

第三範式(3NF):第三範式(3NF):知足2NF後,要求:表中的每一列都要與主鍵直接相關,而不是間接相關(表中的每一列只能依賴於主鍵)數據類型

  例如:訂單表中須要有客戶相關信息,在分離出客戶表以後,訂單表中只須要有一個用戶
       ID便可,而不能有其餘的客戶信息,由於其餘的用戶信息是直接關聯於用戶ID,而不是關聯
       於訂單ID。語法

注意事項:

1.第二範式與第三範式的本質區別:在於有沒有分出兩張表。

第二範式是說一張表中包含了多種不一樣實體的屬性,那麼必需要分紅多張表,第三範式是要求已經分好了多張表的話,一張表中只能有另外一張標的ID,而不能有其餘任何信息,(其餘任何信息,一概用主鍵在另外一張表中查詢)。

2.必須先知足第一範式才能知足第二範式,必須同時知足第一第二範式才能知足第三範式。

二:數據庫中的五大約束:

數據庫中的五大約束包括:

1.主鍵約束(Primay Key Coustraint) 惟一性,非空性;

2.惟一約束 (Unique Counstraint)惟一性,能夠空,但只能有一個;

3.默認約束 (Default Counstraint) 該數據的默認值;

4.外鍵約束 (Foreign Key Counstraint) 須要創建兩表間的關係;

5.非空約束(Not Null Counstraint):設置非空約束,該字段不能爲空。

詳細介紹:

(1)[外鍵約束 (Foreign Key Counstraint) ]
1.設置外鍵的注意事項:
  ①:只有INNODB的數據庫引擎支持外鍵,修改my.ini文件設置default-storage-engine=INNODB;
  ②:外鍵與參照列的數據類型必須相同。(數值型要求長度和無符號都相同,字符串要求類型相同,長度能夠不一樣);
  ③:設置外鍵的字段必需要有索引,若是沒有索引,設置外鍵時會自動生成一個索引;

2.設置外鍵的語法:
[CONSTRAINT 外鍵名] FOREIGN KEY(外鍵字段) REFERENCES 參照表(參照字段);
[ON DELETE SET NULL ON UPDATE CASCADE] -- 設置操做完整。

三、外鍵約束的參照操做:
當對參照表的參照字段進行刪除或更新時,外鍵表中的外鍵如何應對。
參照操做可選值:
  RESTRICT: 拒絕對參照字段的刪除或修改(默認);
  NO ACTION:與RESTRICT相同,但這個指令只在MySql生效;
  CASCADE:  刪除或更新參照表的參照字段時,外鍵表的記錄同步刪除或更新;
  SET NULL: 刪除刪除或更新參照表的參照字段時,外鍵表的外鍵設爲NULL (此時外鍵不能設置爲NOT NULL)。

(2)[主鍵約束](Primay Key Coustraint) 
1.主鍵的注意事項:主鍵默認非空,默認惟一性約束,只有主鍵能夠設置自動增加(主鍵不必定自增,自增必定是主鍵)。
2.設置主鍵的方式:

  ①:在定義列時設置:id     INT UNSIGNED PRIMARY KEY。
  ②:在列定義完成後設置:PRIMARY KEY(id)。

其餘約束沒有特殊要求所以不作解釋。

相關文章
相關標籤/搜索