主题
数据库系统概述
这是第一讲。学完它,你能回答这门课最常考的第一道概念题:什么是数据库、DBMS 干什么、三级模式怎么画——并且在本机装好 MySQL、建出第一个数据库。
先记住一句话:数据库管理系统(DBMS)是"管数据的软件",数据库(DB)是"被管的数据",数据库系统(DBS)是"数据 + 软件 + 硬件 + 人"的整体。 这三个词的包含关系是选择题常客。
一、为什么不用文件
用文件(Excel、txt)存数据,早期够用,但数据量一大、共用的人一多,四个问题立刻暴露:
| 问题 | 具体表现 |
|---|---|
| 冗余与不一致 | 同一份学生信息存了三个文件,改了一处忘改另外两处 |
| 访问困难 | 每种查询都要写专门程序,没有统一的查询语言 |
| 数据孤立 | 信息分散在不同文件里,关联起来费劲 |
| 完整性与安全 | "年龄必须是正整数"这种规则散落在各个程序里,没人保证;谁能看哪列也没有控制 |
DBMS 就是为解决这四个问题而生:集中存储、统一管理、统一查询语言(SQL)、统一施加完整性与安全约束。
🧠 记忆锚点:数据库系统 = 数据库 + DBMS + 应用程序 + 用户(DBA)。考试问"数据库系统的核心是____",答 DBMS。
二、数据库系统的分层数据视图
从使用者的角度看,数据有三个层次——这是本讲最重要的图,很多学校期末直接让你画:
text
用户 A 用户 B 用户 C ← 应用程序 / 用户
┌────────┐ ┌────────┐ ┌────────┐
│ 外模式 │ │ 外模式 │ │ 外模式 │ ← 外模式(用户视图,可有多个)
└────┬───┘ └────┴───┘ └────┴───┘
│ 外模式/模式映像(保证逻辑独立性)
┌────┴───────────────────────────┐
│ 模式(概念模式) │ ← 全体数据的逻辑结构,只有一个
└────┬───────────────────────────┘
│ 模式/内模式映像(保证物理独立性)
┌────┴───────────────────────────┐
│ 内模式(存储结构、索引、压缩) │ ← 数据怎么存,只有一个
└────────────────────────────────┘- 外模式(子模式/用户模式):某个用户能看到的那部分数据的逻辑描述。视图(VIEW)就是典型外模式
- 模式(概念模式):全体数据的全局逻辑结构,比如全部表的定义。一个数据库只有一个
- 内模式(存储模式):数据物理上怎么存——顺序存放还是哈希、建什么索引。一个数据库也只有一个
三、两层映像与两级独立性
模式之间靠"映像"连接,映像的意义只有一句话:换一层不影响另一层。
| 映像 | 连接 | 带来的独立性 | 例子 |
|---|---|---|---|
| 外模式/模式映像 | 外模式 ↔ 模式 | 逻辑独立性:表的逻辑结构变了(如拆表),只需改映像,应用程序不用重写 | 给 student 表加一列,老视图和查询照常工作 |
| 模式/内模式映像 | 模式 ↔ 内模式 | 物理独立性:换了存储方式、加了索引,逻辑结构不变,应用无感 | 给表建了个新索引,SQL 一个字都不用改 |
🧠 记忆锚点:映像保独立,外/模保逻辑,模/内保物理。 外模式可以多个,模式和内模式各只有一个——"一个两个"的选择题年年考。
四、数据模型:三种层次 + 一句话记住每种
数据模型是对现实世界的抽象,分两步两级:
- 概念模型:面向用户,描述"有什么"——代表:ER 模型(第五讲的主角)
- 逻辑模型:面向 DBMS,描述"怎么组织"——关系模型(本课绝对主角)、层次模型(树)、网状模型(图)
- 物理模型:面向存储
关系模型为什么赢了?它用一张张二维表表达一切,数学基础是集合论,用户无需关心存储。 一个关系就是一张表,一行是一个元组,一列是一个属性,属性的取值范围叫域。
五、DBMS 的核心功能与系统结构
一个现代 DBMS(MySQL、PostgreSQL、Oracle 都是)至少提供:
- 数据定义(DDL):建表改表
- 数据操纵(DML):增删改查
- 查询处理:把你写的 SQL 优化成高效执行计划
- 事务管理:保证多条语句要么全成、要么全不算(第六讲)
- 完整性与安全:约束、视图、权限
从结构上看是典型的 C/S:客户端发 SQL → 服务器解析、优化、执行 → 访问存储、返回结果。你装的 MySQL 就是服务器端(mysqld 进程),Workbench 或命令行 mysql 是客户端。
六、动手:装好 MySQL 并建出第一个库
💡 动手实验:到 dev.mysql.com/downloads 装 MySQL 8 社区版(安装时记住 root 密码),装完打开命令行:
bashmysql -u root -p登录后依次执行——你的第一个数据库和第一张表:
sqlCREATE DATABASE course CHARACTER SET utf8mb4; -- 建库,字符集 utf8mb4 支持全部中文与表情 USE course; -- 后续语句都在这个库里执行 CREATE TABLE student ( -- 建表:学号、姓名、性别、年龄 sno CHAR(10) PRIMARY KEY, sname VARCHAR(20) NOT NULL, ssex CHAR(2) DEFAULT '男', sage INT CHECK (sage BETWEEN 14 AND 45) ); INSERT INTO student VALUES ('2026001', '张三', '男', 19); SELECT * FROM student; -- 查询:你应该看到张三那行这 6 条语句覆盖了 DDL(CREATE)、DML(INSERT)和查询(SELECT)三大类。从第二讲开始,我们围绕这张
student表把关系模型讲透。
小结
- 三个词的包含关系:DBS ⊃ DBMS ⊃ DB;数据库系统的核心是 DBMS
- 三级模式:外模式(多)、模式(一)、内模式(一);两层映像带来逻辑独立性与物理独立性
- 数据模型两级抽象:概念模型(ER)→ 逻辑模型(关系模型)→ 物理模型
- 关系模型的一切都是二维表:关系 = 表,元组 = 行,属性 = 列,域 = 取值范围
下一讲把"表"这个概念用数学语言钉死:候选键、主键、外键和三类完整性约束——关系模型与完整性。