歡迎光臨
每天分享高質量文章

資料庫基礎知識:資料庫中的約束和三大正規化

一.資料庫中的正規化:

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

第一正規化(1NF):

資料表中的每一列(欄位),必須是不可拆分的最小單元,也就是確保每一列的原子性。

例如: 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] — 設定操作完整。

3、外來鍵約束的參照操作: 
當對參照表的參照欄位進行刪除或更新時,外來鍵表中的外來鍵如何應對。 
參照操作可選值: 
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)。

其他約束沒有特殊要求因此不做解釋。

吳建銳

http://www.cnblogs.com/wujianrui/p/7077864.html


《Linux雲端計算及運維架構師高薪實戰班》2018年11月26日即將開課中,120天衝擊Linux運維年薪30萬,改變速約~~~~

    *宣告:推送內容及圖片來源於網路,部分內容會有所改動,版權歸原作者所有,如來源資訊有誤或侵犯權益,請聯絡我們刪除或授權事宜。

    – END –


    贊(0)

    分享創造快樂