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 及以後成爲默認索引,它的特點是:
- 支持行鎖,採用 MVCC 來支持高併發
- 支持事務
- 支持外鍵
- 支持崩潰後的安全恢復
- 不支持全文索引
- InnoDB 是一個事務型存儲引擎,爲用戶操作非常大的數據存儲提供了一個強大的解決方案,已經被很多互聯網公司使用。
- 在以下場合下,使用InnoDB是最理想的選擇:
- 更新密集的表:InnoDB存儲引擎特別適合處理多重併發的更新請求。
- 事務:InnoDB 存儲引擎是支持事務的標準MySQL存儲引擎。
- 自動災難恢復:與其它存儲引擎不同,InnoDB表能夠自動從災難中恢復。
- 外鍵約束:MySQL支持外鍵的存儲引擎只有InnoDB。
- 支持自動增加列 AUTO_INCREMENT 屬性。
MyISAM
- MyISAM 引擎是 MySQL 5.1 及之前版本的默認引擎,它的特點是:
- 不支持行鎖,讀取時對需要讀到的所有表加鎖,寫入時則對錶加排它鎖
- 不支持事務
- 不支持外鍵
- 不支持崩潰後的安全恢復
- 在表有讀取查詢的同時,支持往表中插入新紀錄
- 支持 BLOB 和 TEXT 的前500個字符索引,支持全文索引
- 支持延遲更新索引,極大提升寫入性能
- 對於不會進行修改的表,支持壓縮表,極大減少磁盤空間佔用
參考資料:
《mysql從入門到精通》—明日科技