本文整理自《數(shù)據(jù)庫原理》和期末復(fù)習(xí)提綱
1. DBMS
數(shù)據(jù)庫管理系統(tǒng)(Database Management System)蝉娜,簡稱DBMS,是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件复斥。
數(shù)據(jù)庫系統(tǒng)的特點(diǎn)
- 數(shù)據(jù)結(jié)構(gòu)化
- 數(shù)據(jù)的高共享性
- 數(shù)據(jù)獨(dú)立性
- DBMS對(duì)數(shù)據(jù)統(tǒng)一管理和控制
2. 數(shù)據(jù)庫管理技術(shù)的發(fā)展過程
人工管理階段 —— 20 世紀(jì) 40 年代中期 - 20 世紀(jì) 50 年代中期
文件系統(tǒng)階段 —— 20 世紀(jì) 50 年代末期 - 20 世紀(jì) 60 年代中期
數(shù)據(jù)庫系統(tǒng)階段 —— 20 世紀(jì) 60 年代后期以來
3. 數(shù)據(jù)模型
通俗地講數(shù)據(jù)模型就是現(xiàn)實(shí)世界的模擬,在數(shù)據(jù)庫中用數(shù)據(jù)模型這個(gè)工具來抽象械媒、表示和處理現(xiàn)實(shí)世界中的數(shù)據(jù)和信息永票。
數(shù)據(jù)模型分成兩個(gè)不同的層次
概念模型(用戶),也稱信息模型滥沫,它是按用戶的觀點(diǎn)來對(duì)數(shù)據(jù)和信息建模侣集。
數(shù)據(jù)模型(計(jì)算機(jī)),主要包括網(wǎng)狀模型兰绣、層次模型世分、關(guān)系模型、面向?qū)ο竽P偷茸罕纾前?strong>計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對(duì)數(shù)據(jù)建模臭埋。
4. 數(shù)據(jù)庫系統(tǒng)的模式
4.1 三級(jí)模式結(jié)構(gòu)
(1) 外模式(又名子模式、用戶模式)臀玄,是數(shù)據(jù)庫用戶可見可用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述瓢阴,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示
(2) 模式(又名邏輯模式)健无,是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述荣恐,是所有用戶的公共數(shù)據(jù)視圖
(3) 內(nèi)模式(又名存儲(chǔ)模式),是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述累贤,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的存儲(chǔ)方式
(4) 一個(gè)數(shù)據(jù)庫只有一個(gè)模式和一個(gè)內(nèi)模式叠穆,但是可以有多個(gè)外模式。
(5) 模式與外模式的關(guān)系:一對(duì)多
- 外模式通常是模式的子集
- 一個(gè)數(shù)據(jù)庫可以有多個(gè)外模式臼膏。反映了不同的用戶的應(yīng)用需求硼被、看待數(shù)據(jù)的方式、對(duì)數(shù)據(jù)保密的要求
- 對(duì)模式中同一數(shù)據(jù)渗磅,在外模式中的結(jié)構(gòu)嚷硫、類型检访、長度、保密級(jí)別等都可以不同
- 一個(gè)數(shù)據(jù)庫可以有多個(gè)外模式臼膏。反映了不同的用戶的應(yīng)用需求硼被、看待數(shù)據(jù)的方式、對(duì)數(shù)據(jù)保密的要求
(6) 外模式與應(yīng)用的關(guān)系:一對(duì)多
- 同一外模式可以為某一用戶的多個(gè)應(yīng)用系統(tǒng)所使用
- 一個(gè)應(yīng)用程序只能使用一個(gè)外模式
4.2 二級(jí)映像模式
(1) 外模式 - 模式映象(邏輯獨(dú)立性)
- 定義外模式與模式之間的對(duì)應(yīng)關(guān)系
- 每一個(gè)外模式都對(duì)應(yīng)一個(gè)外模式/模式映象
- 外模式/模式映象的用途:保證數(shù)據(jù)的邏輯獨(dú)立性
- 當(dāng)模式改變時(shí)仔掸,數(shù)據(jù)庫管理員修改有關(guān)的外模式/模式映象脆贵,使外模式保持不變
- 應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫的,從而應(yīng)用程序不必修改嘉汰,保證了數(shù)據(jù)與程序的邏輯獨(dú)立性丹禀,簡稱數(shù)據(jù)的邏輯獨(dú)立性。
(2) 模式 - 內(nèi)模式映像(物理獨(dú)立性)
- 模式/內(nèi)模式映象定義了數(shù)據(jù)全局邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)之間的對(duì)應(yīng)關(guān)系鞋怀。例如双泪,說明邏輯記錄和字段在內(nèi)部是如何表示的
- 數(shù)據(jù)庫中模式/內(nèi)模式映象是唯一的
- 模式/內(nèi)模式映象的用途:保證數(shù)據(jù)的物理獨(dú)立性
- 當(dāng)數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)改變了(例如選用了另一種存儲(chǔ)結(jié)構(gòu)),數(shù)據(jù)庫管理員修改模式/內(nèi)模式映象密似,使模式保持不變
- 應(yīng)用程序不受影響焙矛。保證了數(shù)據(jù)與程序的物理獨(dú)立性,簡稱數(shù)據(jù)的物理獨(dú)立性残腌。
5. 事務(wù)
(1) 事務(wù)是恢復(fù)和并發(fā)控制的基本單位
(2) 事務(wù)的特性(ACID)
-
原子性(Atomicity)
事務(wù)是數(shù)據(jù)庫的邏輯工作單位村斟,事務(wù)中包括的諸操作要么都做,要么都不做抛猫。
-
一致性(Consistency)
事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)
一致性狀態(tài):數(shù)據(jù)庫中只包含成功事務(wù)提交的結(jié)果
不一致狀態(tài):數(shù)據(jù)庫中包含失敗事務(wù)的結(jié)果 -
隔離性(Isolation)
對(duì)并發(fā)執(zhí)行而言
- 一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾蟆盹。
- 一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對(duì)其他并發(fā)事務(wù)是隔離的。
- 并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能互相干擾
-
持續(xù)性(Durability)
持續(xù)性也稱永久性(Permanence)
- 一個(gè)事務(wù)一旦提交闺金,它對(duì)數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是永久性的逾滥。
- 接下來的其他操作或故障不應(yīng)該對(duì)其執(zhí)行結(jié)果有任何影響。
-
破壞事務(wù)ACID特性的因素
- 多個(gè)事務(wù)并行運(yùn)行時(shí)败匹,不同事務(wù)的操作交叉執(zhí)行
- 事務(wù)在運(yùn)行過程中被強(qiáng)行停止
6. 故障的種類
6.1 事務(wù)故障
(1) 事務(wù)故障的恢復(fù) (先UNDO再REDO)
- 撤消事務(wù)(UNDO)
- 強(qiáng)行回滾(ROLLBACK)該事務(wù)
清除該事務(wù)對(duì)數(shù)據(jù)庫的所有修改寨昙,使得這個(gè)事務(wù)像根本沒有啟動(dòng)過一樣。
(2) 事務(wù)故障的常見原因
輸入數(shù)據(jù)有誤掀亩、運(yùn)算溢出舔哪、違反了某些完整性限制、某些應(yīng)用程序出錯(cuò)槽棍、并行事務(wù)發(fā)生死鎖
6.2 系統(tǒng)故障
(1) 什么是系統(tǒng)故障
- 整個(gè)系統(tǒng)的正常運(yùn)行突然被破壞
- 所有正在運(yùn)行的事務(wù)都非正常終止
- 內(nèi)存中數(shù)據(jù)庫緩沖區(qū)的信息全部丟失
- 外部存儲(chǔ)設(shè)備上的數(shù)據(jù)未受影響
(2) 系統(tǒng)故障的恢復(fù) (先UNDO再REDO)
- 正向掃描日志文件(即從頭掃描日志文件)
- 對(duì)Undo隊(duì)列事務(wù)進(jìn)行UNDO處理
- 對(duì)Redo隊(duì)列事務(wù)進(jìn)行REDO處理
(3) 系統(tǒng)故障的常見原因
操作系統(tǒng)或DBMS代碼錯(cuò)誤捉蚤、操作員操作失誤、特定類型的硬件錯(cuò)誤(如CPU故障)刹泄、突然停電
6.3 介質(zhì)故障
(1) 什么是介質(zhì)故障
硬件故障使存儲(chǔ)在外存中的數(shù)據(jù)部分丟失或全部丟失外里。
介質(zhì)故障比前兩類故障的可能性小得多,但破壞性大得多
(2) 介質(zhì)故障的恢復(fù)
先找備份點(diǎn)再重新執(zhí)行備份點(diǎn)之后的成功事務(wù)
裝入數(shù)據(jù)庫發(fā)生介質(zhì)故障前某個(gè)時(shí)刻的數(shù)據(jù)副本
(REDO)重做自此時(shí)始的所有成功事務(wù)特石,將這些事務(wù)已提交的結(jié)果重新記入數(shù)據(jù)庫
恢復(fù)操作的基本原理:冗余
- 利用存儲(chǔ)在系統(tǒng)其它地方的冗余數(shù)據(jù)來重建數(shù)據(jù)庫中已被破壞或不正確的那部分?jǐn)?shù)據(jù)
(3) 介質(zhì)故障的常見原因
硬件故障:磁盤損壞、磁頭碰撞鳖链、操作系統(tǒng)的某種潛在錯(cuò)誤姆蘸、瞬時(shí)強(qiáng)磁場干擾
7. 并發(fā)控制
數(shù)據(jù)庫管理系統(tǒng)中并發(fā)控制的責(zé)任是保證事務(wù)的 ACID (原子性墩莫、一致性、隔離性逞敷、持久性狂秦;在此主要針對(duì)一致性和隔離性)特性。
(1) 不加控制的并發(fā)操作會(huì)導(dǎo)致數(shù)據(jù)的不一致性推捐,包括:
丟失修改
兩個(gè)事務(wù) T1裂问、T2 讀入同一數(shù)據(jù)進(jìn)行修改,T2 提交的結(jié)果破壞了 T1 提交的結(jié)果牛柒,導(dǎo)致 T1 的修改被丟失-
不可重復(fù)讀
事務(wù) T1 讀入數(shù)據(jù)后堪簿,事務(wù) T2 對(duì)該數(shù)據(jù)執(zhí)行了更新操作,使得事務(wù) T1 再次讀取數(shù)據(jù)時(shí)得到跟之前不一樣的結(jié)果- 之前讀到 100皮壁,之后讀到 200
- 之前讀到有/無椭更,之后讀到無/有
- 之前讀到很少,之后讀到很多
讀臟數(shù)據(jù)
事務(wù) T1 寫入某一數(shù)據(jù)蛾魄,事務(wù) T2 讀到這一數(shù)據(jù)虑瀑,但后來 T1 被取消了,導(dǎo)致 T2 讀到了不正確的數(shù)據(jù)
(2) 并發(fā)控制的主要技術(shù)有封鎖滴须、時(shí)間戳舌狗、樂觀控制法和多版本并發(fā)控制等
- 封鎖:排他鎖(X)和共享鎖(S)組成的封鎖協(xié)議
- 時(shí)間戳:給每一個(gè)事務(wù)蓋上一個(gè)時(shí)間戳標(biāo)簽,按照這個(gè)時(shí)間戳來解決事務(wù)的沖突操作
- 樂觀控制法:讓事務(wù)自由執(zhí)行扔水,在事務(wù)提交前再進(jìn)行正確性檢查
- 多版本并發(fā)控制:在數(shù)據(jù)庫中通過維護(hù)數(shù)據(jù)對(duì)象的多個(gè)版本信息實(shí)現(xiàn)高效并發(fā)控制
(3) 基本封鎖類型
排他鎖痛侍、寫鎖、X:若事務(wù) T 對(duì)數(shù)據(jù)對(duì)象 A 加 X 鎖铭污,則 T 可以讀寫 A恋日,在 T 釋放 A 上的鎖之前其他任何事務(wù)都不能再對(duì) A 加任何類型的鎖
共享鎖、讀鎖嘹狞、S:若事務(wù) T 對(duì)數(shù)據(jù)對(duì)象 A 加 S 鎖岂膳,則 T 只可以讀 A,在 T 釋放 A 上的 S 鎖之前其他任何事
務(wù)都只能對(duì) A 加 S 鎖磅网,而不能加 X 鎖
(4) 封鎖協(xié)議
-
三級(jí)封鎖協(xié)議
兩段鎖協(xié)議
并發(fā)調(diào)度的可串行性的充分條件 - 多個(gè)事務(wù)的并發(fā)執(zhí)行正確谈截,當(dāng)且僅當(dāng)其結(jié)果與按某一次序串行
地執(zhí)行這些事務(wù)時(shí)的結(jié)果相同
8. 范式
范式是一種分層結(jié)構(gòu)的規(guī)范,分為六層:每一次層都比上一層更加嚴(yán)格:若要滿足下一層范式涧偷,前提是滿足上一層范式簸喂。
六層范式:1NF,2NF燎潮,3NF喻鳄,BCNF,4NF确封,5NF除呵,1NF要求最低再菊;5NF要求最嚴(yán)格。