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