109 高普考高考二級 資訊處理 高等資料庫設計 考古題詳解

109 年・高普考・高考二級・資訊處理
試題代碼 高等資料庫設計

第 一 題30 分

某航空公司的一趟飛機(Airplane)飛行(Fly)會有多個機組員(Crew)以不同角色(Role)參與。飛行記錄有起飛地點名(Origin)、起飛時間(DepTime)、到達時間(ArrTime)、到達目的地(Destination)、里程(Miles)。時間均精確到「秒」。機組員團隊有不同的編號(CID)、姓名(CName),飛機有不同的編號(ANO)、型號(Model)。

下圖是某設計師所繪製的實體關係圖(ER 圖,Entity-Relationship Diagram),其中每一實體(矩形)鄰近某關係(菱形)間均有一對 (min,max)(\mathrm{min},\mathrm{max}) 的限制,代表該實體參與該關係之 min(至少)、max(至多)次數限制,∗* 代表沒有上限。屬性劃實底線者(有 CID、ANO、DepTime)為 Primary Key(主鍵)的一部分。

🖼️【此處有附圖,請對照原卷】

下面答題,除了原圖中所示的英文屬性外,不得再假設任何其他屬性。

(一) 請寫出上面敘述所隱含的所有功能相依(Functional Dependency)。(2 分)

(二) 請將此 ER 圖轉化成關聯式資料庫綱要(Schema)。(6 分)

(三) 上述 (二) 的 Schema,若不是在第三正規化(3rd Normal Form),請將其轉為符合第三正規化關聯式資料庫綱要。(6 分)

(四) 請評估此設計師的 ER 圖是否正確?如不是,請說明其問題,並請另繪出你建議的 ER 圖。(10 分)

(五) 請將上述 (四) 的你自己「建議的 ER 圖」轉為符合第三正規化關聯式資料庫綱要。並與 (三) 所得到的答案相比較。(6 分)

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

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

這一題的完整詳解

核心觀念

本題考查三件事:從敘述找出功能相依、將 ER 圖轉成關聯式綱要,以及用功能相依判斷並消除違反第三正規化的相依。關鍵是區分「一趟飛行」與「某機組員參與該趟飛行」:航班資料屬於飛行本身,Role 則屬於機組員參與飛行的關係。

以下將圖中的 Dest 視為題目敘述的到達目的地。並依「時間精確到秒」將 DepTime 視為可區分航班的完整起飛時間。

解題方法與推導

先逐一判斷哪些屬性由哪些鍵值決定:

  • 機組員編號決定機組員姓名:CID→CNameCID \to CName。
  • 飛機編號決定飛機型號:ANO→ModelANO \to Model。
  • 同一架飛機在同一個起飛時間只對應一趟飛行,因此 (ANO,DepTime)(ANO, DepTime) 決定該趟飛行的起點、到達時間、目的地與里程。
  • Role 是個別機組員在該趟飛行中的角色,須由機組員與該趟飛行共同決定。

(一)功能相依

列出非平凡且最小的功能相依如下:

CID→CNameCID \to CName ANO→ModelANO \to Model (ANO,DepTime)→(Origin,ArrTime,Dest,Miles)(ANO, DepTime) \to (Origin, ArrTime, Dest, Miles) (CID,ANO,DepTime)→Role(CID, ANO, DepTime) \to Role

最後一項表示同一機組員在同一趟飛行中的角色。依這些相依,(CID,ANO,DepTime)(CID, ANO, DepTime) 可決定飛行紀錄中的所有屬性;但 Role 不由 (ANO,DepTime)(ANO, DepTime) 單獨決定,因為同一趟飛行的不同機組員可以擔任不同角色。

(二)將原 ER 圖轉成關聯式綱要

原圖中的 Crew、Airplane 是實體;Fly 是兩者之間的多對多關係。多對多關係轉成一個關聯,納入雙方的主鍵以及關係屬性。

  • Crew(CID, CName),主鍵:CIDCID
  • Airplane(ANO, Model),主鍵:ANOANO
  • Fly(CID, ANO, Origin, Dest, DepTime, ArrTime, Miles, Role),主鍵:(CID,ANO,DepTime)(CID, ANO, DepTime)
  • 外鍵:CID→Crew(CID)CID \to Crew(CID)
  • 外鍵:ANO→Airplane(ANO)ANO \to Airplane(ANO)

原圖將 CID、ANO、DepTime 劃底線,故依圖將三者列為 Fly 的主鍵。此主鍵表示:同一機組員可在同一架飛機上參與不同起飛時間的飛行。

(三)將上述綱要轉成第三正規化

在 Fly 關聯中,(ANO,DepTime)(ANO, DepTime) 是主鍵 (CID,ANO,DepTime)(CID, ANO, DepTime) 的真子集合,卻已決定 Origin、ArrTime、Dest、Miles。這些非主鍵屬性只依賴複合主鍵的一部分,造成部分相依,因此不符合第三正規化。

依 (ANO,DepTime)→(Origin,ArrTime,Dest,Miles)(ANO, DepTime) \to (Origin, ArrTime, Dest, Miles) 拆分:

  • Crew(CID, CName),主鍵:CIDCID
  • Airplane(ANO, Model),主鍵:ANOANO
  • Flight(ANO, DepTime, Origin, ArrTime, Dest, Miles),主鍵:(ANO,DepTime)(ANO, DepTime);ANO 為外鍵
  • CrewFlight(CID, ANO, DepTime, Role),主鍵:(CID,ANO,DepTime)(CID, ANO, DepTime);CID 為外鍵,(ANO,DepTime)(ANO, DepTime) 為外鍵
🔒

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

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

免費註冊

第 二 題30 分

下圖是某實體關係圖(Entity-Relationship Diagram),其中每一實體(矩形)或弱實體(雙矩形)鄰近某關係(菱形)間均有一對 (min,max)(\mathrm{min},\mathrm{max}) 的限制,代表該實體參與該關係之 min(至少)、max(至多)次數限制,∗* 代表沒有限制。

屬性劃實底線者(如 FK)為 Primary Key(主鍵)的一部分,劃虛底線者(如 GK)為 Partial Key。箭頭 is-a 代表某實體(如 S)為另一實體(如 H)的特殊化(Specialization)。請在同時兼顧日後運作效率與語意正確的原則,寫出其對應的關聯(Relation)式資料庫綱要(Schema)。

🖼️【此處有附圖,請對照原卷】

(一) 做為下一子題的草稿,請以「關聯(屬性1,屬性2,…)」方式先寫出應有的所有關聯表格;同時,必須標示出每個關聯的主鍵。(16 分)

(二) 進一步,請針對實體關係圖中 G、H、S、R5 四者應有的關聯表格,以 SQL 語法寫出其綱要,欄位的資料型態均假設為固定字串,長度可自行假設。但重點是:每一關聯均需以 SQL 語法註明其主鍵、所有的候選鍵(Candidate Key),以及標註應有的參考完整性限制(Referential Integrity Constraints);為求簡化,違反參考完整性限制時行動均假設為 RESTRICT。(14 分)

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

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

這一題的完整詳解

核心觀念

本題考 ER 圖轉關聯綱要,重點是弱實體識別、關係基數映射、關係屬性處理,以及 is-a 特殊化的映射。

  • 弱實體 G 依賴擁有者 F 識別。G 的主鍵由 F 的主鍵與 G 的 Partial Key 組成,因此是 (FK,GK)(FK,GK);識別關係 R1 可併入 G,不另建關係表。
  • 一對多關係可將「多」端的外鍵放入另一端。R3 中 H 端為 (1,1)(1,1)、G 端為 (0,∗)(0,*),因此把 G 的複合主鍵放入 H。
  • 多對多關係需建立中介關係表,主鍵通常由兩端的主鍵組成;若一端是弱實體,須帶入其完整主鍵。
  • is-a 特殊化需保留子類與父類的參照關係。依圖中底線標示,S 的 SK 為主鍵;S 同時繼承 H 的 HK,作為唯一且非空的外鍵,確保每筆 S 對應一筆 H。J 為 S 的子類,沿用 SK 作為主鍵及外鍵。

解題方法

先逐一判讀每個菱形兩端的 (min,max)(\mathrm{min},\mathrm{max})。若為一對多,把「一」端鍵值放進「多」端;若為多對多,建立關係表。再處理弱實體與特殊化,最後以主鍵、唯一性與外鍵檢查識別和參照完整性。

(一)所有關聯及主鍵

以下以底線標示主鍵,並在欄位旁註明外鍵:

  • F(FK,A)
  • E(EK)
  • G(FK,GK,C),其中 FK 為參照 F 的外鍵;主鍵為 (FK,GK)(FK,GK)
  • R2(FK,EK,D),其中 FK 參照 F、EK 參照 E;主鍵為 (FK,EK)(FK,EK)
  • H(HK,A,FK,GK),其中 (FK,GK)(FK,GK) 參照 G;主鍵為 HK
  • S(SK,HK,B),其中 HK 為繼承自 H 的鍵,參照 H,且在 S 中唯一;主鍵為 SK
  • J(SK,A1),其中 SK 參照 S;主鍵為 SK
  • R5(EK,FK,GK),其中 EK 參照 E、(FK,GK)(FK,GK) 參照 G;主鍵為 (EK,FK,GK)(EK,FK,GK)

R1 是 F 與弱實體 G 的識別關係,已由 G 的 FK 表示,不另建表。R3 是 G 對 H 的一對多關係,已由 H 的 (FK,GK)(FK,GK) 表示,不另建表。R5 兩端皆可多次參與,因此保留為中介表。R2 也為多對多,且有屬性 D,因此須另建 R2 表。

(二)G、H、S、R5 的 SQL 綱要

以下假設 F、E 已建立,且其主鍵分別為 FK、EK。每個資料欄位均使用固定長度字串。

CREATE TABLE G (
 FK CHAR(10) NOT NULL,
 GK CHAR(10) NOT NULL,
 C CHAR(30),

 CONSTRAINT PK_G PRIMARY KEY (FK, GK),
 CONSTRAINT FK_G_F
 FOREIGN KEY (FK) REFERENCES F (FK)
 ON DELETE RESTRICT ON UPDATE RESTRICT
);

G 的候選鍵為 (FK,GK)(FK,GK)。FK 單獨不足以識別 G,GK 是相對於擁有者 F 的 Partial Key,因此不能單獨作為候選鍵。

🔒

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

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

免費註冊

第 三 題20 分

當設計資料庫管理軟體(DBMS)時,同時接取的管理(Concurrency Control)是重要議題。假設某段期間,資料庫運作環境只有 T1、T2 兩個交易,他們遵守 basic two-phase locking(基本的兩階段鎖定協定)。下圖表示若從頭到尾執行結束時,T1、T2 原先想完成的 operation。

T1 原預定交易內容:

  • read_lock(β\beta);
  • read_item(β\beta);
  • write_lock(γ\gamma);
  • read_item(γ\gamma);
  • γ:=110β−101001\gamma := 110\beta - 101001;
  • write_item(γ\gamma);
  • write_lock(α\alpha);
  • read_item(α\alpha);
  • α:=α+105γ\alpha := \alpha + 105\gamma;
  • write_item(α\alpha);
  • unlock(α\alpha);
  • unlock(β\beta);
  • unlock(γ\gamma);
  • commit;

T2 原預定交易內容:

  • read_lock(α\alpha);
  • read_item(α\alpha);
  • write_lock(β\beta);
  • β:=α+β\beta := \alpha + \beta;
  • write_item(β\beta);
  • unlock(α\alpha);
  • unlock(β\beta);
  • commit;

隨著時間軸往下,兩交易前面一些 operation 的進行交織如下:

🖼️【此處有附圖,請對照原卷】

圖中可辨識之交織操作如下:

  • T2:read_lock(α\alpha);
  • T2:read_item(α\alpha);
  • T1:read_lock(β\beta);
  • T1:read_item(β\beta);
  • T1:write_lock(γ\gamma);
  • T1:read_item(γ\gamma);
  • T1:γ:=110β−101001\gamma := 110\beta - 101001;
  • T2:write_lock(β\beta);
  • T1:write_item(γ\gamma);
  • T1:write_lock(α\alpha);
  • 其後尚有未列明之操作。

若 DBMS 的 deadlock 預防機制分別如下,會發生什麼情況?請分別說明:

(a) 在該機制下,兩個交易中間因某些 operation 的衝突狀況,以及 (b) 整體而言,隨著時間的進行,兩個交易最後的狀況;尤其說明還會有 deadlock 嗎?(每小題 10 分,共 20 分)

(一) deadlock 預防機制採 Wait-die

(二) deadlock 預防機制採 Wound-wait

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

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

這一題的完整詳解

【核心觀念】

本題考 Wait-die 與 Wound-wait 兩種以交易時間戳記預防 deadlock 的方法。交易年齡依圖中開始順序判定:T2 先開始,故 T2 較舊、T1 較年輕。兩種機制的規則如下:

機制請求鎖的交易較舊請求鎖的交易較年輕
Wait-die等待較年輕的持鎖交易較年輕的交易回復
Wound-wait使較年輕的持鎖交易回復等待較年長的持鎖交易

交易回復時,尚未提交的資料修改會撤銷,並釋放持有的鎖。

【解題方法】

依時間順序追蹤每次鎖衝突,再按交易年齡套用相應規則。首先,T2 要求 β\beta 的寫鎖,與 T1 已持有的讀鎖衝突;之後 T1 要求 α\alpha 的寫鎖,與 T2 已持有的讀鎖衝突。兩種機制對第一個衝突的處理不同,因此 T1 回復的時點也不同。

(一)採 Wait-die

T2 較舊,T1 較年輕。T2 要求 β\beta 寫鎖時,鎖由較年輕的 T1 持有,因此 T2 等待。等待期間,T1 可以繼續執行,包含寫入 γ\gamma,再要求 α\alpha 寫鎖。

此時 α\alpha 的讀鎖由較舊的 T2 持有。較年輕的 T1 要求與其衝突的寫鎖,依 Wait-die 規則,T1 回復。T1 尚未提交,所以已寫入但未提交的 γ\gamma 修改會撤銷;T1 也會釋放持有的鎖。T2 隨即取得 β\beta 寫鎖,完成更新並提交。之後 T1 重新執行並提交。

🔒

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

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

免費註冊

第 四 題20 分

假設我們要設計關聯式資料庫,採用由下而上的合成法的設計作法,其 Universal Relation 綱要包含 10 個屬性,為 R(A,B,C,D,E,F,G,H,I,J)R(A,B,C,D,E,F,G,H,I,J)。已知的功能相依為:

{I,J}→H\{I,J\}\to H {I,G}→{E,F}\{I,G\}\to \{E,F\} {G,J}→{C,D}\{G,J\}\to \{C,D\} {G,J}→A\{G,J\}\to A J→BJ\to B C→AC\to A

(一) 請以功能相依的推導、封閉(Closure)的概念,找出 RR 所有的候選鍵(請呈現你的功能相依推導)。(6 分)

(二) 請分解 RR 為滿足第三正規化的關聯資料庫綱要。(14 分)

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

這一題的完整詳解

核心觀念

本題考查由下而上的合成法(synthesis method),分成兩個步驟:

  1. 以功能相依(Functional Dependency, FD)的屬性封閉找出所有候選鍵。
  2. 將函數相依化為最小涵蓋,再依 3NF 合成法建立關聯綱要。

屬性集合 XX 的封閉 X+X^+,是由 XX 出發,反覆套用功能相依後可決定的所有屬性。若 X+=RX^+=R,則 XX 是超鍵;若 XX 的任何真子集都不是超鍵,則 XX 是候選鍵。

(一)找出所有候選鍵

1. 找出候選鍵必含的屬性

右側未出現在任何功能相依中的屬性,不能由其他屬性推出,因此必須放入每一個候選鍵。

本題右側屬性為 {A,B,C,D,E,F,H}\{A,B,C,D,E,F,H\},未出現在右側的屬性為:

{G,I,J}\{G,I,J\}

所以每個候選鍵都必須包含 G,I,JG,I,J。

2. 計算 {G,I,J}+\{G,I,J\}^+

從 {G,I,J}\{G,I,J\} 開始,依序套用功能相依:

  • IJ→HIJ\to H,加入 HH。
  • IG→EFIG\to EF,加入 E,FE,F。
  • GJ→CDGJ\to CD,加入 C,DC,D。
  • GJ→AGJ\to A,加入 AA。
  • J→BJ\to B,加入 BB。
  • C→AC\to A,可推出 AA,但 AA 已在封閉中。

因此:

{G,I,J}+={A,B,C,D,E,F,G,H,I,J}=R\{G,I,J\}^+=\{A,B,C,D,E,F,G,H,I,J\}=R

故 {G,I,J}\{G,I,J\} 是超鍵。

3. 確認最小性與全部候選鍵

由於 G,I,JG,I,J 都是右側未出現的屬性,每個候選鍵都必須包含三者。又 {G,I,J}\{G,I,J\} 已能決定全部屬性,因此不能再加入其他屬性形成更小的候選鍵。

候選鍵只有:

{G,I,J}\boxed{\{G,I,J\}}

(二)合成 3NF 綱要

1. 化為最小涵蓋

先將右側拆成單一屬性:

IJ→H,IG→E,IG→F,GJ→C,GJ→D,GJ→A,J→B,C→AIJ\to H,\quad IG\to E,\quad IG\to F,\quad GJ\to C,\quad GJ\to D,\quad GJ\to A,\quad J\to B,\quad C\to A

接著檢查左側多餘屬性與冗餘相依:

🔒

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

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

免費註冊

其他考古題