調查局四等申論題
105年
[資訊科學組] 資料庫應用概要
第 一 題
📖 題組:
四、假設某一大學之學生修課成績資料庫如下,共有三個表,分別為學生資料表 S(學號,學生姓名,就讀學系,年級)、課程資料表 C(課程代號,課程名稱,學分數,任課老師代號)、修課成績表 T(學號,課程代號,成績)。 S 學號 學生姓名 就讀學系 年級 S1 Mary 電機 一 S2 Betty 數學 二 S3 John 物理 二 S4 Peter 電機 一 S5 Jack 化學 三 C 課程代號 課程名稱 學分數 任課老師代號 C1 微積分 3 T1 C2 英文 2 T5 C3 微積分 3 T9 C4 電腦概論 2 T3 C5 應用文 2 T6 C6 電腦概論 2 T7 T 學號 課程代號 成績 S1 C1 80 S1 C2 85 S1 C4 90 S1 C5 85 S2 C1 50 S2 C4 80 S2 C5 92 S3 C1 80 S3 C4 86 S4 C6 58
四、假設某一大學之學生修課成績資料庫如下,共有三個表,分別為學生資料表 S(學號,學生姓名,就讀學系,年級)、課程資料表 C(課程代號,課程名稱,學分數,任課老師代號)、修課成績表 T(學號,課程代號,成績)。 S 學號 學生姓名 就讀學系 年級 S1 Mary 電機 一 S2 Betty 數學 二 S3 John 物理 二 S4 Peter 電機 一 S5 Jack 化學 三 C 課程代號 課程名稱 學分數 任課老師代號 C1 微積分 3 T1 C2 英文 2 T5 C3 微積分 3 T9 C4 電腦概論 2 T3 C5 應用文 2 T6 C6 電腦概論 2 T7 T 學號 課程代號 成績 S1 C1 80 S1 C2 85 S1 C4 90 S1 C5 85 S2 C1 50 S2 C4 80 S2 C5 92 S3 C1 80 S3 C4 86 S4 C6 58
📝 此題為申論題,共 3 小題
小題 (一)
請問從以下的表格中,應該建立那些主鍵(Primary Key)與外部鍵(Foreign Key),以確保資料的正確性與一致性?(5 分)
思路引導 VIP
解題關鍵在於辨識各資料表代表的實體(Entity)及其唯一識別碼以設定主鍵(PK),並找出關聯表(多對多關係)中連結其他實體的屬性以設定外部鍵(FK)。分析修課成績表(T)時,應敏銳察覺其為學生(S)與課程(C)的交集,必然包含兩個外部鍵,且須由兩者組成複合主鍵。
小題 (二)
請寫出 SQL 語句,從上述資料庫中,找出那些課程名稱是有兩個(含以上)不同的老師開設的。(10 分)
思路引導 VIP
看到「某個欄位有兩個以上的另一個欄位值」,必須直覺想到使用 GROUP BY 對目標進行分組,並搭配 HAVING 子句與聚合函數 COUNT() 來設定篩選條件。為了確保計算的是「不同」的老師,建議在 COUNT 內加上 DISTINCT 確保邏輯嚴謹。
小題 (三)
請寫出 SQL 語句,從上述資料庫中,找出修課成績低於 60 分同學的學號、學生姓名與所修讀的課程名稱。(10 分)
思路引導 VIP
首先確認所需查詢的欄位散落在哪些資料表(S表、C表、T表),接著確立三個表格之間的關聯鍵(學號、課程代號)以進行合併(JOIN)。最後在 WHERE 子句中加入「成績 < 60」的篩選條件即可完成查詢。