前言
- 本篇文章學習書籍:《數據庫系統概論》第5版 王珊 薩師煊編著
- 視頻資源來自:數據庫系統概論完整版(基礎篇+高級篇+新技術篇)
- 由於 BitHachi 學長已經系統的整理過本書了,我在學習課本和視頻以及學長文章的同時在學長文章的基礎上進行相應學習修改。(學長原系列目錄:Here)
- 資料參考網站:MySQL教程
0.思維導圖
1.數據模型的概念
- 在數據庫中用數據模型這個工具來
抽象、表示和處理
現實世界中的數據和信息。 - 通俗地講數據模型就是現實世界的模擬。
數據模型應滿足三方面要求:
-
能比較
真實
地模擬現實世界 -
容易
為人所理解
-
便於在計算機上
實現
2.兩大類數據模型
數據模型分為兩類(分屬兩個不同的層次)
-
(1)
概念模型 也稱信息模型
,它是按用戶的觀點
來對數據和信息建模,用於數據庫設計。 -
(2)
邏輯模型
和物理模型
邏輯模型主要包括網狀模型
、層次模型
、關系模型
、面向對象模型
等,按計算機系統的觀點
對數據建模,用於DBMS實現。
物理模型是對數據最底層的抽象,描述數據在系統內部的表示方式和存取方法,在磁盤或磁帶上的存儲方式和存取方法。
客觀對象的抽象過程—兩步抽象
-
現實世界中的客觀對象抽象為
概念模型
; -
把
概念模型
轉換為某一DBMS支持的數據模型
。
3.數據模型的組成要素
(1)數據結構
數據結構是所研究的對象類型的集合。這些對象是數據庫的組成成分,數據結構指對象和對象間聯系的表達和實現,是對系統靜態特征的描述,包括兩個方面:
(1)數據本身:類型、內容、性質。例如關系模型中的域、屬性、關系等。
(2)數據之間的聯系:數據之間是如何相互關聯的,例如關系模型中的主碼、外碼聯系等。
(2)數據操作
數據操作
- 對數據庫中各種
對象(型)
的實例(值)
允許執行的操作
,及有關的操作規則
數據操作的類型
- 查詢
- 更新(包括插入、刪除、修改)
(3)數據的完整性約束條件
- 數據的完整性約束條件是一組完整性規則的集合,規定數據庫狀態及狀態變化所應滿足的條件,以保證數據的正確性、有效性和相容性。
完整性規則:給定的數據模型中數據及其聯系所具有的制約和儲存規則
4.概念模型
(1)用途與基本要求
概念模型的用途:
- 概念模型用於信息世界的建模
- 是現實世界到機器世界的一個中間層次
- 是數據庫設計的有力工具
- 數據庫設計人員和用戶之間進行交流的語言
對概念模型的基本要求:
- 較強的語義表達能力
- 能夠方便、直接地表達應用中的各種語義知識
- 簡單、清晰、易於用戶理解
(2) 信息世界中的基本概念
- (1)
實體
(Entity)
客觀存在並可相互區別的事物稱為實體。
可以是具體的人、事、物或抽象的概念。 - (2)
屬性
(Attribute)
實體所具有的某一特性稱為屬性。
一個實體可以由若干個屬性來刻畫。 - (3)
碼
(Key)
唯一標識實體的屬性集
稱為碼。 - (4)
域
(Domain)
屬性
的取值范圍
稱為該屬性的域。 - (5)
實體型
(Entity Type)
用實體名
及其屬性名集合
來抽象和刻畫同類實體
稱為實體型 - (6)
實體集
(Entity Set)
同一類型實體的集合
稱為實體集 - (7)
聯系
(Relationship)- 現實世界中
事物內部
以及事物之間
的聯系
在信息世界中反映為實體內部的聯系和實體之間的聯系。 - 實體
內部的聯系
通常是指組成實體的各屬性之間
的聯系 - 實體
之間的聯系
通常是指不同實體集之間
的聯系
- 現實世界中
(3)兩個實體型之間的聯系
① 一對一聯系(1:1)
實例
- 一個班級只有一個正班長
- 一個班長只在一個班中任職
定義:
如果對於實體集A中的每一個實體,實體集B中至多有一個(也可以沒有)實體與之聯系,反之亦然。則稱實體集A與實體集B具有一對一聯系,記為1:1
② 一對多聯系(1:n)
實例
一個班級中有若干名學生,
每個學生只在一個班級中學習
定義:
如果對於實體集A中的每一個實體,實體集B中有n個實體(n≥0)與之聯系,反之,對於實體集B中的每一個實體,實體集A中至多只有一個實體與之聯系,則稱實體集A與實體集B有一對多聯系,記為1:n
③ 多對多聯系(m:n)
實例
課程與學生之間的聯系:
- 一門課程同時有若干個學生選修
- 一個學生可以同時選修多門課程
定義:
如果對於實體集A中的每一個實體,實體集B中有n個實體(n≥0)與之聯系,反之,對於實體集B中的每一個實體,實體集A中也有m個實體(m≥0)與之聯系,則稱實體集A與實體B具有多對多聯系,記為m:n
(4)兩個以上實體型之間的聯系
① 一對多聯系(1:m||1:n)
- 若實體集E1,E2,…,En存在聯系,對於實體集Ej(j=1,2,…,i-1i+1,…,n)中的給定實體,最多只和Ei中的一個實體相聯系,則我們說Ei與E1E2,…,Ei-1,Ei+1,…,En之間的聯系是一對多的。
實例
- 課程、教師與參考書三個實體型
一門課程可以有若干個教師講授,
使用若干本參考書,
每一個教師只講授一門課程,
每一本參考書只供一門課程使用
② 一對一聯系(1:1:1)
實例
- 一個獨生子女只有一個父親,一個母親
- 一個父親也只有一個獨生子女
- 一個母親也只有一個獨生子女
③ 多對多聯系(m:n:p)
實例
供應商、項目、零件三個實體型
一個供應商可以供給多個項目多種零件
每個項目可以使用多個供應商供應的零件
每種零件可由不同供應商供給
(5)單個實體型內的聯系
① 一對多聯系(1:n)
實例
職工實體型內部具 有領導與被領導
的聯系
某一職工(干部)“領導”若干名職工
一個職工僅被另外一個職工直接領導
這是一對多的聯系
② 一對一聯系(1:1)
- 身份證可以唯一確認一個人的身份,人與身份證
有確認和被確認
的關系 - 一個身份證唯一確定一個人
- 一個人也唯一確認一個身份證
③ 多對多聯系 (m:n)
- 飲料和廠商之間有
制造和被制造
的關系 - 多個飲料可以被多個廠商制造
- 多個廠商可以制造出多種飲料
(6)概念模型的一種表示方法
① 實體-聯系方法(E-R方法)
- E-R圖也稱實體-聯系圖(Entity Relationship Diagram),提供了表示實體類型、屬性和聯系的方法,用E-R圖來描述現實世界的概念模型
- E-R方法也稱為E-R模型
② 實體型
用矩形表示,矩形框內寫明實體名。
③ 屬性
用橢圓形表示,並用無向邊將其與相應的實體連接起來
④ 聯系
聯系本身:
用菱形表示,菱形框內寫明聯系名,並用無向邊分別與有關實體連接起來,同時在無向邊旁標上聯系的類型(1:1、1:n或m:n)
⑤ 聯系的表示方法
⑥ 聯系的表示方法示例
⑦ 聯系的屬性
聯系本身
也是一種實體型
,也可以有屬性
。如果一個聯系具有屬性,則這些屬性也要用無向邊與該聯系連接起來
⑧ 一個實例
用E-R圖表示某個工廠物資管理的概念模型
- 實體
倉庫: 倉庫號、面積、電話號碼
零件 :零件號、名稱、規格、單價、描述
供應商:供應商號、姓名、地址、電話號碼、帳號
項目:項目號、預算、開工日期
職工:職工號、姓名、年齡、職稱
實體之間的聯系如下:
(1)一個倉庫可以存放多種零件,一種零件可以存放在多個倉庫中。倉庫和零件具有多對多的聯系。用庫存量來表示某種零件在某個倉庫中的數量。
(2)一個倉庫有多個職工當倉庫保管員,一個職工只能在一個倉庫工作,倉庫和職工之間是一對多的聯系。職工實體型中具有一對多的聯系
(3)職工之間具有領導-被領導關系。即倉庫主任領導若干保管員。
(4)供應商、項目和零件三者之間具有多對多的聯系
5.非關系模型
(1)層次模型(Hierarchical Model)
- 層次模型是數據庫系統中最早出現的數據模型
- 層次數據庫系統的典型代表是IBM公司的IMS(Information Management System)數據庫管理系統
- 層次模型用樹形結構來表示各類實體以及實體間的聯系
① 數據結構
滿足下面兩個條件的基本層次聯系的集合為層次模型
- 有且只有一個結點沒有雙親結點,這個結點稱為
根結點
- 根以外的其它結點
有且只有一個
雙親結點
層次模型中的幾個術語
根結點,雙親結點,兄弟結點,葉結點
② 特點
- 結點的雙親是
唯一
的 - 只能直接處理
一對多
的實體聯系 - 每個記錄類型可以定義一個排序字段,也稱為
碼字段
- 任何記錄值只有
按其路徑查看
時,才能顯出它的全部意義 沒有
一個子女記錄值能夠脫離
雙親記錄值而獨立存在
③ 多對多聯系在層次模型中的表示
方法:
- 將多對多聯系分解成一對多聯系
分解方法:
-
冗余結點法
-
虛擬結點法
④ 數據操縱與完整性約束
層次模型的數據操縱:
- 查詢
- 插入
- 刪除
- 更新
層次模型的完整性約束條件:
- 無相應的雙親結點值就不能插入子女結點值
- 如果刪除雙親結點值,則相應的子女結點值也被同時刪除
- 更新操作時,應更新所有相應記錄,以保證數據的一致性
⑤ 存儲結構
鄰接法:
按照層次樹 前序遍歷(T-L-R)
的順序把所有記錄值依次鄰接存放,即通過物理空間的位置相鄰來實現層次順序。又可分為:子女-兄弟鏈接法
和層次序列鏈接法
。
❶ 子女-兄弟鏈接法
每個記錄設兩類指針,分別指向最左邊的子女(每個記錄型對應一個)和最近的兄弟
❷ 層次序列鏈接法
- 按樹的
前序穿越順序
鏈接各記錄值
⑥ 優缺點
- 優點:
層次模型的數據結構比較簡單清晰
查詢效率高,性能優於關系模型,不低於網狀模型
層次數據模型提供了良好的完整性支持 - 缺點:
多對多聯系表示不自然
對插入和刪除操作的限制多,應用程序的編寫比較復雜
查詢子女結點必須通過雙親結點
由於結構嚴密,層次命令趨於程序化
(2)網狀模型(Network Model)
網狀數據庫系統采用網狀模型作為數據的組織方式
① 數據結構
網狀模型:
滿足下面兩個條件的基本層次聯系的集合:
- 允許一個以上的結點無雙親;
- 一個結點可以有多於一個的雙親。
表示方法(與層次數據模型相同):
實體型
:用記錄類型描述
每個結點
表示一個記錄類型(實體)
屬性
:用字段描述
每個記錄類型可包含若干個字段
聯系
:用結點之間的連線
表示記錄類型(實體)之
間的一對多的父子聯系
網狀模型與層次模型的區別:
- 網狀模型允許多個結點沒有雙親結點
- 網狀模型允許結點有多個雙親結點
- 網狀模型允許兩個結點之間有多種聯系(復合聯系)
- 網狀模型可以更直接地去描述現實世界
- 層次模型實際上是網狀模型的一個特例
網狀模型中子女結點與雙親結點的聯系可以不唯一
要為每個聯系命名
,並指出與該聯系有關
的雙親記錄
和子女記錄
多對多聯系在網狀模型中的表示:
方法:將多對多
聯系直接分解成一對多
聯系
例如:一個學生可以選修若干門課程,·某一課程可以被多個學生選修,學生與課程之間是多對多聯系 ·
- 引進一個學生選課的聯結記錄,由3個數據項組成
學號
課程號
成績
表示某個學生選修某一門課程及其成績
② 網狀數據模型的操縱與完整性約束(續)
網狀數據庫系統(如DBTG)對數據操縱加 了一些限制,提供了一定的完整性約束
碼
:唯一標識記錄的數據項的集合- 一個聯系中雙親記錄與子女記錄之間是一對多聯系
- 支持雙親記錄和子女記錄之間某些約束條件
③ 存儲結構
關鍵:
- 實現記錄之間的聯系
常用方法:
- 單向鏈接
- 雙向鏈接
- 環狀鏈接
- 向首鏈接
④ 優缺點
-
優點
能夠更為直接地描述現實世界,如一個結點可以有多個雙親;
具有良好的性能,存取效率較高; -
缺點
結構比較復雜,而且隨着應用環境的擴大,數據庫的結構就變得越來越復雜,不利於最終用戶掌握;
DDL、DML語言復雜,用戶不容易使用;
6.關系模型
關系數據庫系統采用關系模型作為數據的組織方式
1970年美國IBM公司San Jose研究室的研究員E.F.Codd首次提出了數據庫系統的關系模型
計算機廠商新推出的數據庫管理系統幾乎都支持關系模型
(1)數據結構
在用戶觀點下,關系模型中數據的邏輯結構
是一張二維表
,它由行
和列
組成。
幾個名詞解釋:
-
關系
(Relation)
一個關系對應通常說的一張表 -
元組
(Tuple)
表中的一行即為一個元組 -
屬性
(Attribute)
表中的一列即為一個屬性,給每一個屬性起一個名稱即屬性名 -
主碼
(Key)
表中的某個屬性組,它可以唯一確定一個元組。 -
域
(Domain)
屬性的取值范圍。 -
分量
元組中的一個屬性值。 -
關系模式
對關系的描述
關系名(屬性1,屬性2,…,屬性n)
學生(學號,姓名,年齡,性別,系,年級)
舉幾個例子:
-
例1
學生、系、系與學生之間的一對多
聯系:
學生(學號,姓名,年齡,性別,系號,年級)
系 (系號,系名,辦公地點) -
例2
系、系主任、系與系主任間的一對一聯系 -
例3
學生、課程、學生與課程之間的多對多聯系:
學生(學號,姓名,年齡,性別,系號,年級)
課程(課程號,課程名,學分)
選修(學號,課程號,成績)
規范化:
關系必須是規范化的,滿足一定的規范條件
最基本的規范條件:關系的每一個分量必須是一個不可分的數據項, 不允許表中還有表
圖1.27中工資和扣除是可分的數據項 ,不符合關系模型要求
(2)關系數據模型的操縱與完整性約束
數據操作是集合操作,操作對象和操作結果都是關系
- 查詢
- 插入
- 刪除
- 更新
數據操作是集合操作,操作對象和操作結果都是關系
,即若干元組的集合存取路徑對用戶隱蔽,用戶只要指出“干什么”,不必詳細說明“怎么干”
關系的完整性約束條件
實體完整性
參照完整性
用戶定義的完整性
(3)存儲結構
- 實體及實體間的聯系都用表來表示
- 表以文件形式存儲
有的DBMS一個表對應一個操作系統文件;
有的DBMS自己設計文件結構;
(4)優缺點
- 優點
建立在嚴格的數學概念的基礎上;
概念單一:
實體和各類聯系都用關系來表示;
對數據的檢索結果也是關系;
關系模型的存取路徑對用戶透明;
具有更高的數據獨立性,更好的安全保密性
簡化了程序員的工作和數據庫開發建立的工作; - 缺點
- 存取路徑對用戶透明導致查詢效率往往不如非關系數據模型;
- 為提高性能,必須對用戶的查詢請求進行優化,增加了開發DBMS的難度;
7.面向對象數據模型
-
將
語義數據模型
和面向對象程序設計方法
結合起來,用面向對象觀點
來描述現實世界實體
(對象)的邏輯組織、對象間限制、聯系等的模型。
-
一系列面向對象核心概念構成了面向對象數據模型( Object Oriented Data Model, 00模型)的基礎。
8.對象關系模型
對象關系數據庫系統
(Object Relational DataBase System, ORDBS) 是關系數據庫
與面向對象數據庫
的結合。- 它保持了關系數據庫系統的非過程化數據存取方式和數據獨立性,繼承了關系數據庫系統已有的技術,支持原有的數據管理,又能支持00模型和對象管理。各數據庫廠商都在原來的產品基礎上進行了擴展。
- 1999 年發布的SQL標准(也稱為SQL99),增加了SQL/Object Language Binding, 提供了面向對象的功能標准。SQL99對ORDBS標准的制定滯后於實際系統的實現。所以各個ORDBS產品在支持對象模型方面雖然思想一致,但是所采用的術語、語言語法、擴展的功能都不盡相同。