任务一 需求分析
一、需求分析是什么
需求分析就是:
- 数据需求分析:“系统要存储和使用哪些数据?这些数据是什么样的?”即:数据库设计的依据。
- 功能需求分析:“用户需要用这些数据做什么?”?” 即:数据库的行为。
- 性能需求分析:“系统需要多快?能服务多少人?” 即:即非功能性的质量指标。
- 其他需求分析:“有什么特殊限制和要求?海量数据?确保足够安全?“。即:数据库系统存储需求和安全性需求
在数据库设计中,需求分析的本质就是「搞清楚用户到底需要什么」,是数据库设计的基础环节,为后续的概念设计、逻辑设计、物理设计提供精准的依据,不会偏离方向。
二、如何进行需求分析
1.数据需求分析
目标:明确系统需要存储和管理哪些数据。
分析方法:
-
找出核心实体
- 找出业务中的关键“名词”确定实体。比如:学生、课程、班级、教师等;
- 方法:分析业务流程文档,标记所有重要事物
-
定义实体属性
- 对每个实体,列出所有需要记录的信息项
- 示例:
学生实体 → 学号、姓名、性别;课程实体 → 课程号、课程名、课时等;
-
梳理实体关系
- 分析实体如何关联
- 方法:询问业务规则
- “学生和班主任之间的关联”(1对多)
- “学生和课程的「选课」关联”(多对多)
-
确定数据约束
- 哪些字段必须填?(非空约束)
- 哪些字段值必须唯一?(唯一约束)
- 数据格式要求?(电话必须是11位)
产出物:数据流图(DFD) + 数据字典
2.功能需求分析
目标:明确用户需要对数据做什么操作。
分析方法:
-
找出业务用例
- 列出用户要完成的主要任务
- 查询操作:比如查询某个学生的所有成绩、统计某门课程的选课人数;
- 增删改操作:比如添加新学生、删除过期课程、修改成绩;
- 统计分析操作:比如按班级统计平均分、按学期生成成绩报表。
-
分析每个用例的数据操作
- 对每个用例,分解为具体的CRUD操作:
客户下单= 创建订单(C)、扣减库存(U)、记录日志(C)查询订单= 读取订单信息(R)
- 对每个用例,分解为具体的CRUD操作:
-
定义操作规则
- 业务逻辑是什么?
- 示例:只有“已支付”的订单才能发货;VIP客户享受9折优惠
-
明确权限控制
- 谁可以执行什么操作?
- 示例:普通员工只能查看本部门数据,经理可查看全公司
产出物:用例图 + 操作流程说明 + 权限矩阵
3.性能需求分析
目标:明确用户对数据库有什么性能要求。
分析方法:
-
量化访问频率
- 有多少用户?并发访问量?
- 每天/每秒钟有多少次查询、更新操作?
- 示例:预计1000个并发用户,每秒500次查询
-
确定响应时间要求
- 关键操作必须在多长时间内完成?
- 示例:商品搜索
<2秒,生成月度报表<10分钟
-
分析数据规模
- 初始数据量多大?
- 每月/每年增长多少?
- 示例:初始10万产品记录,每月新增1万
-
评估可用性要求
- 系统需要多可靠?
- 允许的宕机时间?
- 示例:要求99.9%可用性(年宕机
<8.8小时)
产出物:性能指标清单 + 容量规划表
4.其他需求分析
目标:考虑数据安全、存储、合规等非功能性需求。
分析方法:
-
安全性需求
- 哪些是敏感数据?(密码、身份证号)
- 如何保护?加密存储?访问日志?
- 示例:密码必须加密存储,登录失败3次锁定账户
-
存储需求
- 数据保存多久?
- 历史数据如何归档?
- 示例:订单数据保留5年,3年以上数据移到归档库
-
合规需求
- 是否受法规约束?(个人信息保护法)
- 审计要求?
- 示例:用户有权删除个人信息,需保留操作日志6个月
-
扩展性需求
- 未来可能增加哪些功能?
- 数据模型如何适应变化?
- 示例:未来可能增加“会员等级”体系,需预留扩展字段
产出物:安全策略文档 + 合规检查表 + 扩展性设计说明
三、需求分析的主要步骤
-
收集需求 通过访谈用户、发放问卷、观察业务流程、分析现有系统等方式,收集原始需求。 比如:和班主任沟通,了解需要存储哪些学生信息;和任课老师沟通,了解需要哪些成绩统计功能。
-
分析整理需求 对收集到的需求进行去重、分类、优先级排序,消除矛盾和模糊的描述,形成清晰的需求列表。 比如:将「学生信息」整理为学号、姓名、性别、专业等明确字段;将「成绩查询」整理为“按学生查询”“按课程查询”等具体场景。
-
验证需求 和用户确认整理后的需求,确保没有遗漏或误解,形成最终的需求共识。 比如:和用户核对“是否需要存储学生的联系方式”“是否需要支持批量导入成绩”等细节。
-
输出需求文档 生成正式的需求规格说明书,核心工具包括:
- 数据流图(DFD):用图形展示数据在系统中的流动和处理过程(比如学生信息如何录入、成绩如何生成报表);
- 数据字典(DD):详细定义每个数据项的含义、类型、长度、约束等(比如“学号”是字符串类型,长度为8,唯一标识学生)。
四、需求分析的工具
需求分析阶段的核心工具是数据流图(DFD)和数据字典,二者配合完成需求的可视化与规范化描述:
- 数据流图(DFD)
- 作用:清晰表达数据与处理过程之间的流转关系。
- 基本元素:外部实体(系统外的交互对象)、处理(数据加工环节)、数据流(数据的传输路径)、数据存储(数据的停留/保存位置)。
- 示例:学生选课系统数据流图,展示了学生、教师等实体与选课、成绩登记等处理过程的数据交互。


- 数据字典
- 作用:是各类数据描述的集合,是需求分析的核心成果之一,为后续设计提供数据的规范定义。
- 核心组成:
- 数据项:不可再分的最小数据单位,描述包含名称、含义、类型、长度、取值范围等,用于定义数据完整性约束。
- 数据结构:反映数据间的组合关系,由数据项或其他数据结构嵌套组成。
- 数据流:数据结构在系统内的传输路径,描述其来源、去向、组成及流量(平均/高峰期)。
- 数据存储:数据的停留/保存位置,描述输入输出数据流、数据量、存取频度与方式。
- 处理过程:对数据加工逻辑的说明性描述,包含输入输出数据流、功能说明、处理频度等。
五、案例:需求分析
在学生课程成绩的需求分析阶段,我们会明确:
- 数据需求:需要存储学生(学号、姓名、性别、专业、班级)、课程(课程号、课程名、课时)、成绩(学号、课程号、分数)、班级(班级名、班主任);
- 处理需求:支持学生查询自己的成绩、教师录入/修改成绩、管理员统计班级平均分;
- 安全需求:学生只能看自己的成绩,教师只能修改自己授课课程的成绩。