高考申論題
109年
[資訊處理] 資料庫應用
第 一 題
📖 題組:
某一家圖書公司的關聯式資料庫(Relational Database)包含了作者、圖書及寫書三個表格(Table)。作者表格記錄作者的編號與姓名;圖書表格記錄圖書編號、書名、西元出版年份(例如,2018)、銷售數量(例如,5000);寫書表格記錄作者與圖書的關係,為多對多的關係。這三個表格的關聯綱要(Relational Schema)如下所示: 作者(作者編號、作者姓名) 圖書(圖書編號、書名、出版年份、銷售數量) 寫書(作者編號、圖書編號) 有底線的屬性(Attribute)為該表格之主鍵(Primary Key);例如,寫書表格之主鍵為作者編號與圖書編號兩個屬性的組合。寫書表格有作者編號與圖書編號兩個外來鍵,分別參照作者表格與圖書表格的主鍵。 針對下列三個查詢問題,請各寫出一個SQL指令來進行查詢。
某一家圖書公司的關聯式資料庫(Relational Database)包含了作者、圖書及寫書三個表格(Table)。作者表格記錄作者的編號與姓名;圖書表格記錄圖書編號、書名、西元出版年份(例如,2018)、銷售數量(例如,5000);寫書表格記錄作者與圖書的關係,為多對多的關係。這三個表格的關聯綱要(Relational Schema)如下所示: 作者(作者編號、作者姓名) 圖書(圖書編號、書名、出版年份、銷售數量) 寫書(作者編號、圖書編號) 有底線的屬性(Attribute)為該表格之主鍵(Primary Key);例如,寫書表格之主鍵為作者編號與圖書編號兩個屬性的組合。寫書表格有作者編號與圖書編號兩個外來鍵,分別參照作者表格與圖書表格的主鍵。 針對下列三個查詢問題,請各寫出一個SQL指令來進行查詢。
📝 此題為申論題,共 3 小題
小題 (一)
列出2015至2019這五年內出版的每一本圖書之圖書編號與書名。(10分)
思路引導 VIP
這是一個基礎的選擇(Selection)與投影(Projection)查詢。首先辨識所需的欄位(圖書編號、書名)位於「圖書」表格中。接著設定過濾條件,年份落在 2015 到 2019 之間。作答時注意 SQL 的基本語法結構:SELECT [欄位] FROM [表格] WHERE [條件]。
小題 (二)
列出寫過一本以上的書的每一位作者之作者編號。(10分)
思路引導 VIP
題目要求統計「數量」,這代表需要使用聚合函數(Aggregate Functions)。「寫過一本以上」即著作數量 > 1。資料來源應選擇「寫書」表格,因為該表紀錄了作者與圖書的關聯。解題步驟為:依「作者編號」進行群組化(GROUP BY),計算各組數量(COUNT),最後用 HAVING 子句過濾聚合後的結果。
小題 (三)
列出寫過的書之總銷售數量超過十萬本的每一位作者之作者姓名。(10分)
思路引導 VIP
此題難度較高,涉及多表連接(Join)。首先,需要「作者姓名」(在作者表),需要「銷售數量」(在圖書表),而連結兩者需要透過「寫書」表。因此需要連接三個表格。接著需按「作者姓名」(或編號)分組,計算「銷售數量」的總和(SUM),並設定過濾條件大於 100,000。