高考申論題
108年
[資訊處理] 資料庫應用
第 一 題
📖 題組:
二、某出版社要用關聯式資料模式建立可記錄其出版書籍的資料庫,設計了包括可記錄書籍的資料表(Table)BOOK 及記錄作者的資料表 AUTHOR。BOOK 中包含 BookId(書籍編號)、Title(書名)、PubDate(出版日期)、Category(分類)等屬性(Attribute)欄位,且 BookId 是其主鍵(Primary Key, PK);AUTHOR 中包含 AuthId(作者編號)、Name(姓名)、Birthday(出生年月日)、Tel(電話)等屬性欄位,且 AuthId 是其主鍵。即資料庫中包含 BOOK(BookId, Title, PubDate, Category) AUTHOR(AuthId, Name, Birthday, Tel) 兩個資料表。請依序回答下列問題:
二、某出版社要用關聯式資料模式建立可記錄其出版書籍的資料庫,設計了包括可記錄書籍的資料表(Table)BOOK 及記錄作者的資料表 AUTHOR。BOOK 中包含 BookId(書籍編號)、Title(書名)、PubDate(出版日期)、Category(分類)等屬性(Attribute)欄位,且 BookId 是其主鍵(Primary Key, PK);AUTHOR 中包含 AuthId(作者編號)、Name(姓名)、Birthday(出生年月日)、Tel(電話)等屬性欄位,且 AuthId 是其主鍵。即資料庫中包含 BOOK(BookId, Title, PubDate, Category) AUTHOR(AuthId, Name, Birthday, Tel) 兩個資料表。請依序回答下列問題:
📝 此題為申論題,共 3 小題
小題 (一)
如果每本書可以有好幾位作者,每一位作者也可以出版好幾本書,請對前項資料庫設計進行增修,使得出版社的資料庫可記錄每本書的作者,也可記錄每個作者所出版的書。作答時可仿效題目的描述方式說明您的設計,注意必須以英文命名明確表達資料表名稱及屬性欄位名稱,並明確指出主鍵及外來鍵(Foreign Key, FK),外來鍵並須指出與其對應的主鍵。(10 分)
思路引導 VIP
題目描述的是經典的「多對多(Many-to-Many, N:M)」關係。在關聯式資料庫中,不能直接在兩個 Table 中記錄多個對應值,必須建立一個「關聯資料表(Junction Table / Linking Table)」。設計時,這個中間表必須包含兩端的主鍵作為其組成部分,並設定外來鍵約束(FK)以維持參照完整性。
小題 (二)
承續並運用前一子題之資料庫增修,請寫出可查得屬於「’資料庫’」分類(Category)的所有書籍之 SQL 命令,此命令必須列出書籍的 BookId, Title 及作者人數,並依 BookId 由小而大依序列出。(15 分)
思路引導 VIP
此題需要跨表查詢,涉及 JOIN 操作。重點在於:1. 篩選條件為 Category = '資料庫';2. 計算作者人數需使用聚合函數 COUNT(*) 或 COUNT(AuthId);3. 使用聚合函數時必須搭配 GROUP BY;4. 最後依題目要求使用 ORDER BY 排序。
小題 (三)
請運用子題之資料庫增修寫出可查得曾經與名字叫「’張山峰’」的作者共同著作過的作者之 SQL 命令,列出其姓名及電話。(15 分)
思路引導 VIP
這是一個典型的自我相關查詢(Self-join 邏輯)。思考流程:
- 先找出「張山峰」參與過的書籍清單 (BookId)。