115 高普考高考三級 資訊處理 資料庫應用 考古題詳解
第 一 題25 分
隨著資安威脅與法規合規性(如 ISO 27001)要求提升,資料庫稽核(Database Audit)成為確保數據完整性的關鍵機制。假設現有用於記錄該稽核數據之關聯式資料庫,其資料表及內容敘述如下:
- 稽核政策(政策編號、政策名稱、物件名稱、物件類型、稽核動作、是否啟用、建立者編號)
- 政策編號為 PK。
- 物件類型之內容值可為「TABLE」、「VIEW」、「STORE PROCEDURE」、「FUNCTION」之英文。
- 稽核動作之內容值可為「SELECT」、「INSERT」、「UPDATE」、「DELETE」等指令。
- 稽核日誌(日誌編號、政策編號、操作時間、操作類型)
- 日誌編號為 PK。
- 政策編號為 FK,參考「稽核政策」表中的政策編號。
- 異常事件(事件編號、日誌編號、嚴重程度、偵測時間、事件描述、是否已結案)
- 事件編號為 PK。
- 日誌編號為 FK,參考「稽核日誌」資料表中的日誌編號。
- 嚴重程度之內容值可為「高」、「中」、「低」。
- 是否已結案之內容值為「Y」或「N」。
- 稽核人員(稽核人員編號、姓名、所屬部門)
- 稽核人員編號為 PK。
- 事件處理紀錄(處理編號、事件編號、稽核人員編號、處理日期)
- 處理編號為 PK。
- 事件編號為 FK,參考「異常事件」資料表中的事件編號。
- 稽核人員編號為 FK,參考「稽核人員」資料表的稽核人員編號。
請回答下列問題,其中第(2)至第(4)題請使用 SQL 語法進行作答。
(1)請透過上述關聯式綱目畫出實體關聯式模型(Entity-Relationship Model, ER Model)。(10 分)
(2)查詢各嚴重程度異常事件的統計資訊,列出嚴重程度、事件總數、已結案數、未結案數、未結案比例。未結案比例四捨五入計算至小數點後第 2 位,依事件總數由高至低排序。(5 分)
(3)查詢每位稽核人員於 2026 年的處理績效,列出稽核人員姓名、所屬部門、處理事件總數、其中高嚴重程度事件數,只列出處理事件總數大於 5 件的稽核人員,依處理事件總數由高至低排序。(5 分)
(4)假設現新增一筆稽核政策資料,政策編號為「P2025001」,政策名稱為「財務資料表異動稽核」,物件名稱為「Finance」,物件類型為「TABLE」,稽核動作為「DELETE」,是否啟用為「Y」,建立者編號為「U001」。請寫出對應的 SQL 新增語法。(5 分)
登入後即可作答並保存紀錄。
核心觀念
本題涵蓋 ER 模型中的主鍵、外鍵與關係基數,以及 SQL 的分組彙總、條件彙總、日期範圍篩選與新增資料。
- 主鍵(PK):唯一識別資料表中的每筆資料。
- 外鍵(FK):參照另一資料表的主鍵,用來維持參照完整性。
- 一對多關係:一筆父表資料可對應多筆子表資料;子表每筆資料透過外鍵參照父表。
- 分組統計:以
GROUP BY分組,再用COUNT、SUM等彙總函數計算。 - 條件彙總:以
CASE WHEN搭配彙總函數,計算符合條件的筆數。 - 年度篩選:使用年度起日與次年度起日形成左閉右開的日期區間。
解題方法
(1)ER Model
依外鍵找出資料表間的關係:稽核日誌參照稽核政策,異常事件參照稽核日誌,事件處理紀錄則分別參照異常事件與稽核人員。
erDiagram
稽核政策 ||--o{ 稽核日誌 : "政策編號"
稽核日誌 ||--o{ 異常事件 : "日誌編號"
異常事件 ||--o{ 事件處理紀錄 : "事件編號"
稽核人員 ||--o{ 事件處理紀錄 : "稽核人員編號"
稽核政策 {
string 政策編號 PK
string 政策名稱
string 物件名稱
string 物件類型
string 稽核動作
string 是否啟用
string 建立者編號
}
稽核日誌 {
string 日誌編號 PK
string 政策編號 FK
datetime 操作時間
string 操作類型
}
異常事件 {
string 事件編號 PK
string 日誌編號 FK
string 嚴重程度
datetime 偵測時間
string 事件描述
string 是否已結案
}
稽核人員 {
string 稽核人員編號 PK
string 姓名
string 所屬部門
}
事件處理紀錄 {
string 處理編號 PK
string 事件編號 FK
string 稽核人員編號 FK
date 處理日期
}
|| 表示一端恰有一筆,o{ 表示另一端可有零筆或多筆。事件處理紀錄是連結異常事件與稽核人員的關聯資料表,因此一筆異常事件可有多筆處理紀錄,一位稽核人員也可有多筆處理紀錄。
(2)各嚴重程度的事件統計
先依嚴重程度分組,再以條件計數取得已結案數與未結案數。未結案比例為「未結案數 ÷ 事件總數」,最後四捨五入至小數點後兩位。
第 二 題25 分
某機構資料庫有以下兩張 E 與 C 資料表,並存在其關聯:
- E(SID、CID、Grade):共 60000 筆資料,每個區塊(Block)存 50 筆資料。
- C(CID、Name、Credit):共 600 筆資料,每個區塊(Block)存 30 筆資料。
假設該機構系統可用的緩衝區(Buffer) 共 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 成本分別計算如下:
- SNLJ:
對 每一筆 Tuple,掃描整個 。 - BNLJ:
以 Block 為單位分批載入 ,每批掃描一次 ; 頁給外層,1 頁給內層,1 頁給輸出。 - Hash Join:
分割階段讀寫各一次,探測階段再讀一次。
演算法內符號說明如下:
- 代表資料表 的區塊(Block)數,也就是以 作為 JOIN 運算的驅動表(Driving Table / Outer Table)。
- 代表資料表 的資料筆數。
- 代表可用緩衝區(Buffer)頁數。
- 為要計算的資料表。
請回答下面問題,並計算下列各演算法的 I/O 成本(需列計算過程):
(1)使用 SNLJ 法,以資料表 E 為驅動表。(5 分)
(2)使用 BNLJ 法,以資料表 C 為驅動表。(5 分)
(3)使用 Hash Join 法(假設分割後各 Partition 可完整放入記憶體)。(5 分)
(4)綜合比較上述三種結果,在本題情境下應選擇哪種演算法?說明原因。(10 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查巢狀迴圈連接與雜湊連接的 I/O 成本。先由資料筆數及每個區塊可存放的筆數,求出兩表的區塊數:
緩衝區頁數為 ,因此 BNLJ 每批可載入外層資料的頁數為 。
解題方法與計算
(1)SNLJ,以 E 為驅動表
SNLJ 對外層每一筆資料,掃描一次內層資料表。本題 、,故:
(2)BNLJ,以 C 為驅動表
外層為 ,每批可載入 頁; 本身也有 頁,因此只需一批。內層 需掃描一次:
(3)Hash Join
依題目給定公式,分割階段讀寫各一次,探測階段再讀取一次;且題目假設分割後各 Partition 可完整放入記憶體:
第 三 題25 分
假設資料庫中有三個資料項(Data Items):、、,其三者初始值皆為 100。當有三筆交易 、 與 同時進入系統,各自交易的預期操作順序如下所示:
- :
- :
- :
假設排程器(Scheduler)採用嚴格兩階段鎖定協定(Strict 2PL):
- 在增長階段(Growing Phase),交易可以取得鎖定,但不能釋放任何鎖定。
- 在收縮階段(Shrinking Phase),交易持有的所有互斥鎖 X(X-lock)必須持續保留,直到交易提交(Commit)或中斷(Abort)後才能一次釋放。
- 所有操作皆遵循著「具備鎖定升級」:即若交易已持有共享鎖 S,在執行 write 前必須升級為互斥鎖 X。
考慮排程器依照時間序列 至 收到下列操作請求:
- : 請求
- : 請求
- : 請求
- : 請求
- : 請求
- : 請求
- : 請求
- : 請求
- : 試圖提交(commit)
請回答以下問題:
(1)詳細分析從 至 的執行過程中,各個交易的鎖定狀態變化,並且標記該時間點交易是否會進入阻塞(Blocked/Waiting)狀態。(書寫時,若某個資料項要使用 S 鎖請標註 Lock-S(資料項);若需要 X 鎖則書寫 Lock-X(資料項)。)(10 分)
(2)此排程於 之後的時間,是否有機會形成死結(Deadlock)?若有,請指出是哪些交易互相等待。(10 分)
(3)若排程能順利執行或經由處理後結束,請說明各交易的鎖定點(Lock Point)分別位於哪一個時間點。(5 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查嚴格兩階段鎖定(Strict 2PL)、共享鎖與互斥鎖的相容性、鎖定升級、阻塞與死結,以及鎖定點(Lock Point)。
read(X)前須持有資料項 的共享鎖(S-lock)。write(X)前須持有資料項 的互斥鎖(X-lock)。若已持有 S-lock,須先升級為 X-lock。- 同一資料項的 S-lock 可由多筆交易同時持有;X-lock 與任何其他交易持有的 S-lock 或 X-lock 都不相容。
- 嚴格 2PL 規定,交易取得鎖後不得在提交或中斷前釋放;本題中特別要求 X-lock 必須保留至交易結束。
- 鎖定點是交易取得最後一把鎖的時間點。
解題方法
依題目給定的 至 順序逐項處理:先判斷該操作需要哪種鎖,再檢查其他交易是否持有不相容的鎖。若請求被拒絕,交易進入等待;等待中的交易尚未取得該鎖,後續操作也無法執行。
(1) 至 的鎖定狀態
| 時間 | 請求與鎖定處理 | 鎖定狀態變化 | 是否阻塞 |
|---|---|---|---|
執行 ,取得 Lock-S(A) | 持有 | 否 | |
執行 ,取得 Lock-S(B) | 持有 | 否 | |
執行 ,取得 Lock-S(C) | 持有 | 否 | |
執行 ,將 升級為 Lock-X(A) | 持有 | 否; 上沒有其他交易的鎖 | |
執行 ,將 升級為 Lock-X(B) | 持有 | 否; 上沒有其他交易的鎖 | |
請求 ,須取得 Lock-S(B) | 持有 ,與 的 S-lock 不相容; 等待 | 是, 阻塞 | |
請求 ,須取得 Lock-S(C) | 持有 ,S-lock 相容; 取得 | 否 | |
請求 ,須取得 Lock-S(A) | 持有 ,與 的 S-lock 不相容; 等待 | 是, 阻塞 |
第 四 題25 分
BASE 原則(BASE Properties)與 CAP 定理(CAP Theorem)常見於在分散式系統(Distributed Systems)與分散式資料庫的架構設計中,請回答以下問題:
(1)解釋 BASE 原則。(10 分)
(2)解釋 CAP 定理。(10 分)
(3)在分散式資料庫中,CAP 是一項限制,為何一個分散式資料庫不可能同時滿足 CAP?(5 分)
登入後即可作答並保存紀錄。
(一)BASE 原則
核心觀念
BASE 是分散式資料庫常用的設計取向,名稱來自三項特性:
- Basically Available(基本可用):系統發生部分故障或節點間通訊受阻時,仍盡力提供服務;部分請求可能收到延遲、降級或不完整的回應。
- Soft State(軟狀態):資料狀態可能因節點間複寫尚未完成而暫時不一致,且狀態會隨背景同步而改變。
- Eventual Consistency(最終一致性):若沒有新的更新,且節點間通訊最終恢復,資料經過同步後,各副本終將收斂為一致的狀態。
解題方法
回答 BASE 時,依序說明「服務可用性」、「複本暫時不一致」與「同步後收斂」三層意義,再指出這是以較寬鬆的一致性換取分散式系統的可用性與容錯能力。
BASE 並不代表資料永遠不一致,也不表示系統放棄一致性;它容許短暫不一致,並以後續同步達成最終一致。
解題技巧
記憶順序可掌握為:可用、狀態可暫變、最後一致。常見失分點是把「最終一致性」誤寫成「每次讀取都立即取得最新資料」。
(二)CAP 定理
核心觀念
CAP 定理討論分散式資料系統的三項性質:
- Consistency(一致性):每次讀取都能取得符合一致性規則的資料;在 CAP 的典型說明中,通常指線性一致性(linearizability),即操作看起來像在單一副本上依時間順序完成。
- Availability(可用性):每個送到未故障節點的請求,都能在有限時間內收到成功回應。
- Partition tolerance(分割容錯性):當網路分割使節點彼此無法通訊時,系統仍能繼續運作。