108 地方特考三等 資訊處理 資料庫應用 考古題詳解

108 年・地方特考・三等・資訊處理
試題代碼 資料庫應用

第 一 題25 分

假設我們要設計某物流公司的資料庫,其中某事實是記錄其司機(Driver)每天使用某輛卡車(Truck)負責某趟運送(Delivery)。每趟運送剛好用到一部卡車;但出車時,有時會有雙司機出勤,輪流駕駛。

司機有編號(ID)、姓名(Name)、薪水(Salary)的資料;卡車有牌照號碼(License_No)、品牌(Make)、款式(Model)、噸數(Tonnage)的資料;運送有運送編號(D_Number)、日期(Date)、送達地址(Address)、送達時間(Time)、載送內容(Content)的資料。

圖一為實體關係圖(Entity-Relationship Diagram)。

對所用符號的約略說明:其中每一實體鄰近某關係間均有一個對應比率(min, max),代表該實體參與該關係之 min(至少)、max(至多)次數,∗\ast 代表沒有限制。屬性劃實底線者為 Primary Key(主鍵)。

請暫時不考慮其他實體、屬性,並假設所有對應比率均為正確反映該企業實況。欲記錄上述事實:

(一) 請說明圖一的設計有何問題。(5 分)

(二) 可否將圖一改為只有司機(Driver)與卡車(Truck)兩個實體,而將運送(Delivery)放在其中、當成關係?這樣的設計有何問題?(8 分)

(三) 請提出改進版本。請注意:你的改進版本必須同時滿足「提供完整(Complete)的資訊,且無多餘的(Redundant)關係」的要求。(12 分)

圖一。

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

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

這一題的完整詳解

核心觀念

本題考查 ER 模型中的實體與屬性歸屬、關係基數(min,max),以及如何用關係記錄「某位司機參與某趟運送,而該趟運送使用某部卡車」。

「運送」有自己的運送編號、日期、地址、時間與載送內容,是可被獨立識別的事件,應建模為實體。關係基數則用來表達一個實體至少、至多參與幾次該關係。

解題方法

先核對各實體的屬性是否符合題目敘述,再檢查關係是否能把每趟運送、參與司機與使用卡車連結起來。最後檢查改良設計是否能保存所有事實,並避免重複記錄可由其他關係推得的資訊。

(一)圖一的設計問題

圖一把兩組屬性放錯實體:

  • Truck 連接了 D_Number、Date、Address、Time、Content,這些是運送資料,應屬於 Delivery。
  • Delivery 連接了 License_No、Make、Model、Tonnage,這些是卡車資料,應屬於 Truck。

此外,圖中的 Drive 只記錄司機與卡車的關係,沒有指出司機參與了哪一趟運送。即使能知道某司機曾開某卡車,也無法據此確認他負責哪個日期、目的地或運送編號的工作;司機與運送的對應資訊不完整。

圖中的 Is_for 表示每趟運送恰好使用一部卡車,而一部卡車可對應零趟或多趟運送,這與題目所述一致。

(二)把 Delivery 當成 Driver 與 Truck 之間的關係

不適合。二元關係的一個關係實例只連結一位司機與一部卡車,無法直接表達「同一趟運送有兩位司機共同出勤」。若把雙司機的同一趟運送拆成兩個關係實例,就會重複記錄相同的運送編號、日期、地址、時間與載送內容,也難以確保兩筆資料確實屬於同一趟運送。

此外,同一位司機與同一部卡車可能在不同日期執行多趟運送;只用司機與卡車這一對端點表示關係,無法妥善識別每一趟獨立的運送事件。Delivery 有自己的 D_Number 及事件屬性,應保留為實體。

(三)改進版本

保留三個實體,並將屬性歸回正確位置:

🔒

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

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

免費註冊

第 二 題25 分

假設關聯式資料庫包含下列三個表格:

Student(SID, Name, Address, Phone, Major)代表學生學號、姓名、地址、電話、主修。

Course(CNo, CName, Credit, Dept, Instructor)代表課程編號、名稱、學分數、開課系所、授課教師。

Grade(SNo, CNo, Score)代表 SNo 的學號學生修習 CNo 的課程得分(0–100 分)。

「主修」、「開課系所」之內容值可為 MIS、CS、Business 等,分別代表資管系、資科系、企管系等。

(一) 為教師「王大維」依課程編號、名稱,列出其授課的每門課之修課人數。(8 分)

(二) 找出其所修的每科成績均至少為 90 分之資管系學生姓名。(8 分)

(三) 找出在企管系所開所有課程中沒有一科及格過之學生姓名及其主修。(註:及格分數為 60 分。)(9 分)

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

這一題的完整詳解

核心觀念

本題考查 SQL 的多表連接、分組彙總,以及「所有」與「沒有任何」這兩種條件的表達。

  • Student.SID 與 Grade.SNo 對應,表示學生修課成績。
  • Course.CNo 與 Grade.CNo 對應,表示成績所屬課程。
  • COUNT 可計算每門課的修課人數;GROUP BY 將資料按課程分組。
  • 「每科均符合條件」可用 NOT EXISTS 排除任何一科不符合條件者。
  • 「沒有一科及格」可用 NOT EXISTS 排除任何一筆及格修課紀錄。

以下假設 Grade 中每筆資料代表一位學生修習一門課的成績;若同一學生可能重複出現同一課程紀錄,計算人數時應改用 COUNT(DISTINCT G.SNo)。

解題方法

(一)列出王大維授課各課程的修課人數

先從 Course 篩出授課教師為王大維的課程,再連接 Grade,依課程編號與課程名稱分組,計算每組成績紀錄數。

SELECT C.CNo, C.CName, COUNT(G.SNo) AS 修課人數
FROM Course AS C
LEFT JOIN Grade AS G
 ON C.CNo = G.CNo
WHERE C.Instructor = '王大維'
GROUP BY C.CNo, C.CName;

採用 LEFT JOIN 可保留尚無學生修課的課程,此時 COUNT(G.SNo) 為 0。若只列出至少有一位學生修課的課程,可改用 INNER JOIN。

(二)找出每科成績均至少 90 分的資管系學生姓名

「每科均至少 90 分」表示不存在任何一筆該生的成績低於 90 分。因此以 NOT EXISTS 檢查是否有不符合條件的修課紀錄,並限制學生主修為 MIS。

🔒

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

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

免費註冊

第 三 題20 分

假設某資料庫管理系統採用時間戳記(Timestamp)來管理並行控制(Concurrency Control),它採用的不是基本的時間戳記排序,而是修改版的 Thomas 編寫規則(Write Rule)。

假設某交易 TT 的時間戳記是 10010,請問下列情況,資料庫管理系統會如何處理?(每小題 5 分,共 20 分。)

(一) 欲寫某項目 XX 時,得知 XX 已有寫的時間戳記 write_TS⁡(X)\operatorname{write\_TS}(X) 是 10015。

(二) 欲寫某項目 XX 時,得知 XX 已有讀的時間戳記 read_TS⁡(X)\operatorname{read\_TS}(X) 是 10012。

(三) 欲讀某項目 XX 時,得知 XX 已有寫的時間戳記 write_TS⁡(X)\operatorname{write\_TS}(X) 是 10020。

(四) 欲讀某項目 XX 時,得知 XX 已有寫的時間戳記 write_TS⁡(X)\operatorname{write\_TS}(X) 是 10005。

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

這一題的完整詳解

核心觀念

本題考「時間戳記排序」與修改版的 Thomas 編寫規則(Thomas Write Rule)。每筆資料項目 XX 維護兩個時間戳記:

  • read_TS⁡(X)\operatorname{read\_TS}(X):成功讀取 XX 的交易中,最大的交易時間戳記。
  • write_TS⁡(X)\operatorname{write\_TS}(X):成功寫入 XX 的交易中,最大的交易時間戳記。

設目前交易 TT 的時間戳記為 TS(T)=10010TS(T)=10010。

讀取規則:

  • 若 TS(T)<write_TS⁡(X)TS(T)<\operatorname{write\_TS}(X),表示較新的交易已寫入 XX;為維持時間戳記順序,拒絕讀取並回復 TT。
  • 否則允許讀取,並令 read_TS⁡(X)=max⁡(read_TS⁡(X),TS(T))\operatorname{read\_TS}(X)=\max(\operatorname{read\_TS}(X),TS(T))。

修改版 Thomas 編寫規則的寫入判斷:

  1. 若 TS(T)<read_TS⁡(X)TS(T)<\operatorname{read\_TS}(X),拒絕寫入並回復 TT。
  2. 若 TS(T)<write_TS⁡(X)TS(T)<\operatorname{write\_TS}(X),此次寫入已過時,忽略該寫入,不必回復 TT。
  3. 其餘情況允許寫入,並令 write_TS⁡(X)=TS(T)\operatorname{write\_TS}(X)=TS(T)。

基本時間戳記排序會因第二種情況回復交易;Thomas 編寫規則則將該寫入視為過時操作而忽略。

解題方法

逐小題先判斷操作是讀取還是寫入,再比較題目給的時間戳記與交易時間戳記 1001010010。寫入時需依序檢查 read_TS⁡(X)\operatorname{read\_TS}(X) 與 write_TS⁡(X)\operatorname{write\_TS}(X);讀取時則檢查 write_TS⁡(X)\operatorname{write\_TS}(X)。

各小題分析

(一)欲寫入,且 write_TS⁡(X)=10015\operatorname{write\_TS}(X)=10015

因為

TS(T)=10010<write_TS⁡(X)=10015TS(T)=10010<\operatorname{write\_TS}(X)=10015
🔒

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

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

免費註冊

第 四 題30 分

假設某關聯式資料庫有下列表格 RR,目前僅有的四筆資料分別是 t1,t2,t3,t4t_1,t_2,t_3,t_4。沒有人告訴我們各屬性的相互關係,不過,從我們觀察到資料,可以確認有些功能相依是不存在的,還有些功能相依是有可能存在。請說明哪些是可確認不存在?哪些是有可能存在?答案必須以你觀察到的現象為理由來說明,只憑猜測是不計分。

(一)(18 分)

判斷下列功能相依是否可確認不存在,或有可能存在:

  1. {D,E}→C\{D,E\}\to C

  2. {A,B}→D\{A,B\}\to D

  3. {E,F}→G\{E,F\}\to G

資料如下:

AABBCCDDEEFFGG
a1a_1b1b_1c1c_1d1d_1e1e_1f1f_1g1g_1
a1a_1b2b_2c2c_2d2d_2e2e_2f2f_2g2g_2
a2a_2b2b_2c2c_2d3d_3e1e_1f1f_1g3g_3
a3a_3b3b_3c4c_4d3d_3e1e_1f4f_4g1g_1

(二)(12 分)

假設已知下列功能相依,請利用功能相依推演規則,也就是 Closure 概念,找出所有 RR 的候選鍵(Candidate Key)。注意:只憑猜測,沒有使用功能相依的推演過程,不計分。

FD1:{A,E}→{B,G}\mathrm{FD1}: \{A,E\}\to\{B,G\}

FD2:C→F\mathrm{FD2}: C\to F

FD3:D→C\mathrm{FD3}: D\to C

FD4:G→D\mathrm{FD4}: G\to D

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

這一題的完整詳解

核心觀念

功能相依 X→YX\to Y 成立的意思是:在關係 RR 的所有資料列中,凡是 XX 值相同的兩列,其 YY 值也必須相同。若找到兩列的 XX 值相同、YY 值不同,就能確認該功能相依不存在。

題目只提供目前四筆資料,因此要區分:

  • 可確認不存在:資料中已有違反功能相依的兩列。
  • 有可能存在:目前資料沒有違反情形;這只能表示與觀察到的資料相容,不能證明它在所有可能資料中都成立。

求候選鍵時,使用屬性閉包 X+X^+:反覆套用已知功能相依,直到沒有新屬性加入。若 X+X^+ 包含關係中的所有屬性,XX 是超鍵;若其任何真子集都不是超鍵,XX 就是候選鍵。

(一)判斷功能相依

判斷時,分別比較決定項相同的資料列,再看依存項是否不同。

1. {D,E}→C\{D,E\}\to C

第 t3t_3 與 t4t_4 列的 (D,E)(D,E) 都是 (d3,e1)(d_3,e_1),但 CC 值分別為 c2c_2 與 c4c_4。

因此,同一組 (D,E)(D,E) 對應到不同的 CC 值,違反功能相依。

結論:可確認不存在。

2. {A,B}→D\{A,B\}\to D

四筆資料的 (A,B)(A,B) 組合依序為:

(a1,b1), (a1,b2), (a2,b2), (a3,b3)(a_1,b_1),\ (a_1,b_2),\ (a_2,b_2),\ (a_3,b_3)

沒有兩列的 (A,B)(A,B) 相同,因此目前資料中沒有出現「決定項相同、依存項不同」的反例。

結論:有可能存在。 這表示現有資料不排除此功能相依,並非已證明它對所有可能資料都成立。

3. {E,F}→G\{E,F\}\to G

第 t1t_1 與 t3t_3 列的 (E,F)(E,F) 都是 (e1,f1)(e_1,f_1),但 GG 值分別為 g1g_1 與 g3g_3。

因此,同一組 (E,F)(E,F) 對應到不同的 GG 值,違反功能相依。

結論:可確認不存在。

(二)找出所有候選鍵

關係 RR 的屬性集合為 {A,B,C,D,E,F,G}\{A,B,C,D,E,F,G\},已知功能相依為:

🔒

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

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

免費註冊

其他考古題