資料庫概念
基礎資料庫有組織地存大量資料:資料表分記錄(行)與欄位(列);主鍵唯一辨識每筆記錄(學號,不是姓名)。關聯式資料庫多表互連;大量、多人、要防錯的資料用資料庫,細量個人計算用試算表。
- 資料庫有組織地存大量資料;DBMS 是管理它的軟件。
- 資料表:橫行是記錄(一個個體),直列是欄位(一項屬性)。
- 主鍵唯一辨識每筆記錄:不重複、不空、不變 — 學號,不是姓名。
文體小知識:原理講解課先講清楚概念和規則,再用實例演示,令抽象的設計方法變得具體易明。
§課文原文 Passage
1資料庫(Database)是有組織地儲存大量資料的系統,由資料庫管理系統(DBMS)負責存取。核心是資料表(Table):外形像試算表的工作表,每一行是一筆記錄(Record,例如一位學生的全部資料),每一列是一個欄位(Field,例如姓名、班別、分數)。
2每張表都要有主鍵(Primary Key):一個不會重複、不會空的欄位用來唯一辨識每筆記錄,例如學號 2023001、2023002。姓名可以做主鍵嗎?不行 — 一個班可以有兩個小明;學號才認得準人。關聯式資料庫(Relational Database)更進一步:多張表透過共同的欄位互相連接,例如成績表只存學號,要用姓名時就靠學號連回學生表查。
3和試算表比較:試算表適合個人或小組處理幾十至幾百行資料、重視計算和畫圖;資料庫適合幾萬至幾百萬行、多人同時讀寫、要快速搜尋和防止錯誤輸入的場合。學校圖書館幾十萬本書的目錄、全港學生的成績系統,都一定要用資料庫。
4日常生活中資料庫無處不在:八達通的每一程交易紀錄、醫院管理局的預約系統、網店的訂單和存貨,背後全是資料庫在運作。跟資料庫溝通有一套標準語言叫 SQL(結構化查詢語言)— 下一課就會學到用它查詢資料。
1重點摘要 Summary
資料庫有組織地存大量資料:資料表分記錄(行)與欄位(列);主鍵唯一辨識每筆記錄(學號,不是姓名)。關聯式資料庫多表互連;大量、多人、要防錯的資料用資料庫,細量個人計算用試算表。
2生字卡 Vocabulary
有組織地儲存和管理大量資料的系統,方便搜尋、更新和防止錯誤。
資料庫中儲存同一類資料的二維結構,由行(記錄)與列(欄位)組成。
資料表中的一行,代表一個完整個體的全部資料,例如一位學生。
資料表中的一列,代表資料的一項屬性,例如姓名、班別。
唯一辨識每筆記錄、不重複又不可空的欄位,例如學號。
多張資料表透過共同欄位互相連接的資料庫,例如成績表用學號連學生表。
管理資料庫的軟件,處理存取、權限和搜尋,例如 MySQL、SQLite。
向資料庫提出的要求,例如「列出 3A 班全部學生」,通常用 SQL 寫成。
同一份資料重複儲存在多處,容易造成更新後不一致的問題。
3逐步講解 Steps
- 認識一張學生表資料庫的核心是資料表,外形與試算表相似。以學生表 students 為例:它有三個欄位,分別是學號、姓名和班別;表頭一行列出欄位名稱,下面的每一行是一筆記錄,例如(2023001, 小明, 3A)、(2023002, Mary, 3B)、(2023003, 阿強, 3A)。記住口訣:表頭是欄位,每行是一名學生的完整資料。看懂一張表的結構,是學習資料庫的第一步。
- 分辨記錄和欄位記錄和欄位最易混淆。在上述學生表中,「(2023002, Mary, 3B)」這一行是一筆記錄,代表一名學生的全部資料;「班別」這一直列是一個欄位,代表所有學生的同一類資料。口訣:行是個體,列是屬性;一行一名學生,一列一項資料。考試常給一張表,要求指出某位置是記錄還是欄位,先想那是一個「人」還是一種「資料類別」,答案便清楚了。
- 主鍵如何選主鍵是用來唯一辨識每筆記錄的欄位。假設表中有兩位同名的小明,學號分別是 2023001 和 2023004:用姓名辨識便會認錯人;用學號就一定準確。主鍵的條件有三個:不重複、不可以空、最好永遠不變。姓名會重複、電話可以更改,都不適合做主鍵;學號由學校編配之後不再改變,是理想的主鍵。每張表都必須有主鍵,這是考試的必考點。
- 關聯式資料庫連表關聯式資料庫把資料分拆到多張表,再靠共同欄位連接。例如成績表只記(學號 2023001, 數學, 85),並不儲存姓名;要顯示姓名時,資料庫用 2023001 回到學生表查出「小明」。兩張表靠學號連接,姓名不必重複儲存,避免冗餘:改名時只需修改學生表一處,所有成績記錄自動配合。這種設計令資料保持一致,是關聯式資料庫的最大優點。
- 資料庫 vs 試算表試算表和資料庫各有所長。分析一個 40 人班的分數,用 Excel 十分鐘便解決;但全港 40 萬名學生的成績、幾百位老師同時輸入、還要防止班別欄被輸入「3Z」這類錯誤值,就必須用資料庫,因為它擅長多人同時存取、快速搜尋大量資料和執行資料完整性規則。簡單記法:資料少、自己用,選試算表;資料多、多人用、要防錯,選資料庫。
- 資料完整性規則資料庫可以為每個欄位設定規則,防止錯誤資料進入:分數必須是 0 至 100 之間的數字;班別必須是 3A 至 3E;學號不可以留空。任何違反規則的輸入,資料庫都會拒絕,從源頭防止垃圾資料。試算表則依賴使用者自律,錯誤一旦輸入便難以察覺。考試常問「為什麼學校系統用資料庫而不用 Excel」,答案要提到資料完整性、多人存取和大量資料三點。
- 想像一個查詢資料庫的強項是查詢。老師想知道「3A 班數學 80 分以上的學生」:在試算表要人手篩選幾步;在資料庫一句 SQL 便搞定:SELECT name FROM students WHERE class = '3A' AND score >= 80。這句話的意思是「從 students 表選出班別是 3A 而且分數達 80 的姓名」。下一課會逐字學習 SQL 的寫法;現在只需記住:SQL 是與資料庫溝通的標準語言。
4圖解 Diagrams
5例題示範 Example
例題:為學校圖書館設計一張「借閱記錄表」,列出合適的欄位並指出主鍵,說明它如何與其他表關聯。
- 第一步列出需要的欄位:借閱編號、學號、書籍編號、借出日期、歸還日期;每個欄位對應一項需要保存的資料。
- 第二步選主鍵:借閱編號每次借閱唯一,不重複也不會空;學號和書籍編號都會重複,因為同一人可以借多本書,同一本書可以被多人借,兩者都不能做主鍵。
- 第三步設關聯:學號連到學生表查出借書人姓名;書籍編號連到圖書表查出書名;借閱表本身不必重複儲存姓名和書名,避免冗餘。
- 第四步加完整性規則:借出日期不可以空;歸還日期未還時留空,已還時必須不小於借出日期;違反規則的輸入一律拒絕。
- 答案:借閱記錄表的欄位為借閱編號(主鍵)、學號、書籍編號、借出日期、歸還日期;主鍵是借閱編號,因為只有它不重複、不會空;透過學號和書籍編號分別關聯學生表和圖書表,借閱表本身不重複儲存姓名和書名;再加完整性規則防止錯誤輸入,設計便告完成。
6常見錯誤 Mistakes
75 題快測 Quick check
Q1資料表中,橫的一行和直的一列分別叫什麼?
Q2以下哪個最適合做學生表的主鍵?A. 姓名 B. 學號 C. 班別
Q3成績表只存學號不存姓名,有什麼好處?
Q4全班 40 人的測驗分分析,和全港 40 萬學生多人同時輸入的成績系統,各適合用什麼工具?
Q5「分數欄只接受 0 至 100 的數字」屬於資料庫的什麼機制?
8重點回顧 Recap
- 資料庫有組織地存大量資料;DBMS 是管理它的軟件。
- 資料表:橫行是記錄(一個個體),直列是欄位(一項屬性)。
- 主鍵唯一辨識每筆記錄:不重複、不空、不變 — 學號,不是姓名。
- 關聯式資料庫多表靠共同欄位連接,避免同一資料重複儲存。
- 細量個人計算用試算表;大量、多人、要防錯的資料用資料庫。