Skip to main content

任务一 需求分析

一、需求分析是什么

需求分析就是:

  • 数据需求分析:“系统要存储和使用哪些数据?这些数据是什么样的?”即:数据库设计的依据。
  • 功能需求分析:“用户需要用这些数据做什么?”?” 即:数据库的行为。
  • 性能需求分析:“系统需要多快?能服务多少人?” 即:即非功能性的质量指标。
  • 其他需求分析:“有什么特殊限制和要求?海量数据?确保足够安全?“。即:数据库系统存储需求和安全性需求

在数据库设计中,需求分析的本质就是「搞清楚用户到底需要什么」,是数据库设计的基础环节,为后续的概念设计、逻辑设计、物理设计提供精准的依据,不会偏离方向。

二、如何进行需求分析

1.数据需求分析

目标:明确系统需要存储和管理哪些数据。

分析方法

  1. 找出核心实体

    • 找出业务中的关键“名词”确定实体。比如:学生、课程、班级、教师等;
    • 方法:分析业务流程文档,标记所有重要事物
  2. 定义实体属性

    • 对每个实体,列出所有需要记录的信息项
    • 示例:学生实体 → 学号、姓名、性别;课程实体 → 课程号、课程名、课时等;
  3. 梳理实体关系

    • 分析实体如何关联
    • 方法:询问业务规则
      • “学生和班主任之间的关联”(1对多)
      • “学生和课程的「选课」关联”(多对多)
  4. 确定数据约束

    • 哪些字段必须填?(非空约束)
    • 哪些字段值必须唯一?(唯一约束)
    • 数据格式要求?(电话必须是11位)

产出物数据流图(DFD) + 数据字典

2.功能需求分析

目标:明确用户需要对数据做什么操作。

分析方法

  1. 找出业务用例

    • 列出用户要完成的主要任务
    • 查询操作:比如查询某个学生的所有成绩、统计某门课程的选课人数;
    • 增删改操作:比如添加新学生、删除过期课程、修改成绩;
    • 统计分析操作:比如按班级统计平均分、按学期生成成绩报表。
  2. 分析每个用例的数据操作

    • 对每个用例,分解为具体的CRUD操作:
      • 客户下单 = 创建订单(C)、扣减库存(U)、记录日志(C)
      • 查询订单 = 读取订单信息(R)
  3. 定义操作规则

    • 业务逻辑是什么?
    • 示例:只有“已支付”的订单才能发货;VIP客户享受9折优惠
  4. 明确权限控制

    • 谁可以执行什么操作?
    • 示例:普通员工只能查看本部门数据,经理可查看全公司

产出物用例图 + 操作流程说明 + 权限矩阵

3.性能需求分析

目标:明确用户对数据库有什么性能要求。

分析方法

  1. 量化访问频率

    • 有多少用户?并发访问量?
    • 每天/每秒钟有多少次查询、更新操作?
    • 示例:预计1000个并发用户,每秒500次查询
  2. 确定响应时间要求

    • 关键操作必须在多长时间内完成?
    • 示例:商品搜索<2秒,生成月度报表<10分钟
  3. 分析数据规模

    • 初始数据量多大?
    • 每月/每年增长多少?
    • 示例:初始10万产品记录,每月新增1万
  4. 评估可用性要求

    • 系统需要多可靠?
    • 允许的宕机时间?
    • 示例:要求99.9%可用性(年宕机<8.8小时)

产出物性能指标清单 + 容量规划表

4.其他需求分析

目标:考虑数据安全、存储、合规等非功能性需求。

分析方法

  1. 安全性需求

    • 哪些是敏感数据?(密码、身份证号)
    • 如何保护?加密存储?访问日志?
    • 示例:密码必须加密存储,登录失败3次锁定账户
  2. 存储需求

    • 数据保存多久?
    • 历史数据如何归档?
    • 示例:订单数据保留5年,3年以上数据移到归档库
  3. 合规需求

    • 是否受法规约束?(个人信息保护法)
    • 审计要求?
    • 示例:用户有权删除个人信息,需保留操作日志6个月
  4. 扩展性需求

    • 未来可能增加哪些功能?
    • 数据模型如何适应变化?
    • 示例:未来可能增加“会员等级”体系,需预留扩展字段

产出物安全策略文档 + 合规检查表 + 扩展性设计说明

三、需求分析的主要步骤

  1. 收集需求 通过访谈用户、发放问卷、观察业务流程、分析现有系统等方式,收集原始需求。 比如:和班主任沟通,了解需要存储哪些学生信息;和任课老师沟通,了解需要哪些成绩统计功能。

  2. 分析整理需求 对收集到的需求进行去重、分类、优先级排序,消除矛盾和模糊的描述,形成清晰的需求列表。 比如:将「学生信息」整理为学号、姓名、性别、专业等明确字段;将「成绩查询」整理为“按学生查询”“按课程查询”等具体场景。

  3. 验证需求 和用户确认整理后的需求,确保没有遗漏或误解,形成最终的需求共识。 比如:和用户核对“是否需要存储学生的联系方式”“是否需要支持批量导入成绩”等细节。

  4. 输出需求文档 生成正式的需求规格说明书,核心工具包括:

    • 数据流图(DFD):用图形展示数据在系统中的流动和处理过程(比如学生信息如何录入、成绩如何生成报表);
    • 数据字典(DD):详细定义每个数据项的含义、类型、长度、约束等(比如“学号”是字符串类型,长度为8,唯一标识学生)。

四、需求分析的工具

需求分析阶段的核心工具是数据流图(DFD)数据字典,二者配合完成需求的可视化与规范化描述:

  1. 数据流图(DFD)
    • 作用:清晰表达数据与处理过程之间的流转关系。
    • 基本元素:外部实体(系统外的交互对象)、处理(数据加工环节)、数据流(数据的传输路径)、数据存储(数据的停留/保存位置)。
    • 示例:学生选课系统数据流图,展示了学生、教师等实体与选课、成绩登记等处理过程的数据交互。

数据流图

数据流图

  1. 数据字典
    • 作用:是各类数据描述的集合,是需求分析的核心成果之一,为后续设计提供数据的规范定义。
    • 核心组成:
      • 数据项:不可再分的最小数据单位,描述包含名称、含义、类型、长度、取值范围等,用于定义数据完整性约束。
      • 数据结构:反映数据间的组合关系,由数据项或其他数据结构嵌套组成。
      • 数据流:数据结构在系统内的传输路径,描述其来源、去向、组成及流量(平均/高峰期)。
      • 数据存储:数据的停留/保存位置,描述输入输出数据流、数据量、存取频度与方式。
      • 处理过程:对数据加工逻辑的说明性描述,包含输入输出数据流、功能说明、处理频度等。

五、案例:需求分析

在学生课程成绩的需求分析阶段,我们会明确:

  • 数据需求:需要存储学生(学号、姓名、性别、专业、班级)、课程(课程号、课程名、课时)、成绩(学号、课程号、分数)、班级(班级名、班主任);
  • 处理需求:支持学生查询自己的成绩、教师录入/修改成绩、管理员统计班级平均分;
  • 安全需求:学生只能看自己的成绩,教师只能修改自己授课课程的成绩。