114 關務特考三等 資訊處理(選試英文)科別 資料庫應用 考古題詳解

114 年・關務特考・三等・資訊處理(選試英文)科別
試題代碼 資料庫應用

第 一 題30 分

假設某個銀行需要管理顧客借款的資料,而定義了三個表格。其中:

  • CUSTOMER 表格記錄顧客基本資料,包含身分證字號(ID)、姓名(Name)、地址(Address)和連絡電話(Telephone)。
  • LOAN 表格記錄每筆借款的基本資料,包含借款編號(LoanNO)、借款金額(Amount)和辦理借款的銀行分行名稱(Branch)。
  • BORROWER 表格則記錄借貸關係,包含借款顧客(ID)、借款編號(LoanNO)和借貸成立日期(Date)。

所有屬性除了「借款金額」為數字型態之外,其餘皆為字串型態。此三個表格的綱要簡列如下,且每個表格的主鍵以底線標註:

CUSTOMER(ID, Name, Address, Telephone)

LOAN(LoanNO, Amount, Branch)

BORROWER(ID, LoanNO, Date)

請利用 SQL 查詢指令,分別回答下列問題:(每小題 10 分,共 30 分)

(一) 找出那些顧客曾經在此銀行的「忠孝東路」分行辦理借款,列出其顧客身分證字號、借款編號和借款金額。

(二) 找出每家分行的最大借款金額。

(三) 找出住在臺北市且借款超過 3 次以上的顧客身分證字號。

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

這一題的完整詳解

核心觀念

本題考查關聯式資料庫的 JOIN、分組聚合與分組後篩選:

  • CUSTOMER 以 ID 識別顧客;LOAN 以 LoanNO 識別借款;BORROWER 以 (ID, LoanNO) 識別顧客與借款的借貸關係。
  • 顧客與借款是多對多關係,須透過 BORROWER 連接 CUSTOMER 與 LOAN。
  • WHERE 篩選明細資料;GROUP BY 將資料分組;MAX 計算組內最大值;HAVING 篩選分組後的結果。

解題方法

(一)曾在「忠孝東路」分行辦理借款

從 BORROWER 取得借款關係,再以 LoanNO 連接 LOAN;篩選分行名稱後,輸出顧客身分證字號、借款編號及金額。

SELECT B.ID, B.LoanNO, L.Amount
FROM BORROWER AS B
JOIN LOAN AS L
 ON B.LoanNO = L.LoanNO
WHERE L.Branch = '忠孝東路';

題目未要求顧客姓名或其他基本資料,因此不必連接 CUSTOMER。每筆符合條件的借貸關係會列出一列;若同一筆借款由多位顧客共同借貸,則各顧客各列一筆。

(二)找出每家分行的最大借款金額

依分行名稱分組,再對各組的 Amount 使用 MAX。

SELECT Branch, MAX(Amount) AS MaxAmount
FROM LOAN
GROUP BY Branch;

GROUP BY Branch 會將同一分行的借款歸為一組;MAX(Amount) 則取該組中的最大金額。若不同借款編號的金額相同,最大值仍只顯示該金額。

(三)住在臺北市且借款超過 3 次的顧客身分證字號

🔒

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

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

免費註冊

第 二 題20 分

假設在關聯式資料庫系統中,資料庫管理者(DBA)定義了一個 MEMBER 表格,並以三個字串型態的屬性記錄會員的基本資料,包含:編號(ID)、姓名(Name)、電話號碼(Telephone)。

經統計分析發現,此系統的使用者經常利用會員姓名查詢其電話號碼,如下列的範例 SQL 查詢句所示:

select Telephone from MEMBER where Name = ‘Wu’;

請問此資料庫管理者應該替那個或那些屬性建立索引(Index),以提升資料庫系統的查詢處理效率?進一步以範例資料畫出此索引的樹狀結構,並詳加說明此結構具有何種特性,可協助達到提升效率的目的。

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

這一題的完整詳解

核心觀念

本題考查索引的設計與 B+ 樹索引。查詢條件是 Name = 'Wu',因此應在 Name 屬性建立索引,讓資料庫能依姓名快速找到符合的會員,再取得其電話號碼。

因為查詢只輸出 Telephone,而索引鍵只有 Name 時,找到姓名後通常還要依索引中的資料列指標回到 MEMBER 表格,讀取電話號碼。若採用涵蓋索引,也可將 Telephone 一併納入索引,但本題的基本答案是對 Name 建立索引。

解題方法

先看 WHERE 子句中的搜尋條件,再據此選擇索引屬性:

select Telephone
from MEMBER
where Name = 'Wu';

資料庫需要尋找 Name 等於 'Wu' 的資料,因此在 Name 上建立索引最直接。ID 和 Telephone 都沒有出現在搜尋條件中;單獨替它們建立索引,無法直接加速依姓名篩選的查詢。

以下以 Name 為索引鍵,並以索引項目中的資料列指標表示對應的會員資料。假設資料按姓名排序,範例資料為:

NameTelephone
Chen02-1111
Lin02-2222
Wang02-3333
Wu02-4444
Wu02-5555
Yang02-6666

示意 B+ 樹如下(為便於說明,假設每個葉節點最多容納 3 個索引項目):

🔒

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

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

免費註冊

第 三 題30 分

假設一家零售商希望對顧客的購買行為進行資料分析,而考慮是否在現有的交易處理系統(Transaction Processing System)之外,另外再建立一個資料倉儲(Data Warehouse)。

請根據不同面向說明此兩種系統的差別,包含:

  1. 資料來源多寡或資料時間特性。
  2. 綱要(Schema)的設計理念,例如是強調正規化還是處理效率。
  3. 較常使用的 SQL 指令,例如新增、刪除、修改、查詢等。

並根據上述比較的結果,建議此廠商分開建立成兩個系統或整合成一個系統。

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

這一題的完整詳解

核心觀念

本題在比較**交易處理系統(Transaction Processing System,TPS)與資料倉儲(Data Warehouse,DW)**的設計目的與資料特性。TPS 支援日常營運交易;資料倉儲整合歷史資料,供分析、報表及決策使用。兩者的工作負載不同,因此在資料來源、時間特性、綱要設計及 SQL 操作上也不同。

解題方法

依題目指定的三個面向逐一比較,再由系統用途推導建置建議。零售商若要同時處理即時交易與跨期間的購買行為分析,應讓交易處理和分析工作各自使用適合的系統。

比較面向交易處理系統(TPS)資料倉儲(DW)
資料來源與時間特性通常以單一企業或應用系統的營運資料為主,資料反映目前狀態,重視最新、即時的交易內容。例如結帳、付款、庫存異動。整合多個資料來源,例如銷售、會員、商品、門市及網路商店資料;保存長時間的歷史資料,支援依期間或維度進行分析。
綱要設計理念以交易正確性、一致性及降低更新異常為重點,常使用正規化設計,避免重複儲存資料。以查詢與彙總效率為重點,常採維度模型,例如星狀綱要或雪花綱要;事實資料記錄交易或彙總數值,維度資料描述時間、商品、顧客、地區等分析角度。可能適度冗餘,以減少查詢時的連接成本。
🔒

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

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

免費註冊

第 四 題20 分

JSON(JavaScript Object Notation)格式經常被用來表示半結構化資料(Semi-Structured Data)。

假設我們要建立多筆顧客的資料,其中顧客編號(No)和姓名(Name)為字串型態,而子女(Children)則為數個字串組合而成的陣列。兩個顧客的範例資料如下:

NoNameChildren
1張三John, Mary
2李四John, Tom, Sandy

請將上述內容以一個集合(collection)內含兩個 JSON 文件(document)表示,並讓一個顧客對應到一個 JSON 文件。

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

這一題的完整詳解

核心觀念

本題考查 JSON 的基本結構,以及如何用陣列表示一對多資料。

  • **JSON 文件(document)**以物件表示,物件由一組組「鍵(key):值(value)」構成。
  • **集合(collection)**可視為多筆文件的集合;本題有兩位顧客,因此集合內應有兩個顧客文件。
  • 顧客編號 No、姓名 Name 是字串;子女 Children 是由多個字串組成的陣列。

解題方法

每位顧客各建立一個 JSON 物件,並將共同欄位 No、Name、Children 放入其中。Children 的值使用方括號 [] 表示陣列,各子女姓名以字串形式列出。

依題目資料,集合可表示如下:

🔒

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

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

免費註冊

其他考古題