調查局三等申論題
105年
[資訊科學組] 資料庫應用
第 一 題
📖 題組:
假設某一機關的關聯資料庫中有三個表(Table),分別是職員資料表(E)、處室單位表(D)以及請假紀錄表(H),其中,依序各表之欄位有: 表 E(職員編號,職員姓名,單位代號,工作年資) 表 D(單位代號,單位名稱,單位主管編號,單位任務) 表 H(職員編號,請假別,請假開始日期,請假結束日期,職務代理人編號) 其中,單位主管也是屬於職員的一類,單位主管編號就是其職員編號;每位單位主管或職員只能歸屬於某一單位;職員(含單位主管)請假時,必須由同一單位的其他職員代理其業務,且ㄧ位職員至多同時可代理兩位同單位請假職員(含單位主管)的業務,單位主管不得代理請假職員之業務:
假設某一機關的關聯資料庫中有三個表(Table),分別是職員資料表(E)、處室單位表(D)以及請假紀錄表(H),其中,依序各表之欄位有: 表 E(職員編號,職員姓名,單位代號,工作年資) 表 D(單位代號,單位名稱,單位主管編號,單位任務) 表 H(職員編號,請假別,請假開始日期,請假結束日期,職務代理人編號) 其中,單位主管也是屬於職員的一類,單位主管編號就是其職員編號;每位單位主管或職員只能歸屬於某一單位;職員(含單位主管)請假時,必須由同一單位的其他職員代理其業務,且ㄧ位職員至多同時可代理兩位同單位請假職員(含單位主管)的業務,單位主管不得代理請假職員之業務:
📝 此題為申論題,共 3 小題
小題 (一)
為確保上述資料庫中資料的正確性與一致性,請問應該分別建置那些主鍵(primary key)與外部鍵(foreign key)?(5 分)
思路引導 VIP
考生看到此題應先找出每個資料表能唯一識別紀錄的欄位作為「主鍵」(維持實體完整性),接著根據題目描述的關聯邏輯找出跨表的「外部鍵」(維持參考完整性)。特別需要注意「單位主管」與「職務代理人」本質上都是職員,因此皆須設定指向表 E 職員編號的外部鍵。
小題 (二)
請寫出 SQL 語句,可從上述資料庫中,找出職員編號:105,在整個去年(西元2015 年)所有的請假中,是由職員編號:203 所代理的請假紀錄資料,亦即:(請假別,請假開始日期,請假結束日期)。(10 分)
思路引導 VIP
先確定目標欄位與條件所在的資料表,本題所需的顯示欄位(請假別、日期)與過濾條件(職員編號、代理人編號、年份)全數集中於「請假紀錄表(H)」,因此不需要使用 JOIN。接著,精確設定 WHERE 條件中的編號對應與 2015 年度的日期區間即可完成查詢。
小題 (三)
請寫出 SQL 語句,當職員編號:105,擬於 2016/9/8 至 2016/9/9 請休假,從資料庫中查詢可代理其業務同仁的職員編號。(10 分)
思路引導 VIP
本題測驗考生將實務業務邏輯轉化為 SQL 條件的能力。解題關鍵在於:(1) 找出同單位同仁並排除本人與單位主管;(2) 處理日期重疊問題,重疊判斷式為「紀錄開始日期 <= 查詢結束日期 AND 紀錄結束日期 >= 查詢開始日期」;(3) 計算該期間的已代理人數需小於 2(以符合至多 2 位的限制);(4) 留意隱含邏輯:代理人本身在該期間不可請假。