113 一般警察特考三等 警察資訊管理人員 資料庫應用 考古題詳解
第 一 題15 分
闡述資料庫管理系統(Database Management System)的功能,另外舉出三種常用的資料庫管理系統。
登入後即可作答並保存紀錄。
核心觀念
本題考查資料庫管理系統(Database Management System, DBMS)的定義與主要功能,以及常見 DBMS 的辨識。DBMS 是介於資料庫與使用者或應用程式之間的軟體,負責定義、建立、操作及管理資料庫,並提供一致、安全且有效率的資料存取方式。
解題方法
作答時可先用一句話說明 DBMS 的角色,再依「資料定義與操作、資料管理、安全與可靠性、共享與維護」整理功能。最後列出三種常用的 DBMS,並以名稱明確作答。
DBMS 的主要功能
- 資料定義與結構管理:提供資料定義語言(DDL),用來建立或修改資料庫、資料表、欄位、索引及視圖等結構。
- 資料存取與操作:提供資料查詢語言及相關操作功能,讓使用者或應用程式新增、查詢、修改與刪除資料。
- 資料儲存與檔案管理:管理資料在儲存媒體中的配置、存取方式、索引及緩衝區等,提升資料存取效率。
- 完整性管理:設定並檢查資料型別、主鍵、外鍵、唯一性及其他限制條件,以維持資料正確性與一致性。
- 安全與授權管理:管理使用者、角色及存取權限,限制未授權者讀取或修改資料。
- 交易與並行控制:協調多位使用者同時存取資料,並透過交易管理維持資料的一致性;
第 二 題15 分
請闡述分散式資料庫與集中式資料庫的特點與各自的優缺點。
登入後即可作答並保存紀錄。
核心觀念
本題考查資料庫的部署與資料配置方式。集中式資料庫將資料庫集中存放、管理於單一中心;分散式資料庫則將資料分布於多個透過網路連接的場所或節點,並由分散式資料庫管理系統協調存取,使使用者能以整體資料庫的方式查詢與操作。
分散式資料庫可依資料配置分為:
- 資料複製(replication):同一資料的副本存放在多個節點,可提升讀取效率與可用性,但需維持副本一致。
- 資料分割(fragmentation):依列(水平分割)、欄(垂直分割)或兩者組合,將資料分置於不同節點。
- 混合配置:同時採用分割與複製。
判斷分散式資料庫是否對使用者透明,常看位置透明、分割透明及複製透明:使用者不必知道資料在哪個節點、如何分割,或存取的是哪一份副本。
解題方法
作答時先界定兩種架構的資料存放與控制方式,再依管理、效能、可靠性、擴充性、一致性與成本等面向逐項比較。優缺點須寫出原因,例如分散式架構能就近存取資料,但跨節點交易與一致性管理較複雜;集中式架構管理較簡單,但中心故障會影響整體服務。
集中式資料庫
**特點:**資料集中存放於單一伺服器或資料中心,由中央資料庫管理系統統一處理儲存、權限、備份與交易。各使用者透過網路連線至中心進行操作。
優點:
- **管理與維護簡單:**資料、權限、備份及版本集中管理,較容易制定一致的作業規範。
- **一致性較容易維持:**資料更新由中央系統處理,無須跨多個節點同步副本。
- **安全與稽核較集中:**存取控制及監控可集中規劃與執行。
- **初期建置較單純:**不必先處理跨站點資料配置、分散式交易與同步問題。
缺點:
- **單點故障風險:**中心伺服器或網路中斷,可能使多數使用者無法存取資料。
- **效能瓶頸:**大量請求集中至同一中心,可能造成處理負載與網路流量過高。
- **遠端存取延遲:**使用者與資料中心距離較遠時,查詢及更新需經網路傳輸,反應時間可能增加。
- **擴充受限:**負載增加時,若主要依賴提升中央主機能力,擴充成本可能較高。
分散式資料庫
第 三 題15 分
請解釋下列資料庫領域之專有名詞:
(一) 複合屬性(Composite Attribute)
(二) 髒讀(Dirty Read)
(三) 幻讀(Phantom Read)
登入後即可作答並保存紀錄。
核心觀念
本題考查資料庫資料模型中的屬性分類,以及交易並行控制中的讀取異常。複合屬性屬於實體關係模型(ER Model)的概念;髒讀與幻讀則是多個交易同時執行時可能發生的問題。
解題方法
(一)複合屬性(Composite Attribute)
複合屬性是指一個屬性可以再分解為數個具有意義的子屬性。以「地址」為例,可拆成「縣市」、「行政區」、「路名」與「門牌號碼」;「姓名」也可依需求拆成「姓」與「名」。
在 ER 模型中,若應用系統需要個別查詢或處理這些組成部分,便可將其建模為複合屬性。相對地,若屬性不能再依該系統需求有意義地拆分,通常稱為簡單屬性。
(二)髒讀(Dirty Read)
髒讀是指一個交易讀取了另一個尚未提交交易所寫入的資料。若寫入資料的交易之後回復(Rollback),讀取該資料的交易便曾讀到一個從未正式提交的值。
例:交易 將帳戶餘額由 1,000 元改成 800 元,但尚未提交;此時交易 讀到 800 元。若 隨後回復,資料庫餘額恢復為 1,000 元,則 讀到的 800 元就是髒資料。
(三)幻讀(Phantom Read)
第 四 題15 分
闡述何謂預存程序(Store Procedure)與觸發程序(Trigger),以及敘述它們各自的優點?
登入後即可作答並保存紀錄。
核心觀念
本題考查資料庫伺服器端的兩種程式物件:預存程序(Stored Procedure)與觸發程序(Trigger)。兩者都可將程式邏輯放在資料庫中執行,但呼叫方式不同:
- 預存程序:預先編寫並儲存在資料庫中的程式,應用程式或使用者可明確呼叫執行,並可傳入參數、回傳結果。
- 觸發程序:與資料表或檢視表等資料庫物件相關聯的程式;當指定事件發生時,例如資料新增、修改或刪除,資料庫會依設定自動執行。
解題方法
作答時可先定義兩者,再從「執行方式」與「優點」分別說明。最關鍵的區別是:預存程序由外部明確呼叫;觸發程序由資料庫事件自動啟動。
預存程序:定義與優點
預存程序是由 SQL 陳述式及程序控制語法組成,經建立後儲存在資料庫中的程式單元。呼叫端可指定程序名稱及參數,請資料庫執行其中的資料查詢或異動工作。
其優點如下:
- 提升重複工作的效率:常用 SQL 與商業邏輯集中保存,減少每次呼叫時重複傳送大量 SQL 指令。
- 便於重複使用與維護:多個應用程式可呼叫同一程序;邏輯集中修改後,各呼叫端即可採用更新後的版本。
- 有助於安全控管:可授權使用者執行特定程序,而不直接授予其底層資料表的完整存取權限。
- 減少用戶端與資料庫之間的往返:複合操作可在資料庫端一次完成,降低網路通訊成本。
- 有利於一致性:將共用的資料處理規則集中於資料庫端,避免不同應用程式各自實作而產生差異。
第 五 題15 分
請闡述視表(VIEW)的用途與優缺點。
登入後即可作答並保存紀錄。
核心觀念
視表(View)是以查詢敘述定義的虛擬資料表,呈現一個或多個基礎資料表中的部分欄位或符合條件的資料。一般視表本身不儲存查詢結果;使用者查詢視表時,資料庫管理系統會依其定義存取基礎資料表。實體化視表(Materialized View)則會實際儲存查詢結果,需另行維護更新。
解題方法
本題是觀念題,可從「資料存取與呈現」「安全性與簡化」「更新與效能」三個面向,依序說明視表的用途、優點與限制。
一、用途與優點
- 簡化複雜查詢:將常用的多表連接、篩選或彙總查詢定義為視表,使用者可直接查詢視表,不必每次重寫複雜的 SQL。
- 限制資料可見範圍:只公開特定資料列或欄位,隱藏敏感資訊。例如建立只包含員工姓名與部門的視表,不提供薪資欄位。
- 提供一致的資料呈現:不同使用者或應用程式透過相同視表存取資料,降低重複撰寫查詢造成的定義不一致。
- 提供邏輯資料獨立性:在不改變使用者查詢介面的前提下,調整底層資料表結構或查詢實作;只要視表仍維持原有介面,應用程式就不必同步修改。
- 支援摘要與報表:透過彙總查詢呈現統計資訊;若使用實體化視表,還可避免每次都重新計算大型查詢結果。
二、缺點與限制
第 六 題35 分
資料庫內有三個表格,分別是 Product、Sales_table、Supplier。這三個表的欄位名稱與資料紀錄如下:
Product Table
| ID | name | SupplyID |
|---|---|---|
| P001 | 玄天花 | S001 |
| P002 | 仙草 | S003 |
| P003 | 吉梗 | S002 |
| P006 | 辣椒 | S001 |
| P007 | 富士蘋果 | S003 |
| P008 | 岡山羊 | S002 |
| P009 | 台南牛肉 | S003 |
Sales_table
| Seq | ProdID | amount |
|---|---|---|
| ord001 | P001 | 12000 |
| ord002 | P009 | 20000 |
| ord003 | P007 | 16000 |
| ord004 | P006 | 25500 |
| ord005 | P002 | 5000 |
| ord006 | P001 | 17000 |
Supplier Table
| ID | name |
|---|---|
| S001 | 大發 |
| S002 | 大紫 |
| S003 | 大展 |
| S004 | 大途 |
請回答下列問題:
(一) 請寫出建立 Sales_table 表格的 SQL 陳述句(SQL statement)。
(二) 請寫出以下 SQL 陳述句的結果集(Result Set)。
SELECT Product.name as customerName, Supplier.name as EmployerName FROM Product, Supplier, Sales_table WHERE Sales_table.amount >= 15000 AND Sales_table.ProdID = Product.ID AND Product.SupplyID = Supplier.ID;
(三) 請寫出以下 SQL 陳述句的結果集。
SELECT Supplier.ID as SuplID, Supplier.name as SuplName, (SELECT SUM(Sales_table.amount) FROM Sales_table WHERE Sales_table.ProdID IN (SELECT Product.ID FROM Product WHERE Product.SupplyID = Supplier.ID)) AS total_amount FROM Supplier;
登入後即可作答並保存紀錄。
核心觀念
本題考查:
CREATE TABLE建表語法。- 多表連接,利用
WHERE條件建立等值連接。 WHERE篩選資料。- 子查詢與相關子查詢。
SUM聚合函數。NULL:沒有符合資料時,SUM的結果為NULL,不是 。
(一)建立 Sales_table 表格
依題目資料,Seq 最大長度為 6,ProdID 長度為 4,amount 為整數,可寫成:
CREATE TABLE Sales_table (
Seq VARCHAR(6) NOT NULL,
ProdID VARCHAR(4) NOT NULL,
amount INT NOT NULL,
PRIMARY KEY (Seq),
FOREIGN KEY (ProdID) REFERENCES Product(ID)
);
其中:
Seq為每筆銷售紀錄的編號,因此設定為主鍵。ProdID對應Product.ID,因此設定為外來鍵。amount儲存銷售金額。
(二)SQL 結果集
解題方法
篩選條件為:
符合的銷售紀錄如下:
| Seq | ProdID | amount |
|---|---|---|
| ord002 | P009 | 20000 |
| ord003 | P007 | 16000 |
| ord004 | P006 | 25500 |
| ord006 | P001 | 17000 |
再依照:
Sales_table.ProdID = Product.IDProduct.SupplyID = Supplier.ID
查出產品名稱及供應商名稱。
結果集
| customerName | EmployerName |
|---|---|
| 台南牛肉 | 大展 |
| 富士蘋果 | 大展 |
| 辣椒 | 大發 |
| 玄天花 | 大發 |
題目未使用 ORDER BY,因此 SQL 標準不保證輸出順序;上表依題目銷售紀錄順序列示。
(三)SQL 結果集
解題方法
子查詢先找出某供應商所供應的產品: