高普考題庫
115 年 115年公務人員高等考試三級考試暨普通考試

資料庫應用

本卷皆為申論題,點「看答案與解析」查看擬答。

申論 1隨著資安威脅與法規合規性(如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-RelationshipModel, ER Model)。(10 分)㈡查詢各嚴重程度異常事件的統計資訊,列出嚴重程度、事件總數、已結案數、未結案數、未結案比例,未結案比例四捨五入計算至小數點後第2 位,依事件總數由高至低排序。(5 分)㈢查詢每位稽核人員於2026 年的處理績效,列出稽核人員姓名、所屬部門、處理事件總數、其中高嚴重程度事件數,只列出處理事件總數大於5 件的稽核人員,依處理事件總數由高至低排序。(5 分)㈣假設現新增一筆稽核政策資料,政策編號為「P2025001」,政策名稱為「財務資料表異動稽核」,物件名稱為「Finance」,物件類型為「TABLE」,稽核動作為「DELETE」,是否啟用為「Y」,建立者編號為「U001」。請寫出對應的SQL 新增語法。(5 分)
申論 2某機構資料庫有以下兩張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.GradeFROM E JOIN C ON E.CID = C.CID目前已知關聯式資料庫中,常見的Join 演算法有三種,即Simple NestedLoop Join (SNLJ)、Block Nested Loop Join (BNLJ)與Hash Join,其I/O 成本分別計算如下:Join 演算法I/O 成本公式說明SNLJB(R) + |R| × B(S)對R 每一筆Tuple,掃描整個S以Block 為單位分批載入R,每批掃描一次S;M-2BNLJB(R) + ⌈B(R)/(M-2)⌉× B(S)頁給外層,1 頁給內層,1 頁給輸出Hash Join3 × (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 分)
申論 3假設資料庫中有三個資料項(Data Items):A、B、C,其三者初始值皆為100,當有三筆交易T、T 與T 同時進入系統,各自交易的預期操作順序如下所示:T:read(A) →write(A) →read(B) →write(B)T:read(B) →write(B) →read(C) →write(C)T:read(C) →read(A) →write(A)假設排程器(Scheduler)採用嚴格兩階段鎖定協定(Strict 2PL):也就是「在增長階段(Growing Phase),交易可以取得鎖定,但不能釋放任何鎖定」以及「在收縮階段(Shrinking Phase),交易持有的所有互斥鎖X(X-lock)必須持續保留,直到交易提交(Commit)或中斷(Abort)後才能一次釋放」。所有操作皆遵循著「具備鎖定升級:即若交易已持有共享鎖S,在執行write 前必須升級為互斥鎖X」。考慮排程器依照時間序列t 至t收到下列操作請求:時間分配請求與操作時間分配請求與操作t:T 請求read(A)t:T 請求read(B)t:T 請求read(B)t:T 請求read(C)t:T 請求read(C)t:T 請求read(A)t:T 請求write(A)t:T 試圖提交(commit)t:T 請求write(B)請回答以下問題:㈠詳細分析從t 至t 的執行過程中,各個交易的鎖定狀態變化,並且標記該時間點交易是否會進入阻塞(Blocked/Waiting)狀態?(書寫時,若某個資料項要使用S 鎖請標註Lock-S(資料項),若需要X 鎖則書寫Lock-X(資料項)。)(10 分)㈡此排程於t 之後的時間,是否有機會形成死結(Deadlock)?若有,請指出是那些交易互相等待。(10 分)㈢若排程能順利執行或經由處理後結束,請說明各交易的鎖定點(LockPoint)分別位於那一個時間點。(5 分)
申論 4BASE 原則(BASE Properties)與CAP 定理(CAP Theorem)常見於在分散式系統(Distributed Systems)與分散式資料庫的架構設計中,請回答以下問題:㈠解釋BASE 原則。(10 分)㈡解釋CAP 定理。(10 分)㈢在分散式資料庫中,CAP 是一項限制,為何一個分散式資料庫不可能同時滿足CAP?(5 分)