CH7
1. 簡述數據庫設計的幾個階段的工作內容
- 需求分析:准確了解與分析用戶需求(包括數據與處理)。
- 概念結構設計:通過對用戶需求進行綜合、歸納與抽象,形成一個獨立於具體DBMS的概念模型。
- 邏輯結構設計:將概念結構轉換為某個DBMS所支持的數據模型;對其進行優化。
- 數據庫物理設計:為邏輯數據模型選取一個最適合應用環境的物理結構(包括存儲結構和存取方法)。
- 數據庫實施:運用DBMS提供的數據庫語言(如SQL)及宿主語言,根據邏輯設計和物理設計的結果建立數據庫、編制與調試應用程序、組織數據入庫、進行試運行。
- 數據庫維護和運行:數據庫應用系統經過試運行后即可投入正式運行;在數據庫系統運行過程中必須不斷地對其進行評價、調整與修改。
2. 在邏輯結構設計階段,如何處理E-R圖中1:n的聯系?
- 可以轉換為一個獨立的關系模式,與該聯系相連的各實體的碼以及聯系本身的屬性均轉換為關系的屬性,而關系的碼為n端實體的碼;
- 也可以與n端所對應的關系模式合並,即,將1端實體的碼加入到n端對應的關系中,該碼成為n端對應的關系的外部碼。
3. 合並分E-R圖時,可能會出現哪些沖突?
- 屬性沖突:
-
屬性域沖突:
- 屬性值的類型;
- 取值范圍;
- 取值集合不同;
-
屬性取值單位沖突;
-
- 命名沖突:
- 同名異義:不同意義的對象在不同的局部應用中具有相同的名字。
- 異名同一:同一意義的對象在不同的局部應用中具有不同的名字。
- 結果沖突
- 同一對象在不同應用中具有不同的抽象;
- 同一實體在不同子系統的E-R圖中所包含的屬性個數和屬性排列次序不完全相同;
- 實體間的聯系在不同的E-R圖中為不同的類型。
4. 簡述數據庫的重組織和重構造的區別
- 數據庫的再組織是指按原設計要求重新安排存儲位置、回收垃圾、減少指針鏈6等,以提高系統性能。
- 數據庫的重構造則是指部分修改數據庫的模式和內模式,即修改原設計的邏輯和物理結構。數據庫的再組織是不修改數據的模式和內模式的。
5. 子模式含義
- 是數據庫用戶(包括應用程序員和最終用戶)能夠看見和使用的局部數據的邏輯結構和特征的描述,是數據庫用戶的數據視圖,是與某一應用有關的數據的邏輯表示。
就是外模式???
CH8
1. 存儲過程的作用,及使用方法?
-
作用(優點?):
- 運行效率高,它提供了在服務器之間快速執行SQL語句的有效途徑。
- 存儲過程降低了客戶機和服務器之間的通信量。
- 方便實施企業規則。
-
使用方法(???):
存儲過程的用戶接口:- 創建存儲過程
- 執行存儲過程
- 刪除存儲過程
2. 為什么要使用游標?
- SQL語言與主語言具有不同數據處理方式:
- SQL語言是面向集合的,一條SQL語句原則上可以產生或處理多條記錄。
- 主語言是面向記錄的,一組主變量一次只能存放一條記錄。
- 僅使用主變量並不能完全滿足SQL語句向應用程序輸出數據的要求
因此,嵌入式SQL引入了游標的概念,用來協調這兩種不同的處理方式。
- 使用游標的步驟:定義游標、打開游標、讀取記錄、關閉游標。
CH10
1. 事務的4個特性是什么?舉例說明其中的一個特性
- 原子性:事務是數據庫的邏輯工作單位,事務中包括的諸操作要么都做,要么都不做。//2PC協議及其恢復機制。
- 一致性:事務執行的結構必須是使數據庫從一個一致性狀態變到另一個一致性狀態。//2PL協議/時間印協議
- 隔離性:一個事務的執行不能被其他事務干擾。//可串行化調度及封鎖機制
- 持續性:指一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。//數據庫備份技術
事務是用戶定義的一個數據庫操作序列,這些操作要么全做、要么全不做,是一個不可分割的工作單位。
2. 故障類型有哪些?舉例說明
-
事務內部的故障:有的是可以通過事務程序本身發現的(如轉賬事務的例子),有的是非預期的。
恢復策略:由恢復子系統應利用日志文件撤消(UNDO)此事務已對數據庫進行的修改。
-
系統故障:指造成系統停止運轉的任何事件,使得系統要重新啟動。 //特定類型的硬件錯誤(如CPU故障)、操作系統故障、DBMS代碼錯誤、系統斷電...
- 發生系統故障時,事務未提交。
恢復策略:強行撤消(UNDO)所有未完成事務。 - 發生系統故障時,事務已提交,但緩沖區中的信息尚未完全寫回到磁盤上。
恢復策略:重做(REDO)所有已提交的事務。
- 發生系統故障時,事務未提交。
-
介質故障:稱為硬故障,指外存故障。//磁盤損壞、磁頭碰撞、操作系統的某種潛在錯誤、瞬時強磁場干擾...
- 恢復策略:
- 裝入數據庫發生介質故障前某個時刻的數據副本。(即重裝數據庫)
- 重做自此時始的所有成功事務,將這些事務已提交的結果重新記入數據庫。(即重做已完成的事務)
- 恢復策略:
-
計算機病毒:一種人為的故障或破壞,是一些惡作劇者研制的一種計算機程序,可以繁殖和傳播。
3. 基於檢查點故障恢復策略;日志文件概念
-
恢復策略:在檢查點之前提交的事務不需要Redo:當事務在一個檢查點之前提交,對數據庫所做的修改已寫入數據庫。
-
利用檢查點的恢復步驟:
- 從重新開始文件中找到最后一個檢查點記錄在日志文件中的地址,由該地址在日志文件中找到最后一個檢查點記錄。
- 由該檢查點記錄得到檢查點建立時刻所有正在執行的事務清單ACTIVE-LIST。
- 建立兩個事務隊列
- UNDO-LIST
- REDO-LIST
- 把ACTIVE-LIST暫時放入UNDO-LIST隊列,REDO隊列暫為空。
- 建立兩個事務隊列
- 從檢查點開始正向掃描日志文件,直到日志文件結束。
- 如有新開始的事務Ti,把Ti暫時放入UNDO-LIST隊列。
- 如有提交的事務Tj,把Tj從UNDO-LIST隊列移到REDO-LIST隊列。
- 對UNDO-LIST中的每個事務執行UNDO操作;對REDO-LIST中的每個事務執行REDO操作
-
日志文件:是用來記錄事務對數據庫的更新操作的文件
CH11
1. 什么是事務的串行調度?並發調度?
- 事務的串行調度:每個時刻只有一個事務運行,其他事務必須等到這個事務結束以后方能運行。
不能充分利用系統資源,發揮數據庫共享資源的特點
- 並發調度:
- 交叉並發方式:在單處理機系統中,事務的並行執行是這些並行事務的並行操作輪流交叉運行。
- 同時並發方式:多處理機系統中,每個處理機可以運行一個事務,多個處理機可以同時運行多個事務,實現多個事務真正的並行運行。
2. 如果不加以控制,事務的並發調度可能會產生什么問題?
會產生多個事務同時存取同一數據的情況。
可能會存取和存儲不正確的數據,破壞數據庫的一致性。
- 丟失修改
- 不可重復讀
- 讀“臟”數據
3. 簡述封鎖機制的工作原理。
- 封鎖就是事務T在對某個數據對象列如表、記錄等操作之前,先向系統發出請求,對其加鎖。加鎖后事務T就對該數據對象有了一定的控制,在事務T釋放它的鎖之前,其他的事務不能更新或讀取此數據對象。
- 基本的封鎖類型一兩種:排他鎖(X鎖)和共享鎖(S鎖)。
4. 死鎖預防、診斷;死鎖的判別
- 預防死鎖的方法:一次封鎖法、順序封鎖法
- 死鎖的診斷:超時法、事務等待圖法
三級封鎖協議:是指在一級封鎖協議的基礎上增加事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。
5. 沖突操作;事務優先圖;等價的串行調度
沖突操作是指不同的事務對同一個數據的讀寫操作和寫寫操作。
6. 2PL協議
- 兩段鎖協議:是指所有事務必須分兩個階段對數據項加鎖和解鎖。
在對任何數據進行讀、寫操作之前,首先要申請並獲得對該數據的封鎖;
在釋放一個封鎖之后,事務不再申請和獲得任何其他封鎖。