113 調查局特考三等 資訊科學組 資料庫應用 考古題詳解

113 年・調查局特考・三等・資訊科學組
試題代碼 資料庫應用

第 一 題25 分

SQL 資料庫和 NoSQL 資料庫做比較,就資料模型的靈活性、資料庫的可擴展性、資料庫的可用性、資料的一致性和完整性、查詢效率、維護性等六方面,敘述優缺點並申論之。

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

這一題的完整詳解

核心觀念

本題比較關聯式 SQL 資料庫與 NoSQL 資料庫,重點不在判定哪一類「全面較好」,而是依資料結構、交易需求、規模與維運條件,選擇合適的資料管理方式。

SQL 資料庫通常以表格、欄位、資料列及關聯表示資料,並以結構描述(schema)規定資料型別與限制。NoSQL 是多種非關聯式資料庫的統稱,常見模型包括鍵值、文件、寬欄與圖形資料庫;其資料模型與一致性保證依產品和設定而異,不能一概而論。

解題方法

依題目指定的六個面向逐項比較。作答時先交代兩類資料庫的典型特性,再說明各特性帶來的優勢、代價及適用情境;尤其要避免將「SQL 等同於只能垂直擴充」或「NoSQL 等同於沒有一致性」等概括說法當成絕對規則。

六方面比較與申論

一、資料模型的靈活性

  • **SQL 優點:**資料表與欄位結構明確,可透過主鍵、外鍵及資料型別描述資料關係與限制。結構固定時,資料格式一致、容易維持規範。
  • **SQL 缺點:**新增欄位或變更資料結構,通常需調整 schema 與相關應用程式;若資料型態多變、欄位經常增減,變更成本較高。
  • **NoSQL 優點:**文件型或鍵值型資料庫常可依紀錄保存不同欄位,適合資料結構快速演變,或不同來源資料格式不一致的情況。
  • **NoSQL 缺點:**結構限制較少,資料格式與欄位規範可能由應用程式承擔;若缺乏驗證機制,容易出現欄位不一致或資料品質下降。
  • **申論:**靈活不代表不需要資料設計。資料關係複雜、格式穩定時,SQL 的明確結構有助管理;格式多樣且變動頻繁時,NoSQL 通常較有彈性。

二、資料庫的可擴展性

  • **SQL 優點:**成熟的 SQL 系統可採索引、讀取副本、分區及分片等方式擴充;垂直擴充也常見,適合交易關係複雜且須維持一致性的系統。
  • **SQL 缺點:**跨節點分片與資料重分布可能增加設計與維運複雜度,分散式交易也可能帶來額外成本。
  • **NoSQL 優點:**許多 NoSQL 系統以分散式架構為設計目標,可透過增加節點進行水平擴充,適合資料量或流量快速成長的服務。
  • **NoSQL 缺點:**水平擴充不會自動解決資料分布、熱點、跨分片查詢與一致性等問題,仍須依工作負載設計。
  • **申論:**可擴展性取決於資料庫產品、部署架構與查詢型態。比較時應說明水平與垂直擴充的取捨,不宜直接斷言 SQL 無法水平擴充。

三、資料庫的可用性

  • **SQL 優點:**可透過複寫、備援、故障移轉及叢集等方式提高服務可用性,適用於停機成本高的系統。
  • **SQL 缺點:**高可用架構需要設定與監控;若要求分散式環境下同時維持強一致性,故障時的處理可能影響可用性或回應時間。
  • **NoSQL 優點:**許多分散式 NoSQL 系統以多節點與資料複寫支援容錯;部分系統可在節點故障時仍提供服務。
  • **NoSQL 缺點:**複寫延遲、網路分割或節點故障時,不同副本可能暫時呈現不同資料;高可用不等於資料必然即時一致。
  • **申論:**可用性要連同故障時的資料一致性、復原時間與復原點需求一起評估。不能只以「有複寫」推論系統一定符合所有可用性需求。

四、資料的一致性和完整性

🔒

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

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

免費註冊

第 二 題25 分

有一長照機構收容有需要被照顧的長者多名,每一名被照顧的長者在機構內皆需登記身分證字號、姓名、性別和生日,且須登記與其他長者的關係(如夫妻、兄弟、姊妹等)。

同時,還需有至少一名緊急聯絡人。緊急聯絡人在機構內需留有身分證字號、姓名和電話等資料,不同長者可以有相同之緊急聯絡人。

機構擁有許多房間,分為 2 床型房和 4 床型房。2 床型房有 A 床和 B 床;4 床型房有 A 床、B 床、C 床和 D 床。每一房間皆有房號,每一名被照顧的長者會被分配到一張床。

分配原則如下:

  1. 2 床型房可以分配給夫妻或同性別的長者。
  2. 4 床型房僅可以分配給同性別的長者。

長照機構聘請多名照護員。照護員需記載員工編號、員工身分證字號、姓名、性別、住址、E-mail 和電話,其中員工編號和員工身分證字號是唯一的,電話則可以有多支。

每一照護員皆須照顧長者,以房間為照顧單位:

  1. 每一男性照護員照顧一間 4 床型房男性長者的房間,或兩間 2 床型房男性長者的房間。
  2. 每一女性照護員照顧一間 4 床型房女性長者的房間,或兩間 2 床型房非男性長者的房間。

機構還有一項服務,即被照顧的長者需要看醫生時,機構會為其預約。因此,機構記錄有每一位長者的最近看診日期、下次預約日期及看診醫生。

看診醫生紀錄有醫院名稱、醫生編號、醫生姓名和科別,醫院名稱和醫生編號合起來是唯一的。

根據以上敘述,分析資料需求,畫出實體關係圖(ER-diagram)。圖中必須標明實體型態(Entity Type)、弱實體型態(Weak Entity Type)、關係型態(Relationship Type)、識別關係型態(Identifying Relationship Type)、屬性(Attribute)等,亦需呈現基數比(Cardinality ratio)和參與度(Participation Constraint)兩種結構上的限制。若有需要,可自行假設需求,但必須寫清楚。

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

這一題的完整詳解

核心觀念

本題考查概念式資料庫設計,重點是辨認實體、屬性、主鍵、弱實體、關係,以及以基數比和參與度表示業務限制。題目不是選擇題,故無選項分析。

繪圖時可採 Chen ER 表示法:實體用矩形、弱實體用雙矩形、關係用菱形、識別關係用雙菱形;主鍵加底線,弱實體的部分鍵用虛線底線。基數比可標 1:11:1、1:N1:N 或 M:NM:N;完全參與以雙線表示,部分參與以單線表示。

解題方法與合理假設

先將題幹名詞分成「有自身資料、可獨立辨識的對象」與「描述對象間的連結」,再依唯一性判定主鍵。床位以「房間+床位代號」辨識,因此建模為弱實體;員工電話可多支,建模為多值屬性。房間入住與照護安排的性別及房型限制,屬於額外語意限制,不能只靠一般基數比完整表達。

為使圖示具體,採以下假設:

  1. 每名長者在本題所述期間只分配一張床;每張床最多分配一名長者。
  2. 每名長者至少有一位緊急聯絡人;同一聯絡人可聯絡多名長者。
  3. 每名長者有一筆最近看診日期、下次預約日期及看診醫生資料;尚未預約時,下次預約日期可為空。
  4. 長者關係以兩名長者間的關係表示,關係種類由「夫妻、兄弟、姊妹等」記載,視為對稱關係。
  5. 每間房都配置一名照護員;照護員依題述規則照顧一間四床房或兩間二床房。

實體、屬性與鍵

可在答案紙上先畫出下列實體及屬性:

  • 長者(強實體):身分證字號(主鍵)、姓名、性別、生日。
  • 緊急聯絡人(強實體):身分證字號(主鍵)、姓名、電話。
  • 房間(強實體):房號(主鍵)、房型(2 床型/4 床型)。
  • 床位(弱實體):床位代號(部分鍵;A、B、C、D)。其完整識別鍵為「房號+床位代號」。
  • 照護員(強實體):員工編號、員工身分證字號、姓名、性別、住址、E-mail、電話(多值屬性)。員工編號與員工身分證字號皆唯一,兩者均可作候選鍵;圖中選員工編號為主鍵,並將身分證字號標為唯一鍵。
  • 醫生(依醫院識別的實體):醫院名稱、醫生編號、醫生姓名、科別。主鍵是醫院名稱+醫生編號,兩者合組底線。

床位必須隸屬某一房間,不能脫離房間單獨辨識,因此是弱實體;「房間—設有—床位」為識別關係型態。每間房有 2 個或 4 個床位,床位只屬於一間房。

關係型態、基數比與參與度

關係型態基數比參與度及題意
長者—具有—緊急聯絡人M:NM:N長者完全參與,至少一位聯絡人;聯絡人端部分參與,題目未要求每位聯絡人必須聯絡長者。
長者—與另一長者有關係—長者遞迴 M:NM:N一名長者可與多名長者有關係;關係屬性為「關係種類」。兩端各標示長者角色,例如「當事長者」與「關係對象」。
🔒

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

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

免費註冊

第 三 題30 分

假設一個交易(transaction)有五種基本運算:

  1. begin⁡(T)\operatorname{begin}(T):交易 TT 開始。
  2. read⁡(Y,y)\operatorname{read}(Y,y):將硬碟資料項 YY 讀到主記憶體變數 yy。
  3. write⁡(y,Y)\operatorname{write}(y,Y):將主記憶體變數 yy 寫到硬碟資料項 YY。
  4. commit⁡(T)\operatorname{commit}(T):交易 TT 提交,表示 TT 成功結束。
  5. rollback⁡(T)\operatorname{rollback}(T):交易 TT 被駁回。

假設資料庫紀錄檔(database log)中用五種方式記錄交易的運算:

  1. [start⁡,T][\operatorname{start},T]:交易 TT 開始。
  2. [read⁡,T,Y][\operatorname{read},T,Y]:交易 TT 讀取資料項 YY。
  3. [write⁡,T,Y,更新前的值,更新後的值][\operatorname{write},T,Y,\text{更新前的值},\text{更新後的值}]:交易 TT 更新資料項 YY。
  4. [commit⁡,T][\operatorname{commit},T]:交易 TT 提交。
  5. [rollback⁡,T][\operatorname{rollback},T]:交易 TT 被駁回。

在 WAL(Write-Ahead Logging)機制下,考慮交易 T0T_0、T1T_1、T2T_2 和 T3T_3 四個交易及以下的排程。

【排程表】 (此題原卷文字擷取不全,請參考原卷。)

假設資料項之初始值為 X=100X=100、Y=425Y=425 和 Z=800Z=800,且記憶體夠大,作業系統不主動將記憶體緩衝區的資料或 LOG 紀錄寫回硬碟,回答以下問題。

每小題 10 分,共 30 分。

(1)執行時間序 8 之後(時間序 9 之前),記憶體和硬碟中資料項和紀錄檔的內容各為何?

(2)執行時間序 16 之後(時間序 17 之前),記憶體和硬碟中資料項和紀錄檔的內容各為何?

(3)發生系統當機,系統復原後硬碟中資料項 XX、YY 和 ZZ 的值為何?

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

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

這一題的完整詳解

核心觀念

本題考查 WAL(Write-Ahead Logging)與交易復原:

  1. 寫入資料前,對應的 LOG 必須先寫入硬碟。
  2. 交易提交時,至少須將該交易的 LOG 強制寫入硬碟;髒資料頁不必立即寫回硬碟。
  3. Checkpoint 會將目前的 LOG 與記憶體中的資料緩衝區寫回硬碟。
  4. 系統復原時:
  • 已提交交易的結果予以保留。
  • 未完成交易的更新予以撤銷。
  • 已 rollback 的交易不保留其更新。

採用標準 LOG 順序,且將交易提交視為強制寫入目前尚未落盤的 LOG。


解題方法

依排程逐步計算資料值:

  • 初始值:X=100,  Y=425,  Z=800X=100,\;Y=425,\;Z=800
  • T0T_0:讀取 Y=425Y=425,計算 a=425×10=4250a=425\times10=4250,寫回 YY
  • T1T_1:讀取 Y=4250Y=4250,計算 c=4250+30=4280c=4250+30=4280,寫回 YY
  • T2T_2:讀取 X=100X=100,計算 b=100+100=200b=100+100=200,寫回 XX
  • T3T_3:讀取 Z=800Z=800,之後讀取 Y=4280Y=4280,計算 e=4280+800=5080e=4280+800=5080,寫回 YY,但尚未提交

(1)時間序 8 之後、時間序 9 之前

記憶體中的資料

時間序 8 已執行:

T0: begin
T0: read(Y,a) → a=425
T0: a=a×10 → a=4250
T0: write(a,Y) → Y=4250
T0: commit

因此記憶體資料為:

資料項記憶體值
XX100
YY4250
ZZ800

其中 Y=4250Y=4250 尚未寫回硬碟。

硬碟中的資料

作業系統尚未主動寫回資料緩衝區,因此硬碟仍為初始值:

資料項硬碟值
XX100
YY425
ZZ800

記憶體中的 LOG

截至時間序 8 的 LOG 為:

[start,T0]
[read,T0,Y]
[start,T2]
[read,T2,X]
[start,T1]
[write,T0,Y,425,4250]
[commit,T0]

硬碟中的 LOG

因為 T0T_0 執行 commit,LOG 被強制寫入硬碟,因此硬碟中的 LOG 亦為:

[start,T0]
[read,T0,Y]
[start,T2]
[read,T2,X]
[start,T1]
[write,T0,Y,425,4250]
[commit,T0]

(2)時間序 16 之後、時間序 17 之前

時間序 9 至 15 執行結果如下:

T1: read(Y,c) → c=4250
T1: c=c+30 → c=4280
T2: b=b+100 → b=200
T2: write(b,X) → X=200
T3: begin
T1: write(c,Y) → Y=4280
T3: read(Z,d) → d=800
🔒

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

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

免費註冊

第 四 題20 分

全國高中籃球聯賽記錄球員資料的關聯綱目(Schema)為:

球隊編號、球隊名稱、學校名稱、比賽場次、球員編號、球員姓名、位置、球員學號、年級、得分數、犯規數。

例如:

('T105', '火球隊', '冠軍高中', 5, 23, '王小明', '得分後衛', 'B2123456', 2, 28, 3)

其功能相依(Functional Dependency,簡稱 FD)集合 FF 如下:

{球隊編號}→{球隊名稱,學校名稱}\{\text{球隊編號}\}\to\{\text{球隊名稱},\text{學校名稱}\} {學校名稱,球員編號}→{球員姓名,球員學號,年級}\{\text{學校名稱},\text{球員編號}\}\to\{\text{球員姓名},\text{球員學號},\text{年級}\} {學校名稱,球員學號}→{球員姓名,球員編號,年級}\{\text{學校名稱},\text{球員學號}\}\to\{\text{球員姓名},\text{球員編號},\text{年級}\} {球隊編號,比賽場次,球員編號}→{位置,得分數,犯規數}\{\text{球隊編號},\text{比賽場次},\text{球員編號}\}\to\{\text{位置},\text{得分數},\text{犯規數}\}

(1)求 FF 的最小集合(minimal set)。

(2)關聯鍵(Relational Key)或候選鍵(Candidate Key)為何?

(3)分解成滿足 3NF 的關聯綱目和每一關聯綱目之 FD。

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

這一題的完整詳解

核心觀念

本題考功能相依的最小集合、候選鍵與 3NF 分解。

  • 最小集合:右側每個屬性皆為單一屬性;左側不可再刪除任何屬性;且不可刪除任何一條相依而改變原相依集合所能推出的結果。
  • 候選鍵:能決定關聯中所有屬性的最小屬性集合。
  • 3NF:對每個非平凡 FD X→AX\to A,至少符合其一:XX 是超鍵,或 AA 是主屬性(出現在某個候選鍵中)。

解題方法

先將所有右側屬性拆成單一屬性,再檢查各 FD 的左側是否可約簡、是否有冗餘相依。接著以「未出現在任何 FD 右側的屬性必須在每個候選鍵中」為切入點求鍵,最後以最小集合中的 FD 建立 3NF 關聯,並加入候選鍵所在的關聯以確保無損分解。

以下以簡寫表示屬性:

  • TT:球隊編號;TNTN:球隊名稱;SS:學校名稱;GG:比賽場次
  • PP:球員編號;PNPN:球員姓名;PosPos:位置;IDID:球員學號;GrGr:年級
  • ScSc:得分數;FF:犯規數

(1)求 FF 的最小集合

先拆開右側:

T→TNT→SSP→PNSP→IDSP→GrSID→PNSID→PSID→GrTGP→PosTGP→ScTGP→F\begin{aligned} T&\to TN\\ T&\to S\\ SP&\to PN\\ SP&\to ID\\ SP&\to Gr\\ SID&\to PN\\ SID&\to P\\ SID&\to Gr\\ TGP&\to Pos\\ TGP&\to Sc\\ TGP&\to F \end{aligned}

檢查左側約簡:

  • SP→PN,ID,GrSP\to PN,ID,Gr 中,SS 或 PP 均不能刪除,因為沒有其他 FD 能單獨推出球員屬性。
  • SID→PN,P,GrSID\to PN,P,Gr 中,SS、IDID 均不能刪除。
  • TGP→Pos,Sc,FTGP\to Pos,Sc,F 中,T,G,PT,G,P 均不能刪除。
  • T→TN,ST\to TN,S 的左側已是單一屬性。

檢查冗餘 FD:上述各相依均不能由其餘 FD 推出。例如 SID→PSID\to P 不能由 SP→IDSP\to ID 推出,因為 SPSP 只能決定 IDID,不能反向決定 PP;同理 SP→IDSP\to ID 也不能由 SID→PSID\to P 推出。

故最小集合為:

Fmin⁡={T→TN, T→S,SP→PN, SP→ID, SP→Gr,SID→PN, SID→P, SID→Gr,TGP→Pos, TGP→Sc, TGP→F}\boxed{ \begin{aligned} F_{\min}=\{& T\to TN,\ T\to S,\\ &SP\to PN,\ SP\to ID,\ SP\to Gr,\\ &SID\to PN,\ SID\to P,\ SID\to Gr,\\ &TGP\to Pos,\ TGP\to Sc,\ TGP\to F \} \end{aligned} }

(2)候選鍵

未出現在任何 FD 右側的屬性為 T,GT,G,因此任何候選鍵都必須包含球隊編號與比賽場次。

由 TGP→Pos,Sc,FTGP\to Pos,Sc,F 可知,還必須取得 PP 才能決定比賽資料中的位置、得分數與犯規數。候選鍵有兩種取得 PP 的方式:

SP→PN,ID,GrSP\to PN,ID,Gr

以及

SID→PN,P,GrSID\to PN,P,Gr

因 T→ST\to S,包含 TT 後可取得 SS。故可用 PP 或 IDID 配合 SS 取得另一個球員識別屬性,分別形成:

K1={T,G,P}K_1=\{T,G,P\}
🔒

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

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

免費註冊

其他考古題