4.4 · DBMS 資料庫基礎
目標: 解釋 DBMS 做什麼、創建一個帶表單和報表的簡單資料庫、並理解它與電子表格的差異。
什麼是 DBMS?
資料庫管理系統(DBMS)是讓你創建、查詢、修改和保護資料庫的軟件。常見 DBMS:
- MySQL / MariaDB —— 開源,對 Web 友好
- PostgreSQL —— 開源,特性豐富
- SQLite —— 文件型,嵌入應用
- Microsoft Access —— 桌面,校園流行
- Oracle / SQL Server —— 企業級
不管用哪個 DBMS,核心思想都一樣:表、行、列、查詢。
電子表格 vs 資料庫
| 方面 | 電子表格 | 資料庫 (DBMS) |
|---|---|---|
| 儲存單位 | 單元格 | 行 / 記錄 |
| 實際最大規模 | 幾十萬 | 數百萬 + |
| 併發用户 | 一次幾個 | 同時多人 |
| 資料完整性 | 寬鬆 | 強制(資料類型、鍵、約束) |
| 查詢語言 | 公式 | SQL |
| 關係 | 手動查找 | 外來鍵、連接 |
| 多用户編輯 | 危險 | 設計就是為此 |
經驗法則:資料超過 5 萬行或多表時,離開電子表格用 DBMS。
一個簡單例子 · 會員資料庫
設想一個體育會,需要三張表:
表 Member
| member_id | name | dob | class |
|---|---|---|---|
| 1001 | Alice Chan | 2007-05-12 | F.4A |
| 1002 | Bob Wong | 2008-03-22 | F.4B |
| 1003 | Carol Yip | 2007-11-08 | F.4A |
表 Sport
| sport_id | name | coach |
|---|---|---|
| 1 | Basketball | Mr. Lee |
| 2 | Swimming | Ms. Wong |
表 Enrol(連接 / 關聯表)
| member_id | sport_id | join_date |
|---|---|---|
| 1001 | 1 | 2024-09-01 |
| 1001 | 2 | 2024-09-15 |
| 1002 | 2 | 2024-10-03 |
表單 —— 友好的資料錄入
表單是不暴露原始表,便於輸入單條記錄的 UI。
┌──────────── 新增會員 ────────────┐
│ Member ID : [ 1004 ] │
│ Name : [ Daisy Tam ] │
│ DOB : [ 2008-01-14 ] │
│ Class : [ F.4B ▼ ] │
│ │
│ [ Save ] [ Cancel ] │
└──────────────────────────────────┘1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
表單通常帶 validation 規則(如班級下拉、出生日期選取器),用户輸入不進垃圾。
查詢 —— 得到答案
查詢從一個或多個表中取出選定資料。底層用 SQL(下一節講)。多數 DBMS 也提供圖形查詢構建器。
會員資料庫上的常用查詢:
- 找所有 F.4A 會員。
- 數每項運動的會員數。
- 列出尚未報名任何運動的會員。
- 顯示 2008 年出生的會員。
報表 —— 排版好的輸出
報表基於查詢的、格式化的、可列印的視圖。
══════════════════════════════════════════
會員報表 —— 生成於 2026-06-24
══════════════════════════════════════════
F.4A
1001 Alice Chan Basketball, Swimming
1003 Carol Yip Basketball
F.4B
1002 Bob Wong Swimming
══════════════════════════════════════════1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
報表通常含頁眉、頁腳、分組合計、頁碼、動態日期。
一個典型資料庫任務的生命週期
1. 定義模式 (決定表與列)
2. 創建表 (SQL 的 CREATE TABLE)
3. 設計表單 (供用户的錄入 UI)
4. 錄入資料 (透過表單或導入)
5. 跑查詢 (回答業務問題)
6. 生成報表 (列印 / 分享)
7. 維護與備份 (定期備份)1
2
3
4
5
6
7
2
3
4
5
6
7
這就是你 SBA 任務 1 的工作流。
DBMS 為何比電子表格更安全
| 風險 | 電子表格 | DBMS |
|---|---|---|
| 兩人同改一行 | 最後保存者勝 | 鎖定防衝突 |
| 誤刪 | 公式藏一下 | 外來鍵可阻止刪除 |
| 資料類型錯 | 允許 | 按列類型拒絕 |
| 單文件損壞 | 高 | 事務日誌 + ACID 保證 |
| 資料巨增 | 慢 / 崩 | 設計就為大資料 |
學生常見錯誤
- 把 Excel 稱為 DBMS —— 它是電子表格程序;與之相關的 DBMS 是 Microsoft Access。
- 混淆記錄(行)與欄位(列)。
- SBA 不用表單 —— 直改表混亂易錯。
- 一張表 30+ 列的巨表,而不是拆成多張關聯表。
練習活動
為一個小圖書館系統,決定你需要哪些表以及每張表含哪些欄位:
建議
- Book(
isbn, title, author, copies) - Member(
member_id, name, class, joined_on) - Loan(
loan_id, member_id, isbn, loan_date, due_date, return_date) - 可選:Fine(
fine_id, loan_id, amount, paid_on)
考試式題目
題(5 分): 學校要把學生出勤記錄從 Excel 搬到 MySQL 這類 DBMS。描述用 DBMS 相比電子表格的兩個好處,並解釋表單和查詢如何幫校務人員。
參考答案:
DBMS 的兩個好處:
- 多用户併發 —— 多位老師可同時提交出勤而不會互相覆蓋,單個 Excel 文件做不到。
- 資料完整性 —— 列類型與外來鍵拒絕無效條目(如不能為不存在的學生記出勤),保證報表更乾淨。
表單為老師提供貼心的 UI:班級下拉、日期日曆、出席單選按鈕。表單屏蔽老師面對原始表的複雜並強制 validation。查詢讓校務人員即時回答問題:「這學期缺課超過 5 次的學生是誰?」或「顯示今天每班的出勤率。」沒查詢的話員工要手動滾動並數行。
關鍵要點
- DBMS = 管理資料庫的軟件;底層儲存 = 表、行、列。
- 用表單安全錄入資料。
- 用查詢提問。
- 用報表分享格式化答案。
- 電子表格在你撐得住時還行;DBMS 能擴展。
➡️ 下一節:4.5 讀簡單 SQL