高考申論題
106年
[資訊處理] 資料庫應用
第 一 題
📖 題組:
考慮下列關聯資料表: 教務資料(教授姓名, 教授工作證號碼, 研究室編號, 研究室所在建築物, 課程編號, 課程名稱, 教室所在建築物, 教室編號, 修課成績, 學生姓名, 學生證號碼) 該關聯資料表「教務資料」有以下限制: 每位教授的教授工作證號碼是唯一的;每位學生的學生證號碼是唯一的;每門課的課程編號是唯一的;每間研究室的研究室編號是唯一的;每間教室的教室編號是唯一的。 每位教授都分配有一間且僅有一間研究室,每一間研究室可供給零位以上教授使用。 每門課由一位且僅由一位教授上該門課,每位教授至少上一門課。 每位學生至少修一門課,每門課有零位以上學生修該課程。 每門課只會在一間教室上課,每間教室都可供零門課以上使用。 修課成績指某位學生修某門課的成績。
考慮下列關聯資料表: 教務資料(教授姓名, 教授工作證號碼, 研究室編號, 研究室所在建築物, 課程編號, 課程名稱, 教室所在建築物, 教室編號, 修課成績, 學生姓名, 學生證號碼) 該關聯資料表「教務資料」有以下限制: 每位教授的教授工作證號碼是唯一的;每位學生的學生證號碼是唯一的;每門課的課程編號是唯一的;每間研究室的研究室編號是唯一的;每間教室的教室編號是唯一的。 每位教授都分配有一間且僅有一間研究室,每一間研究室可供給零位以上教授使用。 每門課由一位且僅由一位教授上該門課,每位教授至少上一門課。 每位學生至少修一門課,每門課有零位以上學生修該課程。 每門課只會在一間教室上課,每間教室都可供零門課以上使用。 修課成績指某位學生修某門課的成績。
📝 此題為申論題,共 4 小題
小題 (一)
試依前述限制,描述所有可能的功能相依性(functional dependency)。(10 分)
思路引導 VIP
看到這題首先應逐句分析題目的「業務規則(Business Rules)」,將「唯一性限制」與「一對一/多對一對應關係」轉換為功能相依(X → Y)。接著,留意由多個屬性組合成的複合鍵(如成績由學生與課程共同決定),最後再檢查是否有隱含的傳遞相依(Transitive Dependency)。
小題 (二)
試問如何以功能相依性的規則,依前述限制來決定出關聯資料表「教務資料」的主要鍵(primary key)。(10 分)
思路引導 VIP
本題測驗關聯式資料庫設計的核心基礎:如何從語意限制中萃取出「功能相依性(Functional Dependency, FD)」,並以此推演候選鍵與主鍵。解題時應先逐條將文字敘述轉為符號化的 FD,接著尋找「未曾出現在 FD 右側(不會被其他屬性決定)」的屬性作為主鍵的必備元素,最後透過屬性閉包(Attribute Closure)證明其能決定所有屬性即可。
小題 (三)
請判定上述關聯資料表「教務資料」是否有符合第三正規化之要求,如不符合的話,試問將如何修改使其能符合第三正規化之要求,並標示出修改後每一關聯資料表的主要鍵(primary key)。(10 分)
思路引導 VIP
看到正規化題目,首先根據題意列出所有的功能相依(FD),接著推導出原資料表的主鍵(Primary Key)。透過檢驗是否存在「部分相依(違反2NF)」或「遞移相依(違反3NF)」來判定其正規化程度,最後依據FD將原表分解成符合3NF的多個關聯綱目,並記得標示主鍵。
小題 (四)
試請依據(三)小題已修改成符合第三正規化要求後之關聯資料表,寫一 SQL 程式片段,依學生證號碼由小而大的順序,輸出每一位學生的學生證號碼、學生姓名,及其所修的每一門課的課程名稱與所獲得的成績。(10 分)
思路引導 VIP
先根據業務規則推導出符合 3NF 的關聯綱目(至少需包含「學生」、「課程」與「修課」三個表),確認所需查詢欄位的分布位置。接著使用 JOIN 語法將資料表透過主鍵與外鍵關聯,最後加上 ORDER BY 滿足依學生證號碼排序的條件。