關係型數據庫

關係型數據庫是指採用了關係模型來組織數據的數據庫。數據庫

簡單來講,關係模型指的就是二維表格模型,而一個關係型數據庫就是由二維表及其之間的聯繫所組成的一個數據組織。數據結構

關係型數據庫的最大特色就是事務的一致性:傳統的關係型數據庫讀寫操做都是事務的,具備ACID的特色,這個特性使得關係型數據庫能夠用於幾乎全部對一致性有要求的系統中,如典型的銀行系統。併發

關係型數據庫爲了維護一致性所付出的巨大代價就是其讀寫性能比較差,而像微博這類社交應用,對併發讀寫能力要求極高,關係型數據庫已經沒法應付,所以,必須用新的一種數據結構存儲來代替關係數據庫。性能

關係數據庫的另外一個特色就是其具備固定的表結構,所以,其擴展性極差,系統的升級,功能的增長,每每意味着數據結構巨大變更,這一點關係型數據庫也難以應付,須要新的結構化數據存儲。 因而,非關係型數據庫應運而生,因爲不可能用一種數據結構化存儲應付全部的新的需求。必須強調的是,數據的持久存儲,尤爲是海量數據的持久存儲,仍是須要關係數據庫。設計

三大範式本質:索引

第一範式:字段惟一,凡是關係型數據庫都知足,因此通常不用管事務

第二範式:知足第一範式,每一個鍵都惟一,即每行數據都惟一,沒有重複的行數據,通常使用主鍵或複合主鍵字符串

第三範式:知足第二範式,且每兩個設計實體以前都無相同(相同功能做用)的字段,若是隻使用一張表,字段冗餘(重複)很大,因此要兩張以上表以關係形式維護(一對多或多對一,一對一意義不大由於徹底能夠設計成一張表),第三範式目的就是消除冗餘,若是須要其字段使用外鍵(外鍵通常都須要創建索引)來參照(參照主鍵或 (候選鍵:惟一索引))來關聯。同步

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

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)。

相關文章
相關標籤/搜索