AIGC标识 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. 工作步骤

  1. 选择局部应用:把大系统划分成若干相对独立的子系统或模块。
  2. 逐一设计分 E-R 图:为每个局部应用画一张分图。
  3. 合并分 E-R 图:将各分图整合成一张全局 E-R 图,并解决冲突。
  4. 优化:消除冗余的数据与冗余的联系(这一步常被遗漏)。

4. 合并时的三类冲突

冲突类型 本质 样例 解决办法
属性冲突 同一属性在不同分图中定义不一致 "价格"一处用元(DECIMAL),一处用分(INT);"学号"一处是字符串,一处是数字 统一类型、单位与取值范围
命名冲突 同名异义 / 异名同义 同一含义叫"买家"和"下单学生";同名"ID"一处指学号、一处指书号 统一命名规范,逐个对齐语义
结构冲突 同一对象抽象层次不同 "学院"在 A 图中是实体(有院长、楼号),在 B 图中只是学生的一个属性 需描述其自身信息就升格为实体,否则降级为属性

四、逻辑结构设计

1. 任务

把概念结构转换为某个具体 DBMS 所支持的数据模型(通常是关系模型),并对其进行优化。

2. 工作步骤

  1. 将概念模型转换为一般的数据模型(关系模型)。
  2. 转换为特定 DBMS 支持的数据模型(考虑其类型、长度、约束支持能力)。
  3. 用规范化理论进行优化(1NF → 2NF → 3NF / BCNF)——这是逻辑设计的核心环节。
  4. 设计用户外模式(用户视图)。
  5. 确定各类完整性约束:实体完整性、参照完整性、用户定义完整性。

3. E-R 图转关系模式的三条规则

E-R 成分 转换方法
实体 每个实体转成一张关系模式(表),主码作为主键
1:n 联系 把"1 端"的主码作为外码放入"n 端"的表中
m:n 联系 必须单独建一张表,包含两端实体的主码及联系自身的属性

4. 规范化的意义(样例)

若设计成 书籍(书号, 书名, 课程号, 课程名, 授课教师),由于"课程名、授课教师"依赖于"课程号"而非主码"书号",存在传递依赖,会导致:

  • 同一门课的信息被重复存储(数据冗余)
  • 教师改名时需要修改多行(更新异常)
  • 新课没有书籍时无法录入课程信息(插入异常)

拆分为以下两张表即可达到 3NF:

  • 书籍(书号, 书名, 课程号)
  • 课程(课程号, 课程名, 授课教师)

五、物理结构设计

1. 任务

为已确定的逻辑模型选取最适合应用环境的物理结构,并对方案进行评价。此阶段产出的是设计方案,而不是数据库本身。

2. 主要内容

  • 存储结构:选择堆文件、聚簇索引、散列存储等。
  • 存取方法:决定在哪些列上建索引、是否采用聚簇。
  • 数据分布:确定表存放在哪个磁盘或表空间,是否需要分离冷热数据。

3. 方案评价

从时间效率、空间效率、维护代价三个维度权衡,选出最优方案后,才进入实施阶段。

⚠️ 注意:执行 DDL 建库建表、导入数据属于下一个阶段(数据库实施),不属于物理设计。


六、数据库实施

数据库设计人员根据逻辑设计与物理设计的结果,完成以下工作:

  1. 使用 DDL 建立数据库结构(库、表、索引、视图、约束)。
  2. 编制与调试应用程序。
  3. 组织数据入库(初始数据的导入与迁移)。
  4. 进行试运行,检验功能与性能是否达标。
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)→ 转逻辑(关系模式 + 规范化 + 视图)→ 定物理(存储 + 存取 + 评价)→ 实施(建库 + 程序 + 入库 + 试运行)→ 运维(评价调整修改)

三个易错点

  1. 需求的三方面要求是信息要求、处理要求、安全性与完整性要求。
  2. E-R 图必须包含联系及其基数比,合并后还要做一步消除冗余。
  3. 物理设计产出的是方案与评价,真正建库、导数据、试运行属于实施阶段。

下一期想看「E-R 图转关系模式的完整规则表」还是「范式判断的实战练习题」?欢迎留言告诉我。

posted @ 2026-10-28 16:42  渡solong~  阅读(8)  评论(0)    收藏  举报