1. 程式人生 > >數據庫三大範式及五大約束

數據庫三大範式及五大約束

gin ref 單表 engine info 可謂 一律 not null 表之間

數據庫的三大範式以及五大約束

數 據 庫

今天小編來講一下數據庫的相關知識點,數據庫的三大特性可謂是:實體屬性和關系。

實體:表; 屬性:表中的數據(字段); 關系:表與表之間的關系;

第一範式(1NF):數據表中的每一列(每個字段)必須是不可拆分的最小單元,也就是確保每一列的原子性;

例如:userInfo:山東省煙臺市 131777368781 userAds:山東0省煙臺市 userTel:131777368781

技術分享

第二範式(2NF):滿足1NF後,要求表中的所有列,都必須依賴於主鍵,而不能有任何一列與主鍵沒有關系,也就是說一個表只描述一件事情;

例如:訂單表只描述訂單相關的信息,所以所有字段都必須與訂單id相關 產品表只描述產品相關的信息,所以所有字段都必須與產品id相 關;因此不能在一張表中同時出現訂單信息與產品信息;如下圖所示:

技術分享

第三範式(3NF):必須先滿足第二範式(2NF),要求:表中的每一列只與主鍵直接相關而不是間接相關,(表中的每一列只能依賴於主鍵);

例如:訂單表中需要有客戶相關信息,在分離出客戶表之後,訂單表中只需要有一個用戶id即可,而不能有其他的客戶信息。因為其他的客戶信息直接關聯於用戶id,而不是直接與訂單id直接相關。

技術分享

第 一範式和第二範式在於有沒有分出兩張表,第二範式是說一張表中包含了所種不同的實體屬性,那麽要必須分成多張表, 第三範式是要求已經分成了多張表,那麽一張表中只能有另一張表中的id(主鍵),而不能有其他的任何信息(其他的信息一律用主鍵在另一表查詢)。

1.primary KEY:設置主鍵約束;
2.UNIQUE:設置唯一性約束,不能有重復值;
3.DEFAULT 默認值約束,height DOUBLE(3,2)DEFAULT 1.2 height不輸入是默認為1,2
4.NOT NULL:設置非空約束,該字段不能為空;
5.FOREIGN key :設置外鍵約束。

【外鍵】

1.設置外鍵的註意事項:

只有INNODB的數據庫引擎支持外鍵,修改my.ini文件設置default-storage-engine=INNODB 外鍵必須與參照列的數據類型必須相同(數值型要求長度和無符號都相同,字符串要求類型相同,長度可以不同)。

2設置外鍵的語法:

CONSTRAINT 外鍵名 FOREIGN KEY (外鍵字段)REFERENCES 參照表 (參照字段) ON DELETE SET NULL ON UPDATE CASCADE 設置參照完整性

3.外鍵約束的參照操作?

參照表的完整性操作:當對參照表的參照字段進行刪除或更新時,外鍵表中的外鍵如何應對;

參照操作可選值:

RESTRICT拒絕參照表刪除或更新參照字段;

RESTRICT和NO ACTION相同,但這個指令只在mysql生效;

CASCADE刪除或更新參照表的參照字段時,外鍵表的記錄同步刪除更新;

SET NULL 刪除或更新參照表的參照字段時,外鍵表的外鍵設為NULL;

數據庫三大範式及五大約束