114 地方特考三等 資訊處理類科 資料庫應用 考古題詳解
第 一 題25 分
假設我們在資料庫系統中以下述指令定義 BOOK 表格:
create table Book ( ID char(5), Title varchar(20) not null, Author varchar(20), Price numeric(8, 2), primary key (ID) );
接著依序執行下列指令:
指令 1:insert into BOOK values ('11111', 'Sky', 'John', 60000);
指令 2:insert into BOOK values ('11211', null, 'John', 80000);
指令 3:insert into BOOK values ('11111', 'Ocean', 'John', 10000);
指令 4:insert into BOOK values ('11411', 'Ocean', 'Mary', null);
請依序判斷每個指令能否順利執行。若能順利執行,請說明該指令對資料庫的影響(如新增或刪除特定資料表的內容);若不能順利執行,請詳細說明原因(如違反某種特定的限制)。最後並列出執行四個指令後 BOOK 表格的內容。
登入後即可作答並保存紀錄。
核心觀念
本題考查資料表定義中的 主鍵限制、NOT NULL 限制,以及 INSERT 指令如何逐筆檢查資料完整性:
primary key (ID):ID必須唯一且不得為NULL。Title varchar(20) not null:Title不得為NULL,且字串長度不得超過 20 個字元。- 未宣告
NOT NULL的欄位,例如Author、Price,可以存放NULL。 - 每筆
INSERT都會依資料表限制檢查;違反限制的該筆資料不會寫入表格。
解題方法
依指令順序逐筆判斷,檢查新資料是否符合主鍵唯一性及欄位的 NOT NULL 限制。後續指令只會在前面成功寫入的資料上繼續執行;失敗的指令不會新增資料,也不會刪除或修改既有資料。
逐一判斷指令
指令 1
insert into BOOK values ('11111', 'Sky', 'John', 60000);
可順利執行。 表格原本沒有資料,ID = '11111' 不重複,Title = 'Sky' 也不是 NULL。
新增資料:
| ID | Title | Author | Price |
|---|---|---|---|
| 11111 | Sky | John | 60000 |
指令 2
insert into BOOK values ('11211', null, 'John', 80000);
不能順利執行。 Title 欄位定義為 NOT NULL,但這筆資料的 Title 指定為 NULL,違反非空值限制。此筆資料不會新增;既有資料不受影響。
指令 3
第 二 題20 分
若某研究機構需要建立一個資料庫系統,以管理該機構所有曾經執行過的計畫,經分析後得到下列需求:
- 每個計畫需要記錄其編號、名稱、預算金額、主持人、開始日期與結束日期。其中計畫編號不可重複以用來辨識不同的計畫,而日期則包含年份和月份。
- 每個委託單位則有編號、名稱、聯絡人姓名與電話等資訊,其中編號用以辨識不同單位。
- 一個計畫只能有一個委託單位,但一個單位可以贊助多個計畫案。
請根據上述所有需求畫出一個實體關係圖(Entity-Relationship Diagram, ER Diagram),注意圖中必須標明實體集合、關係集合、屬性、主鍵和對應數量限制(Mapping Cardinality)等。此外,計畫的日期請使用複合屬性(Composite Attribute)的表示法。
登入後即可作答並保存紀錄。
核心觀念
本題考查 ER 模型的實體集合、關係集合、屬性、主鍵、複合屬性,以及關係的對應數量限制。
- 實體集合:可獨立辨識並需要保存資料的對象。本題為「計畫」與「委託單位」。
- 主鍵:能唯一辨識實體的屬性。計畫編號辨識不同計畫,單位編號辨識不同委託單位。
- 複合屬性:可再拆解為子屬性的屬性。本題的開始日期與結束日期皆拆成年、月。
- 對應數量限制:描述一個實體可參與多少個關係。本題中,一個委託單位可對應多個計畫,但一個計畫只能對應一個委託單位,故為一對多。
解題方法
先依資料需求列出實體及其屬性,再依辨識用途指定主鍵,接著將日期拆為年、月的複合屬性。最後判斷兩類實體之間的關係與基數:
- 計畫具有計畫編號、名稱、預算金額、主持人、開始日期、結束日期。
- 委託單位具有單位編號、名稱、聯絡人姓名、電話。
- 每個計畫「只能有一個」委託單位;每個單位「可以贊助多個」計畫,因此關係「委託/贊助」的基數是委託單位對計畫為 。
- 題目沒有要求把「至少一個委託單位」列為必要條件;因此圖中標示的是最大對應數量限制,計畫端為 、單位端為 。
ER 圖
第 三 題30 分
在某圖書館所建立的關聯式資料庫系統中,定義了 BOOK 表格和 BORROWER 兩個表格,前者記錄館中每本藏書的基本資料,包含國際標準書號(ISBN)、書名(Title)、作者(Author)和價錢(Price);後者表示借閱資料,包含借書者編號(No)、書號(ISBN)和借閱日期(Date)。
各表格屬性如下所示,其中除了屬性 Price 為數值型態,其餘屬性皆為字串型態,而主鍵則以底線標註:
BOOK(ISBN, Title, Author, Price)
BORROWER(No, ISBN, Date)
請撰寫 SQL 查詢句,分別回答下列各子題:
(一) 輸出價錢超過 200 元書籍的 ISBN。
(二) 找出編號「B01」之借書者,其所有借過書籍的書名。
(三) 找出每個借書者(以屬性 No 代表)所借閱的書籍總數。
登入後即可作答並保存紀錄。
核心觀念
本題考查 SQL 的基本查詢、資料表連結,以及分組彙總:
WHERE:篩選符合條件的資料列。JOIN:依共同欄位連結資料表。本題以ISBN將借閱紀錄連結到書籍資料。GROUP BY與COUNT:依借書者分組,計算每組的借閱筆數。
題目未說明 BORROWER 的主鍵組成;以下假設每一筆資料代表一次借閱,且同一借書者可能多次借閱同一本書。
解題方法
(一)輸出價錢超過 200 元書籍的 ISBN
直接從 BOOK 表篩選 Price > 200,再輸出符合條件資料列的 ISBN。
SELECT ISBN
FROM BOOK
WHERE Price > 200;
「超過 200 元」表示嚴格大於,因此不包含價格恰為 200 元的書籍。
(二)找出編號「B01」之借書者借過書籍的書名
先在 BORROWER 表篩出 No = 'B01' 的借閱紀錄,再依 ISBN 連結 BOOK 表,取得對應的 Title。
SELECT DISTINCT B.Title
FROM BORROWER AS R
JOIN BOOK AS B
ON R.ISBN = B.ISBN
WHERE R.No = 'B01';
No 與 ISBN 均為字串型態,因此條件值以單引號括住。DISTINCT 用於避免同一本書被借閱多次時,書名重複輸出。
第 四 題25 分
近年來大數據(Big Data)為資料庫系統帶來新的挑戰。首先詳述大數據最主要的 3 個特性(簡稱 3V)為何?其次說明在那種情境或應用下會產生大數據?最後建議使用那種軟體或技術來儲存大數據,並詳述你的理由。
登入後即可作答並保存紀錄。
核心觀念
本題考查大數據(Big Data)的 3V 特性、常見資料來源,以及適合儲存與處理大數據的技術選擇。回答時要把「資料為何構成大數據」和「儲存技術如何因應其特性」連結起來。
解題方法
先定義 3V,再舉出能同時產生大量、快速且多樣資料的情境,最後依照資料規模、型態與成長速度,說明儲存架構的選擇及理由。
一、大數據的 3V 特性
- Volume(資料量):資料規模龐大,可能達到 TB、PB 甚至更高;傳統單一伺服器或資料庫不易有效儲存與處理。
- Velocity(資料速度):資料持續快速產生、傳輸或更新,系統需能即時或近即時地接收、處理與回應。
- Variety(資料多樣性):資料形式不只限於固定欄位的結構化資料,還包括半結構化資料(如 JSON、XML)及非結構化資料(如文字、圖片、音訊、影片)。
二、產生大數據的情境或應用
例如社群平台、電子商務、物聯網(IoT)與智慧城市,都會持續產生多種類型的大量資料:
- 社群平台:使用者貼文、留言、按讚、分享、圖片與影片,資料量大、來源多樣,且持續快速新增。
- 電子商務:瀏覽紀錄、搜尋紀錄、點擊、訂單與交易資料,可用於推薦商品及分析消費行為。
- 物聯網與智慧城市:感測器、穿戴裝置、交通監控與設備日誌會連續傳回資料,具備高資料速度,並可能累積龐大資料量。
作答時不必羅列許多案例,選一至兩種情境,並指出它們如何呈現 3V 即可。