免費開始練習
調查局四等申論題 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
📝 此題為申論題,共 3 小題

小題 (一)

請問從以下的表格中,應該建立那些主鍵(Primary Key)與外部鍵(Foreign Key),以確保資料的正確性與一致性?(5 分)

思路引導 VIP

解題關鍵在於辨識各資料表代表的實體(Entity)及其唯一識別碼以設定主鍵(PK),並找出關聯表(多對多關係)中連結其他實體的屬性以設定外部鍵(FK)。分析修課成績表(T)時,應敏銳察覺其為學生(S)與課程(C)的交集,必然包含兩個外部鍵,且須由兩者組成複合主鍵。

🤖
AI 詳解
AI 專屬家教

【破題】 為確保資料庫的實體完整性(Entity Integrity)與參考完整性(Referential Integrity),防止異常資料寫入,應針對三個資料表建立以下主鍵(Primary Key, PK)與外部鍵(Foreign Key, FK): 【論述】

小題 (二)

請寫出 SQL 語句,從上述資料庫中,找出那些課程名稱是有兩個(含以上)不同的老師開設的。(10 分)

思路引導 VIP

看到「某個欄位有兩個以上的另一個欄位值」,必須直覺想到使用 GROUP BY 對目標進行分組,並搭配 HAVING 子句與聚合函數 COUNT() 來設定篩選條件。為了確保計算的是「不同」的老師,建議在 COUNT 內加上 DISTINCT 確保邏輯嚴謹。

🤖
AI 詳解
AI 專屬家教

【解題關鍵】使用 GROUP BY 進行分組,並利用 HAVING 搭配 COUNT 函數進行聚合條件篩選。 【解答】 SQL 指令如下:

小題 (三)

請寫出 SQL 語句,從上述資料庫中,找出修課成績低於 60 分同學的學號、學生姓名與所修讀的課程名稱。(10 分)

思路引導 VIP

首先確認所需查詢的欄位散落在哪些資料表(S表、C表、T表),接著確立三個表格之間的關聯鍵(學號、課程代號)以進行合併(JOIN)。最後在 WHERE 子句中加入「成績 < 60」的篩選條件即可完成查詢。

🤖
AI 詳解
AI 專屬家教

【解答】 本題可使用標準的 ANSI SQL (JOIN 語法) 或舊式合併語法撰寫,兩者皆為正確解答。 寫法一:使用明確的 JOIN 語法(推薦)

升級 VIP 解鎖