Skip to content

第2章:结构化分析

2.4 数据字典 (DD)

💡 导读

在前面的章节中,我们已经学习了结构化分析(SA)的三大核心图形模型:

  1. 数据流图 (DFD):描述系统的功能与数据流向。
  2. E-R 图:描述系统的静态数据与实体关系。
  3. 状态转换图 (STD):描述系统的动态行为与状态控制。

这三张图构成了系统的“骨架”,但图形本身无法表达精确的底层细节(例如:“学号”到底有几位?“订单”到底包含哪些字段?)。本章要学习的 数据字典 (DD),正是为这些骨架填充血肉的“基因代码”。

1. 什么是数据字典?

【专业定义】数据字典(Data Dictionary, DD)是结构化分析方法中,对系统中出现的所有数据元素、数据流、数据存储和处理逻辑进行严格、详细、无歧义定义的文字说明集合。它本质上是一个**“元数据(Metadata,即关于数据的数据)”的仓库**。

【通俗理解】 如果说 数据流图(DFD) 是一张宏观的“物流路线图”,标明了货物从哪里发往哪里;那么 数据字典(DD) 就是每辆物流车上的“装箱清单”和“货物规格说明书”。

📌 重要警示

在实际软件工程中,前端工程师、后端工程师和数据库管理员对同一个业务词汇的理解往往不同。数据字典是全团队唯一的度量衡和契约,缺乏精确的数据字典,系统在后期集成阶段必然会因为数据格式不一致而导致严重错误。


2. 数据字典的四大核心条目

数据字典主要负责精准解释 DFD 中的各个元素,为了保证全面性,它通常被划分为以下四类核心条目:

数据项 (Data Item) 底层基础

  • 深度定义:系统中最基础、不可再分的最小数据单位(又称原子数据)。它是所有复杂数据的基石。
  • 必备属性:数据项名称、别名、数据类型(如:整型、字符型、日期型)、长度、取值范围或约束条件。
  • 详细示例

    名称:读者证件号 别名:Reader_ID 类型:字符型 (String) 长度:10 位 约束:非空,且唯一。

数据结构 (Data Structure) 组合单元

  • 深度定义:由若干个关联的“数据项”或较小的“子数据结构”组合而成的数据集合,用于描述某一具体业务实体的全貌。
  • 必备属性:结构名称、组成结构说明。
  • 详细示例

    名称:读者基本信息 组成:读者证件号 + 姓名 + 读者类别 + 联系电话 + (电子邮箱)

数据流 (Data Flow) 传输路径

  • 深度定义:严格对应 DFD 图中的“数据流箭头”,描述数据在系统各模块之间的传输路径及其携带的具体内容。
  • 必备属性:数据流名称、来源、去向、组成(通常由数据结构构成)、平均流量/高峰流量。
  • 详细示例

    名称:借书请求 来源:外部实体(读者) 去向:加工(借阅处理模块) 组成:读者证件号 + 单本图书条码 + 当前日期

数据存储 (Data Store) 静态留存

  • 深度定义:严格对应 DFD 图中的“数据存储(双横线)”,描述数据在系统中的静态留存状态,是设计物理数据库表的直接依据。
  • 必备属性:存储名称、存储内容、主键/索引方式、读写权限。
  • 详细示例

    名称:图书信息库 存储内容:{图书基本信息 + 单本图书信息 + 存放区域} 索引方式:以“ISBN”和“单本图书条码”为主键进行联合索引。


3. 描述数据的“语法”标准 (重点规范)

为了彻底消除自然语言的歧义,软件工程规定了五个标准符号来表达数据之间的组合关系。必须使用这套规范的“语法”来进行字典的编写。

符号含义解释与业务场景示例
=被定义为相当于“由...组成”姓名 = 姓 + 名
+与 (顺序连接)“且”,各项缺一不可登录凭证 = 账号 + 密码
**`[]`**或 (选择)“二选一 / 多选一”
{ }重复“零个或多个的列表/集合”借阅记录表 = {单次借阅记录}
( )可选“可有可无的附加项”系统日志 = 操作时间 + 操作人 + (异常报错代码)

4. 案例实战:高校图书借阅系统数据字典构建

⚙️ 业务背景:高校图书借阅系统

系统需求分析摘要

  • 管理员进入系统管理界面,单击 读者管理图书管理 进行信息的增加、修改、删除和查询。可以单击 重置密码 按钮恢复读者默认密码。
  • 读者在终端单击 借书还书续借。系统会对读者借阅状态进行验证:若有图书超期,则需支付罚款并归还后才可继续借书
  • 管理员和读者皆可单击 查询 按钮检索超期信息、借阅历史及个人基本信息。
  • 输入/输出定义:读者输入借书/续借信息;系统输出借书/还书结果,并在发现超期时输出超期借阅信息。
  • 数据模型 (E-R图) 实体包含:读者、读者类别、图书、单本图书、存放区域、管理员。

步骤一:使用标准符号进行逻辑拆解

针对上述流程中核心的**“借阅请求”“借阅结果”**,我们使用规范符号进行自顶向下的逻辑拆解:

借阅请求 = 读者证件号 + 单本图书条码 + 操作类型 + 操作时间操作类型 = [ 借书 | 还书 | 续借 ]借书结果输出 = [ 借阅成功回执单 | 超期拒借提示 | 罚款缴费账单 ]超期借阅信息 = 读者证件号 + 姓名 + {超期图书书名 + 逾期天数 + 产生罚款金额}

步骤二:建立标准“数据字典词条表”

将符号推演转化为标准化工程档案(交付级文档)。

表 1:数据结构词条(描述复杂数据组合)

属性名称详细描述
数据结构名单本图书信息
别名Single_Book_Instance
组成结构单本图书条码 + 关联图书ISBN + 存放区域ID + 馆藏状态
业务说明区分同一种书的不同副本,记录每一本实体书的具体在馆状况。

表 2:数据项词条(描述最底层的原子数据)

属性名称详细描述
数据项名馆藏状态
类型与长度字符型 (String),最大长度 10
取值范围[ 在馆 | 借出 | 报损 | 遗失 ]
默认值在馆
约束条件不可为空,借出时必须触发借阅记录生成。

步骤三:定义处理逻辑(判定表与判定树)

在 DFD 中,当读者单击 借书 时,系统触发**“借书资格验证”**加工。单纯的数据字典符号无法描述业务规则。基于需求中的:“若有图书超期则需支付罚款并归还后才可继续借书”,我们需要补充 判定表 (Decision Table)判定树 (Decision Tree)

展示形式 A:判定表 (Decision Table)

组成部分规则 1规则 2规则 3规则 4
条件 1:有超期未还图书?
条件 2:已结清罚款并还书?
动作 1:允许借新书
动作 2:拒绝借阅(提示超期)

展示形式 B:判定树 (Decision Tree)

💡 实战小结

一个完善的数据字典档案,不仅需要包含静态的数据规格定义(符号拆解 + 词条表),还必须包含对动态处理逻辑的严谨描述(判定表 / 判定树)。两者结合才能彻底消除软件开发前期的模糊地带。


5. 知识串联:DD 与三大模型的关系

数据字典补全了结构化分析方法论的最后一块拼图。它与前序学习的三大模型之间存在严密的对应关系:

🧩 【关系图解】结构化分析核心架构

  1. DD 与 DFD(数据流图)—— 互为表里: DFD 中的每一个图形元素(数据流、数据存储、加工),必须且只能在 DD 中找到其内部细节的定义。
  2. DD 与 E-R 图(实体关系图)—— 静态映射: E-R 图中的“实体”(如:图书单本图书),直接对应 DD 中的“数据结构”;E-R 图中的“属性”,直接对应 DD 中的“数据项”。
  3. DD 与 STD(状态转换图)—— 动态触发: STD 中的“状态跃迁”(如单本图书从“在馆”变为“借出”),其本质是 DD 中数据项(如馆藏状态)的值通过业务加工被修改。

总体结论:DFD、ER、STD 构建了系统的“骨架结构”,而数据字典(DD)注入了不可或缺的“参数定义”。它是需求分析阶段最具工程级落地价值的产物,是架构设计的重要参考标准。