DSE ICT|關聯式資料庫與 SQL 配套練習(第三份・完整性與效率) 2026-11-04 導師備課指引 · 中學 ICT DSE ICT|關聯式資料庫與 SQL 配套練習(第三份・完整性與效率) 由 1 000 列交易表算出 UPDATE 與 DELETE 的影響列數,再逐級判斷 1NF、2NF、3NF,最後比較索引與連接成本。 先做題,後對答案 建議四十分鐘;正規化題先寫出相依鏈,效率題先算列數再判斷哪個方案較快。 01 本卷資料(做完才看答案) 項目 內容 題數 10 題 建議時間 約 40 分鐘 難度分佈 基礎 4 · 進階 3 · 挑戰 2 · 錯題重練 1 對應章節 所屬章節:DSE ICT|關聯式資料庫與 SQL 適用年級 中五(S5)ICT 02 題目(10 題) 基礎Sales 表有 1 000 列,其中 cat = ‘A’ 有 250 列。執行 `UPDATE Sales SET price = price * 1.1 WHERE cat = ‘A’;` 會影響幾列?其餘列會變嗎? 基礎同一張 1 000 列的 Sales 表,執行 `DELETE FROM Sales WHERE year < 2020;`,year < 2020 有 180 列。刪除後剩幾列? 基礎第一正規化(1NF)要求每一格儲存甚麼?把「電話」一欄寫成 “9123 4567, 9876 5432” 違反了哪一條? 基礎外鍵與主鍵在「可否重複」上有何分別?刪除被引用的父列時,資料庫通常會怎樣做? 進階選課表的主鍵是(student_id, course_id),而 course_title 只由 course_id 決定。這違反第幾正規化?應該怎樣拆? 進階講師表的主鍵是 teacher_id,而 dept_name 只由 dept_code 決定,dept_code 又相依於 teacher_id。這是哪一種相依、違反第幾正規化? 進階索引欄的選擇性(selectivity)怎樣計?某欄 1 000 列中有 250 個不同值,選擇性是?選擇性高還是低較適合建索引? 挑戰B-tree 索引每個節點可放 100 個鍵(fan-out 100)。1 000 列的索引樹最少幾層?一層與兩層分別可覆蓋多少列? 挑戰兩表分別 1 000 及 500 列。Nested loop join 最多要做多少次比較?若改用 hash join(先建雜湊表再掃描),大約多少次? 錯題重練錯題重練:有同學說「索引越多,查詢一定越快,所以每欄都建索引」。正確講法? 03 答案與一句解說 題號 答案 一句解說 1 影響 250 列;其餘 750 列價格不變 UPDATE 只改 WHERE 命中的列,未命中的列完全不動;影響列數可直接用 SELECT COUNT(*) 預核。 2 剩 820 列 刪除列不會刪欄,剩餘列數 = 1 000 − 180。 3 每格只存一個原子值(不可再分);該欄違反 1NF,屬多值屬性 一格放兩個號碼就無法用單一條件篩選或加索引,查詢會變成字串比對。 4 主鍵不可重複、外鍵可以重複;刪父列會被拒(RESTRICT)或連帶處理(CASCADE/SET NULL),視設定 這就是參照完整性(referential integrity):不允許出現指向不存在父列的孤兒列。 5 違反 2NF(部分相依);把 course_id、course_title 拆成獨立的 Course 表 2NF 要求非主鍵欄完全相依於整個主鍵,只靠主鍵一部分就成立的要另立一表。 6 遞移相依(teacher_id → dept_code → dept_name),違反 3NF;把部門另立一表 3NF 要求非主鍵欄不可經另一個非主鍵欄間接決定,否則改一個部門名要更新多列。 7 選擇性 = 不同值 ÷ 總列數 = 250 ÷ 1 000 = 25%;高選擇性(接近 1)較適合 選擇性低代表一個值命中大量列,索引掃描反而不如全表掃描。 8 2 層;一層覆蓋 100 列,兩層覆蓋 10 000 列 100 的 1 次方 100 少於 1 000,2 次方 10 000 才夠,所以樹高 2。 9 Nested loop 最多 1 000 × 500 = 500 000 次;hash join 約 1 000 + 500 = 1 500 次 Nested loop 是每列對每列;hash join 建表加掃描各一次,所以是線性相加。 10 不是;索引加快讀取但拖慢 INSERT/UPDATE/DELETE、佔用儲存,亦可能不被優化器選用;只在高選擇性且常作條件或連接的欄建 每次寫入都要同步更新所有相關索引,索引過多會令寫入成本與儲存空間一齊上升。 04 做完之後怎樣跟進 對完答案,只重做錯的那幾題,並在錯題旁寫出錯在哪一步(公式、單位還是抄錯數)。 同一題隔兩日再做一次;兩次都對才可以移到下一份練習。 家長只需看答案欄與解說欄,不必逐題講解。 想找導師跟進這一章?按此登記導師登記 → 本卷題目與答案由 TutorZone 團隊原創編寫,並非任何學校、出版社或考試局的試題;數值與答案均以程式核算。
DSE ICT|關聯式資料庫與 SQL 配套練習(第三份・完整性與效率) 2026-11-04 導師備課指引 · 中學 ICT DSE ICT|關聯式資料庫與 SQL 配套練習(第三份・完整性與效率) 由 1 000 列交易表算出 UPDATE 與 DELETE 的影響列數,再逐級判斷 1NF、2NF、3NF,最後比較索引與連接成本。 先做題,後對答案 建議四十分鐘;正規化題先寫出相依鏈,效率題先算列數再判斷哪個方案較快。 01 本卷資料(做完才看答案) 項目 內容 題數 10 題 建議時間 約 40 分鐘 難度分佈 基礎 4 · 進階 3 · 挑戰 2 · 錯題重練 1 對應章節 所屬章節:DSE ICT|關聯式資料庫與 SQL 適用年級 中五(S5)ICT 02 題目(10 題) 基礎Sales 表有 1 000 列,其中 cat = ‘A’ 有 250 列。執行 `UPDATE Sales SET price = price * 1.1 WHERE cat = ‘A’;` 會影響幾列?其餘列會變嗎? 基礎同一張 1 000 列的 Sales 表,執行 `DELETE FROM Sales WHERE year < 2020;`,year < 2020 有 180 列。刪除後剩幾列? 基礎第一正規化(1NF)要求每一格儲存甚麼?把「電話」一欄寫成 “9123 4567, 9876 5432” 違反了哪一條? 基礎外鍵與主鍵在「可否重複」上有何分別?刪除被引用的父列時,資料庫通常會怎樣做? 進階選課表的主鍵是(student_id, course_id),而 course_title 只由 course_id 決定。這違反第幾正規化?應該怎樣拆? 進階講師表的主鍵是 teacher_id,而 dept_name 只由 dept_code 決定,dept_code 又相依於 teacher_id。這是哪一種相依、違反第幾正規化? 進階索引欄的選擇性(selectivity)怎樣計?某欄 1 000 列中有 250 個不同值,選擇性是?選擇性高還是低較適合建索引? 挑戰B-tree 索引每個節點可放 100 個鍵(fan-out 100)。1 000 列的索引樹最少幾層?一層與兩層分別可覆蓋多少列? 挑戰兩表分別 1 000 及 500 列。Nested loop join 最多要做多少次比較?若改用 hash join(先建雜湊表再掃描),大約多少次? 錯題重練錯題重練:有同學說「索引越多,查詢一定越快,所以每欄都建索引」。正確講法? 03 答案與一句解說 題號 答案 一句解說 1 影響 250 列;其餘 750 列價格不變 UPDATE 只改 WHERE 命中的列,未命中的列完全不動;影響列數可直接用 SELECT COUNT(*) 預核。 2 剩 820 列 刪除列不會刪欄,剩餘列數 = 1 000 − 180。 3 每格只存一個原子值(不可再分);該欄違反 1NF,屬多值屬性 一格放兩個號碼就無法用單一條件篩選或加索引,查詢會變成字串比對。 4 主鍵不可重複、外鍵可以重複;刪父列會被拒(RESTRICT)或連帶處理(CASCADE/SET NULL),視設定 這就是參照完整性(referential integrity):不允許出現指向不存在父列的孤兒列。 5 違反 2NF(部分相依);把 course_id、course_title 拆成獨立的 Course 表 2NF 要求非主鍵欄完全相依於整個主鍵,只靠主鍵一部分就成立的要另立一表。 6 遞移相依(teacher_id → dept_code → dept_name),違反 3NF;把部門另立一表 3NF 要求非主鍵欄不可經另一個非主鍵欄間接決定,否則改一個部門名要更新多列。 7 選擇性 = 不同值 ÷ 總列數 = 250 ÷ 1 000 = 25%;高選擇性(接近 1)較適合 選擇性低代表一個值命中大量列,索引掃描反而不如全表掃描。 8 2 層;一層覆蓋 100 列,兩層覆蓋 10 000 列 100 的 1 次方 100 少於 1 000,2 次方 10 000 才夠,所以樹高 2。 9 Nested loop 最多 1 000 × 500 = 500 000 次;hash join 約 1 000 + 500 = 1 500 次 Nested loop 是每列對每列;hash join 建表加掃描各一次,所以是線性相加。 10 不是;索引加快讀取但拖慢 INSERT/UPDATE/DELETE、佔用儲存,亦可能不被優化器選用;只在高選擇性且常作條件或連接的欄建 每次寫入都要同步更新所有相關索引,索引過多會令寫入成本與儲存空間一齊上升。 04 做完之後怎樣跟進 對完答案,只重做錯的那幾題,並在錯題旁寫出錯在哪一步(公式、單位還是抄錯數)。 同一題隔兩日再做一次;兩次都對才可以移到下一份練習。 家長只需看答案欄與解說欄,不必逐題講解。 想找導師跟進這一章?按此登記導師登記 → 本卷題目與答案由 TutorZone 團隊原創編寫,並非任何學校、出版社或考試局的試題;數值與答案均以程式核算。