資訊處理 115 年資料庫應用考古題
題目為考試當年公告版本,實務標準請以現行規範為準。
隨著資安威脅與法規合規性(如ISO 27001)要求提升,資料庫稽核 (Database Audit)成為確保數據完整性的關鍵機制。假設現有用於記錄 該稽核數據之關聯式資料庫,其資料表及內容敘述如下: 稽核政策(政策編號, 政策名稱, 物件名稱, 物件類型, 稽核動作, 是否啟用, 建立者編號) 政策編號為PK;物件類型之內容值可為「TABLE」、「VIEW」、 「STORE PROCEDURE」、「FUNCTION」之英文;稽核動作之內容 值可為「SELECT」、「INSERT」、「UPDATE」、「DELETE」等指令。 稽核日誌(日誌編號, 政策編號, 操作時間, 操作類型) 日誌編號為PK;政策編號為FK,參考「稽核政策」表中的政策編號。 異常事件(事件編號, 日誌編號, 嚴重程度, 偵測時間, 事件描述, 是否已結案) 事件編號為PK;日誌編號為FK,參考「稽核日誌」資料表的日誌編 號;嚴重程度之內容值可為「高」、「中」、「低」;是否已結案之內容 值為「Y」或「N」。 稽核人員(稽核人員編號, 姓名, 所屬部門) 稽核人員編號為PK。 事件處理紀錄(處理編號, 事件編號, 稽核人員編號, 處理日期) 處理編號為PK;事件編號為FK,參考「異常事件」資料表中的事件 編號;稽核人員編號為FK,參考「稽核人員」資料表的稽核人員編號。 請回答下列問題,其中㈡至㈣請使用SQL 語法進行作答。 ㈠請透過上述關聯式綱目畫出實體關聯式模型(Entity-Relationship Model, ER Model)。(10 分) ㈡查詢各嚴重程度異常事件的統計資訊,列出嚴重程度、事件總數、已 結案數、未結案數、未結案比例,未結案比例四捨五入計算至小數點 後第2 位,依事件總數由高至低排序。(5 分) ㈢查詢每位稽核人員於2026 年的處理績效,列出稽核人員姓名、所屬部 門、處理事件總數、其中高嚴重程度事件數,只列出處理事件總數大 於5 件的稽核人員,依處理事件總數由高至低排序。(5 分) ㈣假設現新增一筆稽核政策資料,政策編號為「P2025001」,政策名稱為 「財務資料表異動稽核」,物件名稱為「Finance」,物件類型為 「TABLE」,稽核動作為「DELETE」,是否啟用為「Y」,建立者編號 為「U001」。請寫出對應的SQL 新增語法。(5 分)
某機構資料庫有以下兩張E 與C 資料表,並存在其關聯: E(SID, CID, Grade):共60000 筆資料,每個區塊(Block)存50 筆資料。 C(CID, Name, Credit):共600 筆資料,每個區塊(Block)存30 筆資料。 假設該機構系統可用的緩衝區(Buffer)M 共22 頁,並執行下面SQL 語 法: SELECT E.SID, C.Name, E.Grade FROM E JOIN C ON E.CID = C.CID 目前已知關聯式資料庫中,常見的Join 演算法有三種,即Simple Nested Loop Join (SNLJ)、Block Nested Loop Join (BNLJ)與Hash Join,其I/O 成 本分別計算如下: Join 演算法 I/O 成本公式 說明 SNLJ B(R) + |R| × B(S) 對R 每一筆Tuple,掃描整個S BNLJ B(R) + ⌈B(R)/(M-2)⌉× B(S) 以Block 為單位分批載入R,每批掃描一次S;M-2 頁給外層,1 頁給內層,1 頁給輸出 Hash Join 3 × (B(R) + B(S)) 分割階段讀寫各一次,探測階段再讀一次 演算法內符號說明如下:B(R)代表資料表R 的區塊(Block)數,也就是 以R 作為JOIN 運算的驅動表(Driving Table / Outer Table);|R|代表資料 表R 的資料筆數;M 代表可用緩衝區(Buffer)頁數;S 為要計算的資料 表。 請回答下面問題,並計算下列各演算法的I/O 成本(需列計算過程): ㈠使用SNLJ 法,以資料表E 為驅動表。(5 分) ㈡使用BNLJ 法,以資料表C 為驅動表。(5 分) ㈢使用Hash Join 法(假設分割後各Partition 可完整放入記憶體)。(5 分) ㈣綜合比較上述三種結果,在本題情境下應選擇那種演算法?說明原 因。(10 分)
假設資料庫中有三個資料項(Data Items):A、B、C,其三者初始值皆為 100,當有三筆交易T1、T2 與T3 同時進入系統,各自交易的預期操作順 序如下所示: T1:read(A) →write(A) →read(B) →write(B) T2:read(B) →write(B) →read(C) →write(C) T3:read(C) →read(A) →write(A) 假設排程器(Scheduler)採用嚴格兩階段鎖定協定(Strict 2PL):也就是 「在增長階段(Growing Phase),交易可以取得鎖定,但不能釋放任何鎖 定」以及「在收縮階段(Shrinking Phase),交易持有的所有互斥鎖X(X- lock)必須持續保留,直到交易提交(Commit)或中斷(Abort)後才能一 次釋放」。所有操作皆遵循著「具備鎖定升級:即若交易已持有共享鎖S, 在執行write 前必須升級為互斥鎖X」。考慮排程器依照時間序列t1 至t9 收到下列操作請求: 時間 分配請求與操作 時間 分配請求與操作 t1: T1 請求read(A) t6: T1 請求read(B) t2: T2 請求read(B) t7: T2 請求read(C) t3: T3 請求read(C) t8: T3 請求read(A) t4: T1 請求write(A) t9: T1 試圖提交(commit) t5: T2 請求write(B) 請回答以下問題: ㈠詳細分析從t1 至t9 的執行過程中,各個交易的鎖定狀態變化,並且標 記該時間點交易是否會進入阻塞(Blocked/Waiting)狀態?(書寫時, 若某個資料項要使用S 鎖請標註Lock-S(資料項),若需要X 鎖則書寫 Lock-X(資料項)。)(10 分) ㈡此排程於t9 之後的時間,是否有機會形成死結(Deadlock)?若有, 請指出是那些交易互相等待。(10 分) ㈢若排程能順利執行或經由處理後結束,請說明各交易的鎖定點(Lock Point)分別位於那一個時間點。(5 分)
BASE 原則(BASE Properties)與CAP 定理(CAP Theorem)常見於在 分散式系統(Distributed Systems)與分散式資料庫的架構設計中,請回 答以下問題: ㈠解釋BASE 原則。(10 分) ㈡解釋CAP 定理。(10 分) ㈢在分散式資料庫中,CAP 是一項限制,為何一個分散式資料庫不可能 同時滿足CAP?(5 分)