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

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

第 一 題20 分

假設 T1T_1、T2T_2 與 T3T_3 為三個不同的交易(Transactions)。令 Read(X,A)Read(X,A) 為從資料庫中讀取資料項 XX 的內容,並寫入本機變數 AA 中;Write(A,X)Write(A,X) 為將本機變數 AA 的內容寫入資料庫的資料項 XX 中。

(一)現給定下列排程(Schedule):

T1T_1:R(X,A)R(X,A)、W(A,X)W(A,X)、R(Y,B)R(Y,B)、W(B,Y)W(B,Y)

T2T_2:R(X,A)R(X,A)、W(A,X)W(A,X)、R(Y,B)R(Y,B)、W(B,Y)W(B,Y)

其交錯順序依原卷排程排列。請利用順序優先圖(Precedence Graph)方法,檢測此排程是否為可序列化排程(Serializable Schedule)。

(二)現給定下列排程(Schedule):

T1T_1:R(X,A)R(X,A)、R(Z,C)R(Z,C)、W(A,X)W(A,X)、W(C,Z)W(C,Z)

T2T_2:R(Y,B)R(Y,B)、R(X,A)R(X,A)、W(B,Y)W(B,Y)、W(A,X)W(A,X)

T3T_3:R(C,Z)R(C,Z)、R(Y,B)R(Y,B)、W(C,Z)W(C,Z)、W(B,Y)W(B,Y)

其交錯順序依原卷排程排列。請利用順序優先圖(Precedence Graph)方法,檢測此排程是否為可序列化排程(Serializable Schedule)。

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

這一題的完整詳解

核心觀念

本題考查衝突可序列化(conflict serializability)。順序優先圖又稱優先圖(precedence graph):每個交易各為一個節點;若排程中有兩個不同交易對同一資料項執行衝突操作,且其中一個操作先於另一個,便由先執行者指向後執行者,形成一條有向邊。

衝突操作須同時符合:

  1. 來自不同交易;
  2. 存取同一資料項;
  3. 至少一個操作是寫入。

因此,ReadRead–ReadRead 不衝突;ReadRead–WriteWrite、WriteWrite–ReadRead、WriteWrite–WriteWrite 則都會產生衝突。順序優先圖無環,排程即為衝突可序列化;有環則不是。

解題方法

題目未列出各操作的完整交錯次序,只說「其交錯順序依原卷排程排列」,但原卷中的實際操作序列並未提供。順序優先圖的邊取決於衝突操作的先後順序;僅有各交易內部的操作順序,不足以唯一判定圖中的邊。因此,(一)與(二)都須依原卷排程的實際交錯順序分析,不能由目前列出的資訊定案。

作答時,先依原卷由左至右(或由上至下)標示每個操作的先後,再逐對檢查不同交易間對同一資料項的衝突操作,加入對應有向邊;最後檢查圖是否有環。

(一)兩個交易

已知兩個交易都會讀寫 XX 與 YY。可能產生邊的衝突對如下:

  • 在 XX 上:T1T_1 與 T2T_2 的讀寫、寫讀、寫寫衝突。
  • 在 YY 上:T1T_1 與 T2T_2 的讀寫、寫讀、寫寫衝突。
  • 同一資料項的讀讀操作不產生邊。
🔒

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

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

免費註冊

第 二 題20 分

假設使用者 AA 擁有一對 RSA 公鑰 AUAU 與私鑰 ARAR;使用者 BB 也擁有一對 RSA 公鑰 BUBU 與私鑰 BRBR。若 AA 欲透過網路將訊息 MM 安全地傳送給 BB:

(一)請利用 RSA 加密法,設計一套能同時滿足鑑別性(Authenticity)、機密性(Confidentiality)、完整性(Integrity)及不可否認性(Non-Repudiation)之四項安全原則的傳輸流程演算法,以安全完成該任務。

(二)請詳細說明您所設計的演算法,如何能有效達成上述四項資訊安全原則。

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

這一題的完整詳解

核心觀念

本題考 RSA 的兩種用途,以及如何搭配雜湊函數完成安全傳輸:

  • 公鑰加密:以接收者的公鑰加密,只有持有相對應私鑰者能解密,提供機密性。
  • 數位簽章:傳送者以自己的私鑰對訊息摘要簽章,接收者以傳送者的公鑰驗證,提供來源鑑別、完整性及不可否認性。
  • 雜湊函數:將訊息映射為固定長度摘要;訊息改變時,摘要也會改變。雜湊本身不加密,也不能單獨證明傳送者身分。

題目未指定雜湊函數及 RSA 簽章格式,以下以安全雜湊函數 HH 搭配標準 RSA 簽章方案說明。實務上,公鑰須透過憑證或其他可信管道確認其所屬者。

解題方法:簽章後再加密

令 A 的私鑰為 ARAR、公鑰為 AUAU;B 的私鑰為 BRBR、公鑰為 BUBU。

傳送流程

  1. A 計算訊息摘要

h=H(M)h=H(M)

  1. A 對摘要產生數位簽章

S=Sign⁡AR(h)S=\operatorname{Sign}_{AR}(h)

在教科書式 RSA 表示中,可寫成 S=hdA mod nAS=h^{d_A}\bmod n_A;實際使用時應採用標準化且安全的 RSA 簽章填充格式。

  1. A 將訊息與簽章組成待傳資料

P=(M,S)P=(M,S)

  1. A 使用 B 的公鑰加密待傳資料

C=Enc⁡BU(P)C=\operatorname{Enc}_{BU}(P)

A 傳送密文 CC 給 B。實際系統通常使用混合式加密:以隨機產生的對稱金鑰加密 PP,再以 BUBU 加密該金鑰。

接收流程

  1. B 使用自己的私鑰解密

P=Dec⁡BR(C)=(M,S)P=\operatorname{Dec}_{BR}(C)=(M,S)

  1. B 驗證 A 的簽章

B 以 A 的公鑰 AUAU 驗證 SS 是否為訊息摘要 H(M)H(M) 的有效簽章:

Verify⁡AU(H(M),S)=有效\operatorname{Verify}_{AU}(H(M),S)=\text{有效}

🔒

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

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

免費註冊

第 三 題60 分

圖一為一個含有二個特殊化(specializations)的公司人員分類之 Enhanced Entity-Relationship Diagram(EERD)。

(一)針對圖一之 EERD,以下哪些敘述是正確?

  1. 每一位人員必是員工或客戶。
  2. 每一位員工必是行政人員、技術人員或顧問。
  3. 可能有人員為員工,也為客戶。
  4. 可能有員工為行政人員、為技術人員,也為顧問。
  5. 可能有員工為行政人員、也為技術人員,但不為顧問。
  6. 可能有人員為員工,但不為客戶。
  7. 可能有人員不為員工,也不為客戶。
  8. 可能有員工不為行政人員、不為技術人員,也不為顧問。
  9. 可能有人員為行政人員,也為客戶。
  10. 可能有人員為行政人員、為技術人員,也為客戶。

(二)請將圖一之 EERD 轉換成以關聯式資料庫之表格加以描述,並請結合子型態鑑別器(Subtype discriminator)PTypePType 及 ETypeEType,為每位人員判斷其所對應之子類別,同時也正確標示出每一表格的 primary key。當中 PTypePType 及 ETypeEType 兩個屬性,分別描述每位人員所屬類別,以及每位員工所屬類別。試列出將該 EERD 轉換後之最適當表格,並標出每一表格之 primary key。

(三)試詳細說明如何表示 PTypePType 及 ETypeEType 內容。

(四)試寫一 SQL 程式片段,以查找出每一位員工之 SSD、姓名、所屬部門及職務類別(行政人員、技術人員、顧問)。

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

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

這一題的完整詳解

核心觀念

本題考查 EERD 的特殊化(specialization)約束:

  1. 完整特殊化(total specialization):超型態中的每個實體,必須屬於至少一個子型態。
  2. 部分特殊化(partial specialization):超型態中的實體不一定屬於任何子型態。
  3. 重疊特殊化(overlapping):同一實體可同時屬於多個子型態,以圓圈內的 o 表示。
  4. 互斥特殊化(disjoint):同一實體只能屬於一個子型態,以圓圈內的 d 表示。

依圖一:

  • 「人員」至「員工、客戶」為完整且重疊特殊化。
  • 「員工」至「行政人員、技術人員、顧問」為完整且互斥特殊化。

(一)選項分析

1. 每一位人員必是員工或客戶。

正確。第一個特殊化為完整特殊化,因此每位人員至少屬於員工或客戶其中之一。

2. 每一位員工必是行政人員、技術人員或顧問。

正確。第二個特殊化為完整特殊化,因此每位員工至少屬於三種員工子類別之一。

3. 可能有人員為員工,也為客戶。

正確。第一個特殊化標示為重疊,因此人員可同時屬於員工及客戶。

4. 可能有員工為行政人員、為技術人員,也為顧問。

錯誤。第二個特殊化為互斥特殊化,同一位員工只能屬於一種員工子類別。

5. 可能有員工為行政人員、也為技術人員,但不為顧問。

錯誤。行政人員與技術人員仍是兩個不同子類別,互斥約束禁止同一位員工同時屬於兩者。

6. 可能有人員為員工,但不為客戶。

正確。第一個特殊化雖然是完整特殊化,但不是所有人員都必須同時是員工及客戶;人員可只屬於員工。

7. 可能有人員不為員工,也不為客戶。

錯誤。第一個特殊化為完整特殊化,每位人員至少必須屬於員工或客戶之一。

8. 可能有員工不為行政人員、不為技術人員,也不為顧問。

錯誤。第二個特殊化為完整特殊化,每位員工至少必須屬於一個員工子類別。

9. 可能有人員為行政人員,也為客戶。

正確。行政人員是員工的子類別,而員工與客戶之間允許重疊,因此同一人可同時為行政人員及客戶。

10. 可能有人員為行政人員、為技術人員,也為客戶。

錯誤。雖然員工可同時為客戶,但行政人員與技術人員互斥,不能同時具備兩種員工子類別身分。

小結

正確選項為:

1、2、3、6、9\boxed{1、2、3、6、9}

(二)轉換為關聯式資料庫表格

解題方法

採用「超型態一張表、各子型態各自一張表」的轉換方式:

  • 超型態的主鍵會移至子型態表,作為子型態表的 primary key。
  • 子型態表的 primary key 同時是參照超型態表的 foreign key。
  • 由於第一個特殊化允許重疊,人員可以同時出現在 Employee 與 Customer。
  • 由於第二個特殊化互斥,每位員工只會出現在 AdministrativeStaff、TechnicalStaff、Consultant 三表其中之一。

1. 人員表

Person(
 SSD PRIMARY KEY,
 Name,
 PType
)
  • SSD:人員身分識別資料,為 primary key。
  • Name:姓名。
  • PType:人員所屬子類別鑑別器。

2. 員工表

Employee(
 SSD PRIMARY KEY,
 Department,
 EType,
 FOREIGN KEY (SSD) REFERENCES Person(SSD)
)
  • SSD:同時是 primary key 及 foreign key。
  • Department:所屬部門。
  • EType:員工所屬子類別鑑別器。

3. 客戶表

Customer(
 SSD PRIMARY KEY,
 Product,
 FOREIGN KEY (SSD) REFERENCES Person(SSD)
)
  • SSD:同時是 primary key 及 foreign key。
  • Product:客戶相關產品資料。

4. 行政人員表

AdministrativeStaff(
 SSD PRIMARY KEY,
 Business,
 FOREIGN KEY (SSD) REFERENCES Employee(SSD)
)

5. 技術人員表

TechnicalStaff(
 SSD PRIMARY KEY,
 License,
 FOREIGN KEY (SSD) REFERENCES Employee(SSD)
)

6. 顧問表

Consultant(
 SSD PRIMARY KEY,
 Expertise,
 FOREIGN KEY (SSD) REFERENCES Employee(SSD)
)

其中:

🔒

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

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

免費註冊

其他考古題