這一篇用來做課程前期數據庫概念的記錄,不會有sql語句。
數據模型
數據模型是現實世界數據特徵的抽象,是現實世界的模擬。
分類
數據模型分爲兩類:
- 概念模型:按用戶觀點來對數據和信息建模,用於數據庫設計,也稱爲信息模型。
- 邏輯模型和物理模型:
-
- 邏輯模型:按計算機系統的觀點對數據建模,用於DBMS實現
-
- 物理模型:是對數據最底層的抽象,描述數據在系統內部的表示方式和存儲方法,在磁盤或磁帶上的存儲方式和存取方法
概念模型
用途:
- 概念模型用於信息世界的建模
- 是現實世界到機器世界的一箇中間層次
- 是數據庫設計的有力工具
- 數據庫設計人員和用戶支架內進行交流的語言。
該圖是用於表示概念模型的E-R圖,其中方框代表模型的實體,橢圓代表實體的屬性,菱形代表實體間的聯繫。
實體
客觀存在並可相互區別的事物,可以是具體的人、事、物,也可以是抽象的概念或聯繫。
屬性
實體所具有的的某一特性稱爲屬性。實體有若干個屬性值來刻畫(實體不能只有一個屬性)。
碼(key)
能唯一標識實體的最小屬性租稱爲碼,又叫做關鍵字、鍵。
關鍵字可以包含一個屬性,也可同時包含多可屬性——實體需要多個屬性才能唯一標識。
實體可以有一個碼,也可同時有多個嗎——最小的屬性組不止一種。
實體型
用實體名及其屬性名集合來抽象和刻畫同類實體,稱爲實體型。
在通常情況下,實體型也稱爲實體,他們倆區別不大
實體集
同型實體的集合
-----------------------------------------------------------
看到這如果不能分清實體、實體型、實體集可以這樣想:一個班級裏有小明、小紅、小剛三明學生,小明是一個實體,小明和他的一堆屬性(姓名,學號等)是一個實體型,小明、小紅、小剛加起來是一個實體集。
不看也行:
我們之所以說實體和實體型區別不大,是因爲“小明是一個實體”其實是“這名學生是一個實體”,“小明”是這名學生的一個屬性,在excel表格中這名學生是其中一行,這一行又包含着這名學生的屬性信息,所以這一行也是實體集,即:在excel表格(數據庫表)中,一行是一個實體/實體型,整個表是實體集。
-----------------------------------------------------------
聯繫
事物內部的聯繫:實體內部的聯繫。
事物之間的聯繫:實體之間的聯繫,實體集之間的聯繫。
聯繫可以看做一個實體
實體之間的聯繫:
-
一對一聯繫(1:1):
身份證:一個人只有一張,每一張只能一個人用。
-
一對多聯繫(1:n):
手機號:一個人可以有多個,一個手機號只能一個人用,可以沒有手機號,可以手機號沒人用。
-
多對多聯繫(m:n):
共享單車:愛咋用咋用,可以不用,可以沒人騎。
實體集之間的聯繫:
實體集的一對一聯繫沒有意義:因爲三個實體型以上的1:1聯繫,可以看成兩個實體型的1:1聯繫鏈,根據兩個實體型1:1聯繫的特點,三個以上的實體型可以看成一個實體型。
-
一對多聯繫:
在一組實體集中,只要有一組實體集滿足以下條件:其他實體集每一個實體,最多和這個實體集中的一個實體相聯繫,就稱爲一對多。
各班級學生名單+優秀學生名單 -
多對多關係:
某個實體型與其他實體型有m:n的聯繫。
供貨商–項目–零件
實體內部的聯繫:
-
一對多聯繫:
某一學生是全班學生的班長,
一個學生只有一個班長。 -
一對一聯繫:
一個學生只有一個同桌,
一個學生只能是另外一個學生的同桌。 -
多對多聯繫:
同班同學中,
一個學生有許多同鄉,
一個學生可以是其他許多學生的同桌。
邏輯模型(數據模型)
邏輯模型(數據模型)描述系統的靜態特性、動態特性和完整性約束條件。
邏輯模型的三要素:
- 數據結構
- 數據操作
- 數據的約束條件(完整性約束)
數據結構
描述數據庫的組成對象(數據類型,內容,性質),以及對象之間的聯繫。
數據結構是對系統靜態特性的描述
數據操作
數據操作是指對數據庫中的各種對象(型)的實例(值)允許執行的操作的集合,包括操作以及有關的操作規則
數據操作的類型:
- 檢索
- 更新(包括插入、刪除、修改)
數據操作是對系統動態特性的描述
數據的約束條件
是一組完整性規則的集合。
完整性規則:
- 是給定的數據模型中數據及其聯繫所具有的制約和依存規則
- 是以限定符合數據模型的數據庫狀態以及狀態的變化
- 以保證數據的正確、有效、相容
最常用的數據模型
- 非關係模型
-
- 層次模型:用樹狀結構來表示各類實體以及實體之間的聯繫。
-
- 網狀模型
- 關係模型
- 面向對象模型
- 對象關係模型
層次模型的優點:
- 層次模型的數據結構比較簡單清晰
- 查詢效率高,性能優於關係模型,不低於網狀模型
- 層次數據模型提供了良好的完整性支持
層次模型的缺點:
- 多對多聯繫表示不自然
- 對插入和刪除操作限制多,應用程序的編寫比較複雜
- 查詢子女節點必須通過雙親結點
- 由於結構嚴密,層次命令趨於程序化
網狀模型的優點:
- 能夠更爲直接地描述現實世界,如一個結點可以有多個雙親
- 具有良好的性能,存取效率高
網狀模型的缺點:
- 結構比較複雜,而且隨着應用環境的擴大,數據庫的結構就變得越來越複雜,不利於最終用戶掌握。
- DDL、DML語言複雜,用戶不容易使用
- 記錄之間的聯繫是通過存取路徑實現的,應用程序在訪問數據時必須選擇合適的存取路徑,因此用戶必須瞭解系統結構的細節,加重了編寫程序的負擔。
關係模型 (重要)
關係模型是目前最重要的一種數據模型。
關係模型是建立在嚴格的數學概念的基礎上的。
在用戶角度,關係模型中的數據邏輯結構是一張二維表,由行和列組成。
術語
- 關係:一張二維表,由行和列組成。->表/實體集
- 元祖:表中的一行即爲一個元祖。->記錄/實體
- 屬性:表中的一列即爲一個屬性。->字段/屬性
- 主碼:表中的某個屬性組,它可以唯一確定一個元組。
- 域:屬性的取值範圍。
- 分量:元組中的一個屬性值。
- 關係模式:對關係的描述,->表結構/實體型
一般表示爲:關係名/表名(屬性集) 或 關係名/表名(屬性1,……,屬性n)
注意:
操縱和完整性約束條件
操縱: 查詢、插入、刪除、修改。
關係模型操作的特點:
- 數據操縱都是集合操作
- 操作對象和操作結果都是關係
- 關係模型的語言:高度的非過程化
關係的完整性約束條件包括三大類:
- 實體完整性
- 參照完整性
- 用戶定義完整性
存儲結構
關係模型的存儲單元是表,表以文件形式存儲
優缺點
優點:
- 建立在嚴格的數學概念的基礎上;
- 關係模型的概念單一(關係,即表);數據結構簡單、清晰,用戶易懂易用;
- 存取路徑對用戶透明,從而具有更高的數據獨立性、更好的安全保密性,簡化了開發工作。
缺點:
- 由於存取路徑對用戶透明,查詢效率往往不如非關係模型;
- 因此,爲了提高性能,必須對用戶的查詢請求進行優化,增加了DBMS開發難度。