文章目錄
- 一、基本概念
- 二、數據模型
- (一)基本概念
- (二)E-R模型
- (三)數據模型
- 三、關系代數
- (一)關系數據庫的基本概念
- (二)五種基本的關系代數運算
- (三)擴展的關系代數運算
- 四、關系數據庫SQL語言簡介
- (一)SQL體系結構
- (二)SQL數據定義
- (三)SQL數據查詢
- (四)SQL數據更新
- (五)SQL數據控制
- 五、關系數據庫的規范化
- (一)函數依賴
- (二)規范化
- (三)模式分解及分解應具有的特性
- 六、數據庫的控制功能
- (一)事務管理
- (二)數據庫的備份與恢復
- (三)并發控制
- (二)數據庫的備份與恢復
- (三)并發控制
一、基本概念
-
數據庫系統(DBS):廣義上講,數據庫系統是由數據庫、硬件、軟件和人員組成的。DBS包括DB和DBMS。
-
數據庫(DB):統一管理的、長期儲存在計算機內的、有組織的相關數據的集合。
-
數據庫管理系統(DBMS):實現功能包括數據定義、數據庫操作、數據庫運行管理、數據的組織存儲和管理、數據庫的建立和維護、其他功能。
-
數據庫系統的體系結構:集中式數據庫系統、客戶端/服務器結構、并行數據庫系統、分布式數據庫系統。
a. 分布式數據庫相關概念:分片透明(無需知道如何分塊存儲)、復制透明(無需知道如何復制)、位置透明(無需知道物理位置)、邏輯透明(無需知道局部使用哪種模型)。
b. 分布式數據庫特性:共享性(不同節點數據共享)、自治性(獨立管理本地數據)、可用性(使用副本避免癱瘓)、分布性(數據不同場地存儲。)
-
數據庫的三級模式結構:采用“三級模式和兩級映像”。
a. 概念模式(模式):數據庫中全部數據的邏輯結構和特征的描述,若若干個概念記錄類型組成。
b. 外模式(用戶模式或子模式):用戶與數據庫系統的接口,用戶用到的那部分數據的描述。
c. 內模式(存儲模式):數據物理結構和存儲方式的描述,定義所有的內部記錄類型、索引和文件組織方式等內容。
d. 兩級映像:包括模式/內模式映像(保證數據的物理獨立性)和外模式/模式映像(保證數據的邏輯獨立性)。
二、數據模型
(一)基本概念
-
最常見的數據模型分為:概念數據模型、基本數據模型。
-
數據模型的三要素:數據結構、數據操作、數據的約束條件。
(二)E-R模型
-
實體。
-
聯系:一對一、一對多、多對多。
-
屬性:簡單屬性和復合屬性、單值屬性和多值屬性、NULL屬性(無意義或不知道)、派生屬性(能從其他屬性得來)。
-
實體-聯系方法。
-
擴充的E-R模型:
a. 弱實體:一個實體的存在必須以另一個實體為前提。用雙線矩形框表示。
b. 特殊化:從普遍到特殊的過程。超類-子類關系模型使用特殊化圓圈和連線的一般方式表示。
(三)數據模型
-
層次模型:樹結構。
-
網狀模型:圖結構。
-
關系模型:目前最常用的數據模型之一,采用表格結構表達實體集以及實體集之間的聯系。 由關系數據結構、關系操作集合和關系完整性約束三部分組成。
-
面向對象模型。
三、關系代數
(一)關系數據庫的基本概念
-
關系模型的一些基本術語。
a. 關系:一個關系就是一張二維表,每個關系有一個關系名。
b. 元組:表中的一行即為一個元組,對應存儲文件中的一個記錄值。
c. 屬性:表中的列稱為屬性,包括屬性名和屬性值。
d. 域:屬性的取值范圍。
-
關系的相關名詞。
a. 碼:能夠唯一標識一個元組的屬性或屬性組合。
b. 候選碼(候選鍵):能夠唯一標識一個元組的最小屬性或屬性組合。
c. 主碼(主鍵):在一個關系中可能有多個候選碼,從中選擇一個作為主碼。
d. 主屬性:包含在任一候選碼中的諸屬性稱為主屬性,否則稱為非主屬性。
e. 外碼(外鍵):如果一個關系中的屬性或屬性組并非該關系的碼但他們是另外一個關系的碼,則稱其為該關系的外碼。
f. 全碼:關系模式中所有的屬性為一組是這個關系模式的候選碼,稱為全碼。
g. 超碼(超鍵):一個包含碼的屬性集稱為超碼。
-
關系模式:關系的描述稱為關系模式。
a. 可以形式化地表示為: R ( U , D , d o m , F ) R(U,D,dom,F) R(U,D,dom,F),其中R表示關系名,U是組成該關系式的屬性名集合,D是屬性的域,dom是屬性向域的映像集合,F為屬性間數據的依賴關系集合。
b. 通常將關系模式簡記為: R ( U ) R(U) R(U)或 R ( A 1 , A 2 , A 3 , … , A n ) R(A_1,A_2,A_3,…,A_n) R(A1?,A2?,A3?,…,An?),其中 A 1 , A 2 , A 3 , … , A n A_1,A_2,A_3,…,A_n A1?,A2?,A3?,…,An?為屬性名或域名。
-
完整性約束:實體完整性、參照完整性、用戶定義的完整性。
a. 實體完整性:主屬性不能取空值。
b. 參照完整性:外碼或者取空值或者取其作為主碼所在關系中某個元組的主碼值。
c. 用戶自定義完整性:針對某一具體的關系數據庫的約束條件。
(二)五種基本的關系代數運算
-
并: R ∪ S = { t 丨 t ∈ R ∨ t ∈ S } R∪S=\{t丨t∈R∨t∈S\} R∪S={t丨t∈R∨t∈S}。
-
差: R ? S = { t 丨 t ∈ R ∧ t ? S } R-S=\{t丨t∈R∧t?S\} R?S={t丨t∈R∧t∈/S}。
-
廣義笛卡爾積: R × S = { t 丨 t = < t n , t m > ∧ t n ∈ R ∧ t m ∈ S } R×S=\{t丨t=<t^n,t^m>∧t^n∈R∧t^m∈S\} R×S={t丨t=<tn,tm>∧tn∈R∧tm∈S}。
-
投影: π A ( R ) = { t [ A ] 丨 t ∈ R } π_A(R)=\{t[A]丨t∈R\} πA?(R)={t[A]丨t∈R}。(垂直選擇若干屬性列)
-
選擇: σ F ( R ) = { t 丨 t ∈ R ∧ F ( t ) = T r u e } σ_F(R)=\{t丨t∈R∧F(t)=True\} σF?(R)={t丨t∈R∧F(t)=True}。(水平選擇滿足條件的元組行)
(三)擴展的關系代數運算
-
交: R ∩ S = { t 丨 t ∈ R ∧ t ∈ S } 。 R∩S=\{t丨t∈R∧t∈S\}。 R∩S={t丨t∈R∧t∈S}。
-
連接:分為θ連接、等值連接、自然連接。
a. θ連接: R ? X θ Y S = { t 丨 t = < t n , t m > ∧ t n ∈ R ∧ t m ∈ S ∧ t n [ X ] θ t m [ Y ] } R?_{XθY}S=\{t丨t=<t^n,t^m>∧t^n∈R∧t^m∈S∧t^n[X]θt^m[Y]\} R?XθY?S={t丨t=<tn,tm>∧tn∈R∧tm∈S∧tn[X]θtm[Y]}。(θ是比較運算符,θ連接可有笛卡爾積和選取運算導出)
b. 等值連接: R ? X = Y S = { t 丨 t = < t n , t m > ∧ t n ∈ R ∧ t m ∈ S ∧ t n [ X ] = t m [ Y ] } R?_{X=Y}S=\{t丨t=<t^n,t^m>∧t^n∈R∧t^m∈S∧t^n[X]=t^m[Y]\} R?X=Y?S={t丨t=<tn,tm>∧tn∈R∧tm∈S∧tn[X]=tm[Y]}。(即θ為“=”時)
c. 自然連接: R ? S = { t 丨 t = < t n , t m > ∧ t n ∈ R ∧ t m ∈ S ∧ R . B 1 = S . B 1 ∧ R . B 2 = S . B 2 ∧ … ∧ R . B k = S . B k } R?S=\{t丨t=<t^n,t^m>∧t^n∈R∧t^m∈S∧R.B_1=S.B_1∧R.B_2=S.B_2∧…∧R.B_k=S.B_k\} R?S={t丨t=<tn,tm>∧tn∈R∧tm∈S∧R.B1?=S.B1?∧R.B2?=S.B2?∧…∧R.Bk?=S.Bk?}。(比較分量必須是相同屬性組且在結果集中將重復屬性列去掉)
-
除: R ÷ S = { t n [ X ] 丨 t n ∈ R ∧ π y ( S ) ? Y x } R÷S=\{t^n[X]丨t^n∈R∧π_y(S)?Y_x\} R÷S={tn[X]丨tn∈R∧πy?(S)?Yx?}
-
廣義投影: π F 1 , F 2 , . . . , F n ( R ) π_{F_1,F_2,...,F_n}(R) πF1?,F2?,...,Fn??(R)。(允許在投影列表中使用算術運算)
-
外連接:分為左外連接、右外連接、全外連接。
a. 左外連接: R = ? S R=?S R=?S。(對于左側關系中所有與右側關系任意元組都不匹配的元組用空值null填充所有右側關系的屬性)
b. 右外連接: R ? = S R?=S R?=S。(對于右側關系中所有與左側關系任意元組都不匹配的元組用空值null填充所有左側關系的屬性)
c. 全外連接: R = ? = S R=?=S R=?=S。(完成左外連接和右外連接的操作)
四、關系數據庫SQL語言簡介
(一)SQL體系結構
-
SQL支持三級模式結構:視圖對應外模式,基本表對應模式,存儲文件對應內模式。
-
SQL語言的分類。
a. 數據定義(DDL):CREATE、DROP、ALERT。
b. 數據查詢(DQL):SELECT。
c. 數據操縱(DML):INSERT、UPDATE、DELETE。
d. 數據控制(DCL):GRANT、REVORK。
(二)SQL數據定義
-
創建表。
-
修改和刪除表。
-
索引建立與刪除。
-
視圖創建與刪除。
(三)SQL數據查詢
-
SELECT基本結構
-
簡單查詢。
-
連接查詢。
-
子查詢與聚集函數。
-
分組查詢。
-
更名運算。
-
字符串操作。
-
視圖的查詢。
(四)SQL數據更新
-
插入。
-
刪除。
-
修改。
(五)SQL數據控制
-
授權。
-
收回權限。
五、關系數據庫的規范化
(一)函數依賴
-
函數依賴: X → Y X→Y X→Y。
-
非平凡的函數依賴: X → Y X→Y X→Y,但 Y ? X Y?X Y?X。
-
平凡的函數依賴: X → Y X→Y X→Y,但 Y ? X Y?X Y?X。
-
完全函數依賴: X → F Y X \overset F \rightarrow Y X→FY(X的任一真子集都不能決定Y)。
-
部分函數依賴: X → P Y X \overset P \rightarrow Y X→PY(存在X的真子集能決定Y)。
-
傳遞依賴: X → 傳遞 Z X \overset {傳遞} \rightarrow Z X→傳遞Z( X → Y X→Y X→Y,但 Y ? X Y?X Y?X, Y → Z Y→Z Y→Z)。
-
函數依賴的公理系統:設關系模式 R ( U , F ) R(U,F) R(U,F)。
a. 合并規則:若 X → Y X→Y X→Y, X → Z X→Z X→Z,則 X → Y Z X→YZ X→YZ為 F F F所蘊涵。
b. 偽傳遞率:若 X → Y X→Y X→Y, W Y → Z WY→Z WY→Z,則 X W → Z XW→Z XW→Z為 F F F所蘊涵。
c. 分解規則:若 X → Y X→Y X→Y, Z ? Y Z?Y Z?Y,則 X → Z X→Z X→Z為 F F F所蘊涵。
(二)規范化
-
范式之間, 5 N F ? 4 N F ? B C N F ? 3 N F ? 2 N F ? 1 N F 5NF?4NF?BCNF?3NF?2NF?1NF 5NF?4NF?BCNF?3NF?2NF?1NF 成立。
-
1 N F 1NF 1NF(第一范式):關系模式R的每一個分量是不可再分的數據項。
a. 可能存在部分函數依賴,不能排除數據冗余和更新異常等問題。
-
2 N F 2NF 2NF(第二范式):關系模式 R ∈ 1 N F R∈1NF R∈1NF ,且每一個非主屬性完全依賴于碼。
a. 相較 1 N F 1NF 1NF 消除了部分函數依賴。
b. 可能存在傳遞函數依賴,不能排除數據冗余和更新異常等問題(但能排除插入異常、刪除異常和修改復雜等問題)。
-
3 N F 3NF 3NF(第三范式):關系模式 R ( U , F ) ∈ 1 N F R(U,F)∈1NF R(U,F)∈1NF 中不存在這樣的碼 X X X ,屬性組 Y Y Y 及非主屬性 Z ( Z ? Y ) Z(Z?Y) Z(Z?Y) 使得 X → Y ( Y ? X ) X→Y(Y?X) X→Y(Y?X) , Y → Z Y→Z Y→Z 成立。
a. 相較 2 N F 2NF 2NF 消除了非主屬性對碼的傳遞函數依賴。
b. 產生冗余和異常的兩個重要原因是部分函數依賴和傳遞依賴。
-
B C N F BCNF BCNF(BC范式):關系模式 R ( U , F ) ∈ 1 N F R(U,F)∈1NF R(U,F)∈1NF 中 X → Y X→Y X→Y 且 Y ? X Y?X Y?X 時 X X X 必含有碼。
a. 排除了任何屬性對碼的傳遞依賴與部份依賴。
b. 所有非主屬性對每一個碼都是完全函數依賴,所有主屬性對每一個不含它的碼也是完全函數依賴,沒有任何屬性完全依賴于非碼的任何一組屬性。
(三)模式分解及分解應具有的特性
-
分解。
-
無損連接。
-
保持函數依賴。
六、數據庫的控制功能
(一)事務管理
-
事務。
-
事務定義語句:BEGIN TRANSACTION(事務開始)、COMMIT(事務提交)、ROLLBACK(事務回滾)。
-
事務的ACID性質。
a. 原子性:要么都做,要么都不做。
b. 一致性:數據庫只包含成功事務提交的結果。
c. 隔離性:多個事務并發執行時對其他事物都不可見。
d. 持久性:一旦事務成功提交即使崩潰也將永久有效。
(二)數據庫的備份與恢復
-
故障類型。
-
備份方法。
-
恢復。
-
數據庫鏡像。
(三)并發控制
-
并發操作帶來的三類數據不一致性:丟失修改、不可重復讀、讀臟數據。
-
并發控制技術:封鎖。
a. 排它鎖(X鎖或寫鎖):只允許讀取和修改,其他事物不能再加任何鎖。
b. 共享鎖(S鎖或讀鎖):只允許讀取而不能修改,其他事物只能再加共享鎖。
b. 一致性:數據庫只包含成功事務提交的結果。c. 隔離性:多個事務并發執行時對其他事物都不可見。
d. 持久性:一旦事務成功提交即使崩潰也將永久有效。
(二)數據庫的備份與恢復
-
故障類型。
-
備份方法。
-
恢復。
-
數據庫鏡像。
(三)并發控制
-
并發操作帶來的三類數據不一致性:丟失修改、不可重復讀、讀臟數據。
-
并發控制技術:封鎖。
a. 排它鎖(X鎖或寫鎖):只允許讀取和修改,其他事物不能再加任何鎖。
b. 共享鎖(S鎖或讀鎖):只允許讀取而不能修改,其他事物只能再加共享鎖。