免費開始練習
調查局三等申論題 105年 [資訊科學組] 資料庫應用

第 一 題

📖 題組:
假設某一機關的關聯資料庫中有三個表(Table),分別是職員資料表(E)、處室單位表(D)以及請假紀錄表(H),其中,依序各表之欄位有: 表 E(職員編號,職員姓名,單位代號,工作年資) 表 D(單位代號,單位名稱,單位主管編號,單位任務) 表 H(職員編號,請假別,請假開始日期,請假結束日期,職務代理人編號) 其中,單位主管也是屬於職員的一類,單位主管編號就是其職員編號;每位單位主管或職員只能歸屬於某一單位;職員(含單位主管)請假時,必須由同一單位的其他職員代理其業務,且ㄧ位職員至多同時可代理兩位同單位請假職員(含單位主管)的業務,單位主管不得代理請假職員之業務:
📝 此題為申論題,共 3 小題

小題 (一)

為確保上述資料庫中資料的正確性與一致性,請問應該分別建置那些主鍵(primary key)與外部鍵(foreign key)?(5 分)

思路引導 VIP

考生看到此題應先找出每個資料表能唯一識別紀錄的欄位作為「主鍵」(維持實體完整性),接著根據題目描述的關聯邏輯找出跨表的「外部鍵」(維持參考完整性)。特別需要注意「單位主管」與「職務代理人」本質上都是職員,因此皆須設定指向表 E 職員編號的外部鍵。

🤖
AI 詳解
AI 專屬家教

【破題】 為確保關聯式資料庫的實體完整性(Entity Integrity)與參考完整性(Referential Integrity),必須為各表設定適當的主鍵(Primary Key, PK)與外部鍵(Foreign Key, FK),設定如下: 【論述】

小題 (二)

請寫出 SQL 語句,可從上述資料庫中,找出職員編號:105,在整個去年(西元2015 年)所有的請假中,是由職員編號:203 所代理的請假紀錄資料,亦即:(請假別,請假開始日期,請假結束日期)。(10 分)

思路引導 VIP

先確定目標欄位與條件所在的資料表,本題所需的顯示欄位(請假別、日期)與過濾條件(職員編號、代理人編號、年份)全數集中於「請假紀錄表(H)」,因此不需要使用 JOIN。接著,精確設定 WHERE 條件中的編號對應與 2015 年度的日期區間即可完成查詢。

🤖
AI 詳解
AI 專屬家教

【解題思路】確定目標欄位與篩選條件所在的資料表,本題所有資訊皆涵蓋於請假紀錄表 (H),無需進行多表關聯 (JOIN),直接利用 WHERE 條件過濾即可。 【詳解】 已知條件整理:

小題 (三)

請寫出 SQL 語句,當職員編號:105,擬於 2016/9/8 至 2016/9/9 請休假,從資料庫中查詢可代理其業務同仁的職員編號。(10 分)

思路引導 VIP

本題測驗考生將實務業務邏輯轉化為 SQL 條件的能力。解題關鍵在於:(1) 找出同單位同仁並排除本人與單位主管;(2) 處理日期重疊問題,重疊判斷式為「紀錄開始日期 <= 查詢結束日期 AND 紀錄結束日期 >= 查詢開始日期」;(3) 計算該期間的已代理人數需小於 2(以符合至多 2 位的限制);(4) 留意隱含邏輯:代理人本身在該期間不可請假。

🤖
AI 詳解
AI 專屬家教

【解題思路】利用子查詢與 JOIN 找出符合同單位、非本人、非主管條件的候選人,再搭配關聯子查詢 (Correlated Subquery) 檢查特定日期區間內代理人數與自身請假狀況。 【解答】

升級 VIP 解鎖