115 一般警察特考三等 警察資訊管理人員類別 資料庫應用 考古題詳解

115 年・一般警察特考・三等・警察資訊管理人員類別
試題代碼 資料庫應用

第 一 題25 分

闡述下列資料庫專有名詞的意涵:

(一) 分散式資料庫(5 分)

(二) ACID(Atomicity, Consistency, Isolation, Durability)(10 分)

(三) 資料倉儲(Data Warehouse)(5 分)

(四) 線上分析處理(OLAP)(5 分)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題測驗資料庫系統的四組基本概念:資料如何跨節點管理、交易如何維持可靠性、分析資料如何集中整理,以及如何對資料進行多維度分析。作答時應先給出明確定義,再說明主要特性與用途。

解題方法

依名詞分別掌握「定義+關鍵特性+典型用途」:

  1. 分散式資料庫:說明資料分布在多個節點,但由整體資料庫系統統一管理。
  2. ACID:逐一解釋四項交易性質,並搭配簡短例子。
  3. 資料倉儲:說明其面向分析的資料集合及主要特性。
  4. OLAP:說明其以多維度方式分析資料,並舉常見操作。

(一)分散式資料庫(5 分)

分散式資料庫是由多個透過網路連接的資料庫節點共同組成,資料可能分散儲存在不同地點或電腦上,但整體仍由分散式資料庫管理系統協調,使使用者能以一致的方式存取資料。

常見資料分布方式包括:

  • 資料分割(fragmentation):將資料表依列、欄或其他規則切分,分別存放於不同節點。
  • 資料複製(replication):將同一份資料複製至多個節點,以提高可用性或讀取效率。

其設計通常追求位置透明性、資料共享、可擴充性與容錯能力;但因資料分布於多個節點,也須處理網路延遲、節點故障,以及跨節點交易的一致性問題。

(二)ACID(10 分)

ACID 是確保資料庫交易可靠執行的四項性質:

  1. 原子性(Atomicity) 一項交易內的操作視為不可分割的整體:全部成功,或全部失敗並回復,不留下只完成一部分的狀態。 例如轉帳時,扣款與入帳必須一併完成;若入帳失敗,扣款也須回復。

  2. 一致性(Consistency) 交易執行前後,資料庫都必須符合預先定義的完整性限制與業務規則。交易可以改變資料,但不能使資料違反規則。 例如帳戶餘額不得低於規定下限,或外鍵必須參照存在的資料。

  3. 隔離性(Isolation) 多筆交易同時執行時,彼此不應產生不當干擾;其效果應符合某種序列化執行的結果。實際隔離程度依資料庫的隔離等級而異,較低等級可能容許髒讀、不可重複讀或幻讀等現象。 例如兩筆交易同時更新同一帳戶時,資料庫須避免更新互相覆蓋而造成錯誤餘額。

  4. 持久性(Durability) 交易一旦成功提交,其結果即應持續保存;即使之後發生當機,系統恢復後仍能保留已提交的結果。資料庫通常透過交易日誌、檢查點及復原機制達成此性質。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 二 題20 分

一位學生可以選修多門課程,且至少必須選修一門課程;一門課程可以被多位學生選修,但也有可能沒有學生選修。請依此敘述繪製實體關係圖(Entity-Relationship Diagram)。另外針對學生資料與課程資料,也各列出 4 個屬性並說明之。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查實體關係圖(Entity-Relationship Diagram, ERD)中的基數(cardinality)與參與限制(participation constraint):

  • 一位學生必須選修至少一門課程,因此學生端的最小參與數為 1。
  • 一位學生可以選修多門課程,因此學生端的最大參與數為多。
  • 一門課程可以有多位學生選修,也可能沒有學生選修,因此課程端的最小參與數為 0,最大參與數為多。

因此,「選修」關係是多對多(M:N);學生對選修關係為全參與,課程對選修關係為部分參與。

解題方法

先分辨兩種實體及其關係:

  • 實體:學生、課程。
  • 關係:選修。

再將敘述中的「至少一門」與「可能沒有」轉成最小基數,將「多門」與「多位」轉成最大基數:

  • 學生:(1,N)(1, N)
  • 課程:(0,N)(0, N)

ERD 可用最小-最大基數表示如下:

學生 (1, N) ───── 選修 ───── (0, N) 課程

這表示每位學生至少參與一次選修關係;每門課程可以完全沒有學生選修,也可以有多位學生選修。若採用烏鴉腳表示法,兩端都標示「多」,學生端以實線表示必須參與,課程端以圓圈表示可以不參與。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 三 題20 分

在資料庫交易(transactions)中,隔離性(isolation)是指當多個交易並行執行時,一個交易不應該干擾另一個交易。如果隔離性不足,就可能會發生數種並行處理問題(isolation issues),包括 Dirty Read(髒讀)、Non-Repeatable Read(不可重複讀)、Lost Update(更新遺失)、Phantom Read(幻讀)。請闡述 Dirty Read 與 Lost Update 可能發生的情境。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查交易隔離性不足時的兩種並行控制問題。交易(Transaction)是一組需視為整體執行的資料庫操作;隔離性要求並行交易的執行效果,應避免彼此不當干擾。

  • Dirty Read(髒讀):某交易讀取了另一交易尚未提交(未 COMMIT)的資料。若寫入資料的交易之後回復(ROLLBACK),讀取者取得的就是未正式成立的資料。
  • Lost Update(更新遺失):兩個交易讀取同一筆資料後,各自計算並寫回新值;後寫入的結果覆蓋先前交易的更新,使其中一筆更新未反映在資料中。

解題方法

回答情境題時,可用兩筆交易按時間先後列出操作,指出關鍵的讀寫順序,再說明錯誤結果如何產生。

一、Dirty Read 情境

假設帳戶餘額原為 1,000 元:

順序交易 T1交易 T2
1將餘額改為 800 元,尚未提交
2讀取餘額,讀得 800 元
3因操作失敗而回復,餘額恢復為 1,000 元
4依據先前讀得的 800 元繼續計算或處理
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 四 題20 分

下列表格有 5 筆資料,其屬性 (StudentID,CourseID)(StudentID, CourseID) 為主鍵(Primary Key)。假設有下列規則:一位學生可以修習多門課程;一門課程可以有多位學生修習;每一門課程只由一位教師授課;每一位教師只教授一門課程。請回答下列問題:(每小題 10 分,共 20 分)

StudentIDCourseIDInstructor
S001C101Dr. Chen
S002C101Dr. Chen
S003C102Dr. Lin
S004C102Dr. Lin
S005C103Dr. Wang

(一) 請說明為何此表不符合 BCNF 正規化原則?

(二) 請運用 BCNF 正規化原則,將此表格拆解成 2 個表格。

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查:

  1. 函數相依(Functional Dependency, FD)
  2. 候選鍵與超鍵
  3. BCNF(Boyce-Codd Normal Form)
  4. 依函數相依進行關聯分解

原表格為:

R(StudentID,CourseID,Instructor)R(StudentID, CourseID, Instructor)

題目給定主鍵為:

(StudentID,CourseID)(StudentID, CourseID)

依題意可得到兩個函數相依:

  • 每一門課程只由一位教師授課:
CourseID→InstructorCourseID \rightarrow Instructor
  • 每一位教師只教授一門課程:
Instructor→CourseIDInstructor \rightarrow CourseID

解題方法

BCNF 的判定原則是:

對於關係中的每一個非平凡函數相依 X→YX \rightarrow Y,決定因素 XX 必須是超鍵。

也就是說,若 X→YX \rightarrow Y 成立,則 XX 必須能唯一決定整筆資料。

一、判斷原表是否符合 BCNF

原表的主鍵為:

(StudentID,CourseID)(StudentID, CourseID)

因此,單獨的 CourseIDCourseID 並不是超鍵,因為同一門課程可以有多位學生修習。例如:

StudentIDCourseIDInstructor
S001C101Dr. Chen
S002C101Dr. Chen

CourseID=C101CourseID=C101 對應到多位學生,因此單獨的 CourseIDCourseID 無法唯一識別一筆資料。

但是依題意:

CourseID→InstructorCourseID \rightarrow Instructor

所以存在一個函數相依,其決定因素 CourseIDCourseID 不是超鍵,違反 BCNF。

同理,InstructorInstructor 也不是原表的超鍵,但依題意:

Instructor→CourseIDInstructor \rightarrow CourseID

例如 Dr. Chen 只教授 C101,故此函數相依也成立;然而 InstructorInstructor 單獨無法唯一識別學生修課資料,因此同樣違反 BCNF。

因此,原表不符合 BCNF,主要原因是:

CourseID→InstructorCourseID \rightarrow Instructor

與

Instructor→CourseIDInstructor \rightarrow CourseID

的左側決定因素都不是原關係的超鍵。

二、依 BCNF 分解成兩個表格

將描述「課程與教師對應關係」的資料獨立拆出:

表一:CourseInstructor

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 五 題15 分

有一 Orders 資料表,內容如下:

OrderIDCustomerNameProductCategoryQuantityTotalAmount
1AliceLaptop11200.00
2BobLaptop22400.00
3CathyPhone1800.00
4DavidPhone32400.00
5EvaTablet1500.00
6FrankTablet21000.00
7GraceLaptop11200.00
8HelenPhone21600.00
9IanKeyboard5500.00
10JackKeyboard3300.00

下列 SQL 指令是針對上表的資料處理,請說明其功能或目的為何?執行後的結果集(result set)也請列出。

SELECT
  ProductCategory,
  SUM(TotalAmount) AS TotalSales
FROM Orders
GROUP BY ProductCategory
HAVING SUM(TotalAmount) > 3000;

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 SQL 的彙總查詢,重點包括:

  • GROUP BY:依 ProductCategory 將資料分組。
  • SUM(TotalAmount):計算每一類商品的銷售金額總和。
  • AS TotalSales:將彙總結果命名為 TotalSales。
  • HAVING:對分組及彙總後的結果設定條件。
  • WHERE 與 HAVING 的差異:WHERE 先篩選個別資料列;HAVING 則是在分組及彙總後篩選群組。

解題方法

先依 ProductCategory 分組,再計算各組的 TotalAmount 總和:

  • Laptop:1200+2400+1200=48001200+2400+1200=4800
  • Phone:800+2400+1600=4800800+2400+1600=4800
  • Tablet:500+1000=1500500+1000=1500
  • Keyboard:500+300=800500+300=800

接著套用條件:

SUM(TotalAmount)>3000\text{SUM(TotalAmount)} > 3000

只有銷售總額大於 3000 的商品類別能保留,因此 Laptop 與 Phone 會出現在結果集中。

SQL 指令功能說明

SELECT ProductCategory,
 SUM(TotalAmount) AS TotalSales
FROM Orders
GROUP BY ProductCategory
HAVING SUM(TotalAmount) > 3000;

其功能是:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

其他考古題