3.3 数据库的设计
数据库设计的六个阶段
摘要:数据库设计通常划分为需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行与维护六个阶段。本文按顺序梳理各阶段的产出物、工作步骤与关键要点,并用「校园二手书交易平台」的例子串讲全过程。
适用:数据库原理课程复习、软考或期末考试、面试前的快速梳理
一、整体框架
数据库设计分为六个阶段:
需求分析 → 概念结构设计 → 逻辑结构设计 → 物理结构设计 → 数据库实施 → 数据库运行与维护
前两个阶段面向现实世界与用户需求,解决"人需要什么";后四个阶段面向机器实现,解决"数据怎么存、怎么取"。越靠前的阶段出错,返工代价越大,因此需求分析与概念设计往往是最困难、最耗时的环节。
二、需求分析
1. 任务
准确了解与分析用户对数据和处理的各项需求,形成后续设计的基础依据。
2. 需要获取的三方面要求
| 要求 | 含义 | 举例 |
|---|---|---|
| 信息要求 | 用户需要从数据库中获得哪些信息 | 要保存学生、书籍、留言、订单等信息;能查到某门课的在售教材 |
| 处理要求 | 用户需要完成哪些数据处理功能及性能期望 | 按书名检索、统计在售数量、超时未成交自动下架、响应时间在 2 秒内 |
| 安全性与完整性要求 | 谁能访问什么数据(安全性);数据必须满足哪些约束(完整性) | 只有本人能删除自己的帖子;书籍必须归属真实存在的学生;价格不能为负 |
3. 常用工具与产出物
- 数据流图(DFD):描述数据在系统中的流动、加工与存储过程。
- 数据字典(DD):给每个数据项"上户口",包括名字、别名、类型、长度、取值范围与含义。
- 需求说明书:最终交付文档,需经用户确认。
💡 通俗理解:需求分析就是先别急着画表,先把"要存什么、要算什么、谁能动什么"问清楚。
三、概念结构设计
1. 任务
对需求进行综合、归纳与抽象,形成独立于任何具体 DBMS 的概念模型,最常用的表示方法是 E-R 图(实体—联系图)。
2. E-R 图的三要素
E-R 图 = 实体(矩形)+ 属性(椭圆)+ 联系(菱形,带基数比 1:1 / 1:n / m:n)
由于 E-R 图不涉及具体的表结构、字段类型和存储方式,因此它与物理实现无关,同一张 E-R 图可以映射到 MySQL、Oracle 或 PostgreSQL 等不同的数据库系统。
3. 工作步骤
- 选择局部应用:把大系统划分成若干相对独立的子系统或模块。
- 逐一设计分 E-R 图:为每个局部应用画一张分图。
- 合并分 E-R 图:将各分图整合成一张全局 E-R 图,并解决冲突。
- 优化:消除冗余的数据与冗余的联系(这一步常被遗漏)。
4. 合并时的三类冲突
| 冲突类型 | 本质 | 样例 | 解决办法 |
|---|---|---|---|
| 属性冲突 | 同一属性在不同分图中定义不一致 | "价格"一处用元(DECIMAL),一处用分(INT);"学号"一处是字符串,一处是数字 |
统一类型、单位与取值范围 |
| 命名冲突 | 同名异义 / 异名同义 | 同一含义叫"买家"和"下单学生";同名"ID"一处指学号、一处指书号 | 统一命名规范,逐个对齐语义 |
| 结构冲突 | 同一对象抽象层次不同 | "学院"在 A 图中是实体(有院长、楼号),在 B 图中只是学生的一个属性 | 需描述其自身信息就升格为实体,否则降级为属性 |
四、逻辑结构设计
1. 任务
把概念结构转换为某个具体 DBMS 所支持的数据模型(通常是关系模型),并对其进行优化。
2. 工作步骤
- 将概念模型转换为一般的数据模型(关系模型)。
- 转换为特定 DBMS 支持的数据模型(考虑其类型、长度、约束支持能力)。
- 用规范化理论进行优化(1NF → 2NF → 3NF / BCNF)——这是逻辑设计的核心环节。
- 设计用户外模式(用户视图)。
- 确定各类完整性约束:实体完整性、参照完整性、用户定义完整性。
3. E-R 图转关系模式的三条规则
| E-R 成分 | 转换方法 |
|---|---|
| 实体 | 每个实体转成一张关系模式(表),主码作为主键 |
| 1:n 联系 | 把"1 端"的主码作为外码放入"n 端"的表中 |
| m:n 联系 | 必须单独建一张表,包含两端实体的主码及联系自身的属性 |
4. 规范化的意义(样例)
若设计成 书籍(书号, 书名, 课程号, 课程名, 授课教师),由于"课程名、授课教师"依赖于"课程号"而非主码"书号",存在传递依赖,会导致:
- 同一门课的信息被重复存储(数据冗余)
- 教师改名时需要修改多行(更新异常)
- 新课没有书籍时无法录入课程信息(插入异常)
拆分为以下两张表即可达到 3NF:
书籍(书号, 书名, 课程号)课程(课程号, 课程名, 授课教师)
五、物理结构设计
1. 任务
为已确定的逻辑模型选取最适合应用环境的物理结构,并对方案进行评价。此阶段产出的是设计方案,而不是数据库本身。
2. 主要内容
- 存储结构:选择堆文件、聚簇索引、散列存储等。
- 存取方法:决定在哪些列上建索引、是否采用聚簇。
- 数据分布:确定表存放在哪个磁盘或表空间,是否需要分离冷热数据。
3. 方案评价
从时间效率、空间效率、维护代价三个维度权衡,选出最优方案后,才进入实施阶段。
⚠️ 注意:执行 DDL 建库建表、导入数据属于下一个阶段(数据库实施),不属于物理设计。
六、数据库实施
数据库设计人员根据逻辑设计与物理设计的结果,完成以下工作:
- 使用 DDL 建立数据库结构(库、表、索引、视图、约束)。
- 编制与调试应用程序。
- 组织数据入库(初始数据的导入与迁移)。
- 进行试运行,检验功能与性能是否达标。
CREATE TABLE 书籍 (
书号 CHAR(10) PRIMARY KEY, -- 实体完整性
书名 VARCHAR(100) NOT NULL,
课程号 CHAR(8),
价格 DECIMAL(8,2) CHECK (价格 >= 0), -- 用户定义完整性
新旧程度 VARCHAR(20),
发布者学号 CHAR(10) REFERENCES 学生(学号) -- 参照完整性
);
CREATE INDEX idx_书名 ON 书籍(书名); -- 物理设计的落地
七、数据库运行与维护
系统投入运行后,需要持续进行评价、调整与修改,主要包括:
- 转储与恢复:定期备份,故障时恢复数据。
- 安全性与完整性维护:调整权限、增删约束。
- 性能监测与调优:根据实际负载增删索引、拆分表、改写慢查询。
- 数据库重组与重构:碎片整理、因业务变化而修改模式结构。
八、全程串讲:校园二手书交易平台
| 阶段 | 做了什么 | 产出 |
|---|---|---|
| 需求分析 | 调研得出:学生发布闲置教材、按课程名或书名搜索、在线留言、交易完成确认、管理员审核违规帖 | DFD、数据字典、需求说明书 |
| 概念设计 | 识别实体:学生、书籍、订单;识别联系:发布(1:n)、下单(m:n)、回复留言(自联系);合并分图并消除冲突与冗余 | 全局 E-R 图 |
| 逻辑设计 | 转换:学生(学号,姓名,学院号)、书籍(书号,书名,课程号,价格,发布者学号)、订单(订单号,买家学号,书号,成交时间);规范化拆分课程;设计视图 |
关系模式 + 完整性约束 + 外模式 |
| 物理设计 | 书名列建索引、历史订单表另存磁盘、评价查询速度与空间占用 | 物理结构方案 |
| 实施 | 执行 DDL、编写后端程序、批量导入教务学生数据、找几十个同学试运行一个月 | 可运行的系统 |
| 运维 | 每日备份、考试季加索引、新增"以物换物"功能时重构模式 | 持续迭代的稳定系统 |
九、要点速记
六阶段口诀
问需求(DFD + DD + 说明书)→ 画概念(E-R,独立于 DBMS)→ 转逻辑(关系模式 + 规范化 + 视图)→ 定物理(存储 + 存取 + 评价)→ 实施(建库 + 程序 + 入库 + 试运行)→ 运维(评价调整修改)
三个易错点
- 需求的三方面要求是信息要求、处理要求、安全性与完整性要求。
- E-R 图必须包含联系及其基数比,合并后还要做一步消除冗余。
- 物理设计产出的是方案与评价,真正建库、导数据、试运行属于实施阶段。
下一期想看「E-R 图转关系模式的完整规则表」还是「范式判断的实战练习题」?欢迎留言告诉我。

浙公网安备 33010602011771号