還記得mysql這些原理的知識嗎?

1、數據庫系統(DBS)的組成

由數據庫(DB)、數據庫管理系統(DBMS)、數據庫管理員(DBA)組成。

2、數據模型的三組成部分

  • 數據結構:是對系統靜態特徵的描述,描述對象包括數據的類型、內容、性質和數據之間的項目關係。
  • 數據操作:是對系統動態特徵的描述,是對數據庫各種對象實例的操作。
  • 完整性約束:是完整性規則的集合,它定義了給定數據模型中數據及其聯繫所具有的制約和依存規則。

3、常用的數據模型主要有:層次模型、網狀模型和關係模型

  • 層次模型:用樹狀結構表示實體類型及實體間聯繫的數據模型稱爲層次模型。
    (1)每棵樹有且僅有一個無雙親節點,稱爲根。
    (2)樹中除根外所有節點有且僅有一個雙親。
  • 網狀模型:用有向圖結構表示實體類型及實體間聯繫的數據模型稱爲網狀模型。
  • 關係模型:以二維表來描述數據。關係模型中每個表有多個字段列和記錄行,每個字段列有固定屬性。
    關係模型基本術語:
    (1)關係:一個二維表就是一個關係。
    (2)元組:二維表中的一行,即表中的記錄。
    (3)屬性:二維表中的一列,用類型和值來表示。
    (4)域:每個屬性取值的變化範圍,如性別的域爲(男,女)。
    (5)關係中的數據約束:
    實體完整性約束:約束關係的主鍵中屬性值不能爲空值。
    參照完整性約束:關係之間的基本約束。
    用戶自定義的完整性約束:反映了具體應用中數據的語義要求。

4、mysql三大範式

  • 第一範式:確保每列的原子性
    (1)如果每列(或者每個屬性)都是不可再分的最小數據單元(也稱爲最小的原子單元),則滿足第一範式。
    (2)例如:顧客表(姓名、編號、地址、……)其中"地址"列還可以細分爲國家、省、市、區等。
  • 第二範式:在第一範式的基礎上更進一層,目標是確保表中的每列都和主鍵相關
    (1)如果一個關係滿足第一範式,並且除了主鍵以外的其它列,都依賴於該主鍵,則滿足第二範式。
    (2)例如:訂單表(訂單編號、產品編號、定購日期、價格、……),"訂單編號"爲主鍵,"產品編號"和主鍵列沒有直接的關係,即"產品編號"列不依賴於主鍵列,應刪除該列。
  • 第三範式:在第二範式的基礎上更進一層,目標是確保每列都和主鍵列直接相關,而不是間接相關
    (1)如果一個關係滿足第二範式,並且除了主鍵以外的其它列都不依賴於主鍵列,則滿足第三範式。
    (2)爲了理解第三範式,需要根據Armstrong公里之一定義傳遞依賴。假設A、B和C是關係R的三個屬性,如果A-〉B且B-〉C,則從這些函數依賴中,可以得出A-〉C,如上所述,依賴A-〉C是傳遞依賴。
    (3)例如:訂單表(訂單編號,定購日期,顧客編號,顧客姓名,……),初看該表沒有問題,滿足第二範式,每列都和主鍵列"訂單編號"相關,再細看你會發現"顧客姓名"和"顧客編號"相關,"顧客編號"和"訂單編號"又相關,最後經過傳遞依賴,"顧客姓名"也和"訂單編號"相關。爲了滿足第三範式,應去掉"顧客姓名"列,放入客戶表中。

5、關係數據庫的設計原則

  • (1)數據庫內數據文件的數據組織應獲得最大限度的共享,最小的冗餘度,消除數據及數據依賴關係中的冗餘部分,使依賴於同一個數據模型的數據達到有效的分離。
  • (2)保證輸入、修改數據時數據的一致性與正確性。
  • (3)保證數據與使用數據的應用程序之間的高度獨立性。

6、數據庫的三級模式結構:模式、外模式、內模式

  • 模式:
    模式也稱爲邏輯模式或概念模式,是數據庫中全體數據中的邏輯結構和特徵的描述,是所有用戶的公共數據視圖。一個數據庫只有一個模式。模式處於三級結構的中間層。
  • 外模式
    外模式也稱爲用戶模式,是數據庫用戶(包括應用程序猿和最終用戶)能夠看見和使用的局部數據的邏輯結構和特徵的描述,是數據庫用戶的數據視圖是與某一應用有關的的數據的邏輯表示。。外模式是模式的子集,一個數據庫可以有多個外模式。
  • 內模式
    內模式也稱爲存儲模式,是數據物理結構和存儲方式的描述,是數據在數據庫內部的表示方式。一個數據庫只有一個內模式

7、數據庫常用對象

  • 表:包含數據庫中所有數據的數據庫對象,由行和列組成。
  • 字段:表中每列稱爲一個字段。
  • 索引:是一個單獨的、物理的數據庫結構。它是依賴於表建立的,在數據庫中索引使數據庫程序無須對整個表進行掃描,就可以在其中找到所需的數據。
  • 視圖:從一張或多張表中導出的表。
  • 存儲過程:增刪改差的sql語句集合。

8、兩種常見的存儲引擎

InnoDB

  • InnoDB 在 MySQL 5.5 及以後成爲默認索引,它的特點是:
  1. 支持行鎖,採用 MVCC 來支持高併發
  2. 支持事務
  3. 支持外鍵
  4. 支持崩潰後的安全恢復
  5. 不支持全文索引
  6. InnoDB 是一個事務型存儲引擎,爲用戶操作非常大的數據存儲提供了一個強大的解決方案,已經被很多互聯網公司使用。
  • 在以下場合下,使用InnoDB是最理想的選擇:
  1. 更新密集的表:InnoDB存儲引擎特別適合處理多重併發的更新請求。
  2. 事務:InnoDB 存儲引擎是支持事務的標準MySQL存儲引擎。
  3. 自動災難恢復:與其它存儲引擎不同,InnoDB表能夠自動從災難中恢復。
  4. 外鍵約束:MySQL支持外鍵的存儲引擎只有InnoDB。
  5. 支持自動增加列 AUTO_INCREMENT 屬性。

MyISAM

  • MyISAM 引擎是 MySQL 5.1 及之前版本的默認引擎,它的特點是:
  1. 不支持行鎖,讀取時對需要讀到的所有表加鎖,寫入時則對錶加排它鎖
  2. 不支持事務
  3. 不支持外鍵
  4. 不支持崩潰後的安全恢復
  5. 在表有讀取查詢的同時,支持往表中插入新紀錄
  6. 支持 BLOB 和 TEXT 的前500個字符索引,支持全文索引
  7. 支持延遲更新索引,極大提升寫入性能
  8. 對於不會進行修改的表,支持壓縮表,極大減少磁盤空間佔用

參考資料:
《mysql從入門到精通》—明日科技

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章