? 软件需求分析的任务和过程
? 结构化分析方法
? 原型化方法
? 动态分析方法
? 数据及数据库需求
软件需求分析的任务
? 深入描述软件的功能和性能
? 确定软件设计的约束和软件同
其它系统元素的接口细节
? 定义软件的其它有效性需求
? 需求分析研究的对象是软件项目的
用户要求
? 准确地表达被接受的用户要求
? 确定被开发软件系统的系统元素
? 将功能和信息结构分配到这些系统
元素中
? 需求分析的任务 就是借助于当前系
统的逻辑模型导出目标系统的逻辑
模型,解决目标系统的, 做什么,
的问题。
? 通常软件开发项目是要实现目标系
统的物理模型
? 目标系统的具体物理模型是由它的
逻辑模型经实例化,即具体到某个
业务领域而得到的
需求分析的过程
(1) 问题识别
? 从系统的角度来理解软件并评审软
件范围是否恰当
? 确定对目标系统的综合要求,即软
件的需求
? 提出这些需求实现条件,以及需求
应达到的标准
软件的需求包括:
? 功能需求
? 性能需求
? 环境需求
? 可靠性需求
? 安全保密要求
? 用户界面需求
? 资源使用需求
? 成本消耗需求
? 开发进度需求
? 预先估计以后
系统可能达到
的目标
问题识别的另一项工作是建立分析所
需要的通信途径, 以保证能顺利地对
问题进行分析 。
(2) 分析与综合
? 从 信息流 和 信息结构 出发,逐步细
化所有的软件功能,找出 系统各元
素之间的联系, 接口特性 和 设计上
的约束,分析它们是否满足功能要
求,是否合理。剔除其不合理的部
分,增加其需要部分。最终综合成
系统的解决方案,给出 目标系统的
详细逻辑模型 。
常用的分析方法
? 面向数据流 的结构化分析方法 (SA)
? 面向数据结构 的 Jackson方法 (JSD)
? 面向数据结构 的结构化数据系统开
发方法 (DSSD)
? 面向对象 的分析方法 (OOA) 等
(3) 编制需求分析阶段的文档
? 软件需求说明书
? 数据要求说明书
? 初步的用户手册
? 修改、完善与确定软件开发实施计

(4) 需求分析评审
? 系统定义的目标是否与用户的要求
一致 ;
? 系统需求分析阶段提供的文档资料
是否齐全 ;
? 文档中的所有描述是否完整、清晰、
准确反映用户要求 ;
? 与所有其它系统成分的重要接口是
否都已经描述 ;
? 被开发项目的数据流与数据结构是
否足够,确定 ;
? 所有图表是否清楚,在不补充说明
时能否理解 ;
? 主要功能是否已包括在规定的软件
范围之内,是否都已充分说明 ;
? 设计的约束条件或限制条件是否符
合实际 ;
? 开发的技术风险是什么 ;
? 是否考虑过软件需求的其它方案 ;
? 是否考虑过将来可能会提出的软件需
求 ;
? 是否详细制定了检验标准,它们能否
对系统定义是否成功进行确认 ;
需求分析流程
软件需求分析的原则
? 需要能够表达和理解问题的信息域
和 功能域
? 要能以层次化的方式对问题进行 分
解 和不断 细化
? 要给出系统的 逻辑视图 和 物理视图
软件需求规格说明的原则
? 从现实中分离功能,即描述要,做
什么,而不是,怎样实现,
? 要求使用 面向处理 的规格说明语言
(或称系统定义语言)
? 如果被开发软件只是一个大系统中
的一个元素,那么整个大系统也包
括在规格说明的描述之中
? 规格说明必须包括系统运行环境
? 规格说明必须是一个认识模型
? 规格说明必须是可操作的
? 规格说明必须容许不完备性并允许
扩充
? 规格说明必须局部化和松散耦合
软件需求方法
? 需求分析方法由对软件问题的 信息
域 和 功能域 的系统分析过程及其表
示方法组成
? 大多数的需求分析方法是由 信息驱
动 的
? 信息域具有三种属性, 信息流, 信
息内容 和 信息结构 。
结构化分析方法
? 面向数据流进行需求分析的方法
? 结构化分析方法适合于数据处理类
型软件的需求分析
? 具体来说,结构化分析方法就是用
抽象模型 的概念,按照软件内部 数
据传递, 变换 的关系,自顶向下逐
层分解,直到找到满足功能要求的
所有可实现的软件为止
? 结构化分析方法使用工具:
? 数据流图
? 数据词典
? 结构化英语
? 判定表与判定树
数据流图
? 数据流图中的主要图形元素
数据加工 (数据变换 )
数据源点或终点 (外部实体 )
数据流
数据存储文件
描述银行取款过程的数据流图
数据流与数据加工之间的关系
数据流图的层次结构
? 为了表达数据处理过程的数据加工
情况,需要采用 层次结构 的数据流
图。按照系统的层次结构进行 逐步
分解,并以分层的数据流图反映这
种结构关系,能清楚地表达和容易
理解整个系统
分层的数据流图
? 在多层数据流图中,顶层流图 仅包
含 一个加工,它代表被开发系统。
它的输入流是该系统的输入数据,
输出流是系统所输出数据
? 底层流图 是指其 加工不需再做分解
的数据流图,它处在最底层
? 中间层流图 则表示 对其上层父图的
细化 。它的每一加工可能继续细化,
形成子图。
结构化分析方法步骤示例
商店业务处理系统
? 这个数据流图只是一个高层的系统
逻辑模型,它反映了目标系统要实
现的功能
? 数据流图绘制步骤
? 首先确定系统的输入和输出
? 根据商店业务,画出顶层数据流
图,以反映最主要业务处理流程
? 经过分析,商店业务处理的 主要
功能 应当有 销售, 采购, 会计 三
大项。 主要数据流输入的源点 和
输出终点 是 顾客 和 供应商 。
? 然后从输入端开始,根据商店业
务工作流程,画出数据流流经的
各加工框,逐步画到输出端,得
到第一层数据流图
第一层数据流图
加细每一个加工框 销售细化
采购细化
检查和修改数据流图的原则
? 数据流图上所有图形符号 只限于 前
述四种基本图形元素
? 数据流图的 主图必须包括前述四种
基本元素,缺一不可
? 数据流图的主图上的数据流必须封
闭在外部实体之间
? 每个加工 至少有一个输入数据流和
一个输出数据流
? 在数据流图中,需 按层给加工框编
号 。编号表明该加工所处层次及上
下层的亲子关系
? 规定任何一个数据流子图必须与它
上一层的一个加工对应,两者的输
入数据流和输出数据流必须一致。
此即 父图与子图的平衡
? 可以在数据流图中加入物质流,帮
助用户理解数据流图
? 图上每个元素都必须有名字
? 数据流图中不可夹带控制流
? 初画时可以忽略琐碎的细节,以集中
精力于主要数据流
数据词典
? 数据词典与数据流图配合,能清楚
地表达数据处理的要求
? 词条描述 —— 对于在数据流图中每
一个被命名的图形元素,均加以定
义,其内容有, 名字, 别名或编号,
分类, 描述, 定义, 位臵, 其它,

( 1) 数据流词条描述
? 数据流名:
? 说明:简要介绍作用即它产生的原
因和结果
? 数据流来源:来自何方
? 数据流去向:去向何处
? 数据流组成:数据结构
? 数据量流通量:数据量,流通量
( 2) 数据元素词条描述
? 数据元素名:
? 类型:数字(离散值,连续值),
文字(编码类型)
? 长度:
? 取值范围:
? 相关的数据元素及数据结构:
( 3) 数据文件词条描述
? 数据文件名:
? 简述:存放的是什么数据
? 输入数据:
? 输出数据:
? 数据文件组成:数据结构
? 存储方式:顺序,直接,关键码
? 存取频率:
( 4)加工逻辑词条描述
? 加工名:
? 加工编号:反映该加工的层次
? 简要描述:加工逻辑及功能简述
? 输入数据流:
? 输出数据流:
? 加工逻辑:简述加工程序,加工顺

( 5)源点及汇 (终 )点词条描述
? 名称:外部实体名
? 简要描述:什么外部实体
? 有关数据流:
? 数目:
数据结构的描述
符 号 含 义 举 例
= 被定义为
+ 与 x = a+ b
[...,...] 或 [...|...] 或 x = [a,b],x = [a | b]
{,.,}或 m{...}n 重复 x = {a},x = 3{a}8
(...) 可选 x = (a)
“...” 基本数据元素 x =,a”
.,连结符 x = 1..9
存折格式
存折=户名+所号+帐号+开户日+性质
+ (印密 )+ 1{存取行 }50
户名= 2{字母 }24
所号=,001”..“999”
帐号=,00000001”..“99999999”
开户日=年+月+日
性质=,1”..“6” 注:,1”表示普通户,
,5”表示工资户等
印密=,0” 注:印密在存折上不显示
存取行=日期+(摘要)+支出+存入+
余额+操作+复核
? 对数据流图的每一个基本加工,必
须有一个基本加工逻辑说明
? 基本加工逻辑说明必须描述基本加
工 如何把输入数据流变换为输出数
据流的加工规则
? 加工逻辑说明必须描述实现加工的
策略而不是实现加工的细节
? 加工逻辑说明中包含的信息应是充
足的,完备的,有用的,无冗余的
基本加工逻辑说明
用于写加工逻辑说明的工具
? 结构化英语
? 判定表
? 判定树
( 1)结构化英语
? 结构化英语的词汇表由
? 英语命令动词
? 数据词典中定义的名字
? 有限的自定义词
? 逻辑关系词 IF_THEN_ELSE、
CASE_OF, WHILE_DO、
REPEAT_UNTIL等组成。
? 是一种介于自然语言和形式化语言
之间的语言
? 语言的 正文用基本控制结构进行分
割,加工中的 操作用自然语言短语
来表示
? 其基本控制结构有三种:
?简单陈述句结构,避免复合语句;
?重复结构, while_do或
repeat_until 结构。
?判定结构, if_then_else或
case_of 结构;
商店业务处理系统中“检查发货单”
if 发货单金额超过 $500 then
if 欠款超过了 60天 then
在偿还欠款前不予批准
else (欠款未超期)
发批准书,发货单
else (发货单金额未超过 $500)
if 欠款超过 60天 then
发批准书,发货单及赊欠报告
else (欠款未超期)
发批准书,发货单
( 2)判定表
? 如果数据流图的加工需要依赖于
多个逻辑条件的取值,使用判定
表来描述比较合适
以“检查发货单”为例
( 3) 判定树
? 判定树也是用来表达加工逻辑的一
种工具。有时侯它比判定表更直观。





金额 >$500
金额 ?$500
欠款 >60天 不发出批准书
欠款 ?60天
发货单
发出批准书、
欠款 >60天 发出批准书、
发货单及赊欠报告
欠款 ?60天 发出批准书、
发货单
原型化方法
? 在开发初期,要想得到一个完整准
确的规格说明不是一件容易的事。
特别是对一些大型的软件项目。
? 用户往往对系统只有一个模糊的想
法,很难完全准确地表达对系统的
全面要求。
? 软件开发者对于所要解决的应用问
题认识更是模糊不清
? 随着开发工作向前推进,用户可能
会产生新的要求,或因环境变化,
要求系统也能随之变化;开发者又
可能在设计与实现的过程中遇到些
没有预料到的实际困难,需要以改
变需求来解脱困境。
? 因此规格说明难以完善、需求的变
更、以及通信中的模糊和误解,都
会成为软件开发顺利推进的障碍。
? 为解决这些问题,逐渐形成了软件
系统的快速原型的概念。
软件原型的分类
? 在软件开发中,原型是软件的一个
早期可运行的版本,它反映最终系
统的部分重要特性。
? 探索型,目的是要弄清对目标系
统的要求,确定所希望的特性,
并探讨多种方案的可行性。
? 实验型,这种原型用于大规模开
发和实现之前,考核方案是否合
适,规格说明是否可靠。
? 进化型,这种原型的目的不在于
改进规格说明,而是将系统建造
得易于变化,在改进原型的过程
中,逐步将原型进化成最终系统。
原型使用策略
? 废弃策略
? 追加策略
建立快速原型, 进行系统的分析
和构造的好处:
? 增进软件者和用户对系统服务需
求的理解,使比较含糊的具有不确
定性的软件需求(主要是功能)明
确化。
? 软件原型化方法提供了一种有力
的学习手段 。
? 使用原型化方法,可以容易地确
定系统的性能,确认各项主要系
统服务的可应用性,确认系统设
计的可行性,确认系统作为产品
的结果。
? 软件原型的最终版本,有的可以
原封不动地成为产品,有的略加
修改就可以成为最终系统的一个
组成部分,这样有利于建成最终
系统。
原型开发技术
? 可执行规格说明
? 基于脚本 (scenario)的设计
? 自动程序设计
? 专用语言
? 可复用 (reusable)的软件
? 简化假设
可执行规格说明
? 可执行规格说明是用于需求规格说
明的一种自动化技术。使用这种方
法,人们可以直接观察他们用语言
规定的任何系统性行为。包括
? 代数规格说明
? 有限状态模型
? 可执行的数据流图
?
( 1) 代数规格说明
? 代数规格说明使用集合、定义于这
些集合上的函数和定义于这些函数
上的方程来描述对象。规格说明的
操作语义用这些方程表示。
NEW_STACK,→ Stack
PUSH,Stack,Element → Stack
POP,Stack → (Element | Undefined)
POP (NEW_STACK ( ) ) = Undefined
POP (PUSH ( stk,elem ) ) = elem
其中,前三行定义了操作的语法,后
两行把它们的语义定义为一些方程。
举例:定义一个无界的栈及其操作
?
( 2) 有限状态模型
? parnas提出的使用最广泛的一种
可执行规格说明形式。从一个初
始状态开始 接收输入,到 产生输
出, 状态 在 推移变化 。施加在状
态元素上的约束确定了有效状态
的推移。
举例:建立用户/程序对话
?
( 3) 可执行的数据流图
? 数据流图是基于结构化开发方法的
结构化规格说明
? 用一种可执行的语言程序代替定义
处理逻辑的结构化英语,数据流图
就成为由可执行语言程序模块组成
的网络,在一定环境或工具的支持
下就可成为一个可以执行的原型系
统。
?
基于脚本的设计
? 脚本是指用户界面的原型。一个脚
本用以模拟在系统运行期间用户经
历的事件。它提供了输入 ─处理 ─
输出的屏幕格式和有关对话的模型。
因此,软件开发者能够给用户显示
系统的逼真的视图,使用户得以判
断是否符合他的意图。
? 可在任一脚本中使用一套可复用的
软件模块,以表达某一方面的要求。
? 可使用一种原型语言来描述原型系
统。原型开发过程中用这种语言来
定义屏幕、数据项、及其相关的操
作。从系统的外部描述开始,开发
与数据库的接口、错误处理和恢复
过程等系统的与外部视图一致的细
节。
?
?程序变换手段:
?将一程序转换成另一功能等价
的程序,并保持其正确性不变。
?实例推广手段:
?从实例特征出发,将它推广为
待编程序的特征,最后得到程
序。
? 过程化手段:
?研究甚高级语言的编译和知识
的过程化。
?
专用语言
? 专用语言是应用领域的模型化语
言。在原型开发中使用专用语言,
可方便用户和软件开发者在计划
中的系统特性方面的交流。
?
软件复用技术
? 利用可复用的模块,做出适当的组
合,就可得到快速构造的原型系统。
? 为了快速地构造原型,这些模块首
先必须有简单而清晰的界面;其次
它们应当尽量不依赖其它的模块或
数据结构;第三,它们应具有一些
通用的功能。
?
简化假设
? 简化假设是在开发过程中使设计者
迅速得到一个简化的系统所做的假
设。尽管这些假设可能实际上并不
能成立,但它们在原型开发过程中
可以使开发者的注意力集中在一些
主要的方面。
?
? 在修改一个文件时,可以假设这个
文件确实存在
? 在存取文件时,待存取的记录总是
存在
? 一旦计划中的系统满足用户所有的
要求,就可以撤消这些假设,并追
加一些细节。
系统动态分析
? 系统的需求规格说明通常是用自然
语言来叙述的,但是用自然语言描
述往往会出现歧义性。
? 为了直观地分析系统的动作,从特
定的视点出发描述系统的行为,需
要采用动态分析的方法。
最常用的动态分析方法
? 状态迁移图
? 时序图
? Petri网
状态迁移图
? 状态迁移图是描述系统的状态如何
相应外部的信号进行推移的一种图
形表示。
? 圆圈,○,表示可得到的系统 状

? 箭头,→,表示从一种状态向另
一种状态的 迁移 。
例如,当有多个申请占用 CPU运行的
进程时,有关 CPU分配的进程的状
态迁移。
? 可得到的状态=就绪,运行,等待
? 生成的事件= t1,t2,t3,t4
?t1 ─ 中断事件 ? t2 ─ 中断已处理
?t3 ─ 分配 CPU ? t4 ─ 用完 CPU时间
状态迁移图的优点
? 状态之间的关系能够直观地捕捉到
? 由于状态迁移图的单纯性,能够机
械地分析许多情况,可很容易地建
立分析工具
? 在系统分析中,用 时序图 于对比在
系统中处理事件的时序和相应的处
理时间。在右图中,对 于 事件 e,功
能 1~功能 3
的处理时间
总计为 (T1
+ T2+ T3)
其中功能间
切换时间 0。
时序图
? 采用扩充时序图可
表示进程间的通信
流,用于分析几个
事件的交错现象。,
C1与 C2,R1与 R2
是交错的。因此,
可以做如下分析:
,必须设计成
HOST1 在等待 C1的回答 R1期间要能接
收从 HOST2发出的命令 C2。,
Petri网
? Petri网已广泛地应用于硬件与软件
系统的开发中,它适用于描述与分
析相互独立、协同操作的处理系统,
也就是并发执行的处理系统。
? Petri网简称 PNG (Petri Net Graph),
它有两种结点:
?位臵 (place):符号为“○”,它
用来表示系统的 状态 。
?转移 (transition):符号为, ?”,
它用来表示系统中的 事件 。
?图中的有向边表示 对转移的输入,
或 由转移的输出
A D? *
? 标记,或称 令牌 (token),是表明系统
当前处于什么状态的标志
处理两个进程的同步问题
数据及数据库需求
? 在数据词典中,强调对数据存储结
构的逻辑设计,并用数据结构表达
数据项之间的逻辑关系。
? 但任何一个软件系统都可能有成千
上万个数据项,仅仅描述这些数据
项是不够的,更重要的是如何把它
们以最优的方式组织起来,以满足
系统对数据的要求。
有关数据库的基本概念
? 在软件系统中需要处理的数据是现
实世界中存在的事物及其联系的反
映。
? 人们通常将与数据处理有关的的领
域分为三个世界:
? 现实世界
? 信息世界
? 数据世界
? 现实世界 是存在于人们头脑之外的
客观世界,现实世界中的事物可分
成 对象 和 性质 两大类。
? 对象 可以是人、是物,还可以是实
际的东西或概念的东西,例如,大
学、城市等。对象还可以指事物与
事物间的联系。
? 性质 则是指事物的性质或特征。
? 信息世界 也叫做观念世界,是现实
世界在人们头脑中的反映。
? 客观世界中的事物在信息世界中叫
做 实体, 反映事物之间联系的叫做
实体模型 。
? 实体是由若干属性的属性值组成 。
属性 是实体某一方面的特征,相应
于事物的性质。例如,一个学生实
体是如下的一个 5元组:
( 951149,袁秋慧,女,19,软件 )
? 5元组中每一元素是学生的某一属性
的属性值。他们对应的属性集合是:
? 这些属性集合表征了“学生”实体
的类型,叫做 实体型 。同一类型的
实体的集合叫做 实体集 。
? 数据世界 则是信息世界中信息的数
据化,现实世界中的事物及其联系
在数据世界中用数据模型描述。
(学号,姓名,性别,年龄,专业 )
? 描述每一实体的数据称为 记录, 描
述属性的数据叫做 数据项 或 字段 。
? 与实体集相对应的称为 文件 。
? 例如,学生文件就由多个记录组成,
这些记录放在一起构成一个二维表。
表中每一横排叫做一个记录或元组,
每一纵列叫做一个属性。
? 记录由 数据项 组成,正如实体由若
干属性的属性值组成一样。
? 一般数据项沿用属性名。用做属性
名时表示观念信息,用做数据项名
时表示数据信息。每个数据项包括
两个特征:即 数据类型 和 数据长度 。
? 若干同类型的记录构成 文件 。
? 为了对文件中的记录有效组织和存
取,通常指定一个数据项进行区别,
这个数据项叫做关键字。
E-R方法 ( Entity-Relationship
Approach) 和实体模型
? 在需求分析阶段进行数据库逻辑设
计过程中,使用 E-R图,可定义一
个实体模型 。
? 实体模型是现实世界的纯表示,它
不涉及数据世界的数据结构、存取
路径、存取效率等问题。因此,它
可以转换成数据库中的数据模型 。
? 数据可以按相应数据模型进行组织。
? E-R图中表示实体联系的符号如下:
? 在 E-R图中,每个 方框 表示 实体型
或 属性,方框之间的 连线 表示 实体
之间,或 实体与属性之间的联系 。
出现在连线上的短竖线可以看成是
,1”,而圆圈隐含表示,0”。
? 例如,在教学管理中,一个教师可
以教授零门、一门或多门课程,每
位学生也需要学习几门课程。因此,
教学管理中涉及的对象(实体型)
有 学生, 教师 和 课程 。
? 用 E-R图描述它们之间的联系,得
下图。其中,学生与课程是多对多
的联系,而教师与课程的联系是零、
一对多。
? 进一步,要确定属性。例如,
? 学生具有 学号, 姓名, 性别, 年龄,
专业 (其它略)等属性;
? 课程具有 课程号, 课程名, 学分,
学时数 等属性;
? 教师具有 职工号, 姓名, 年龄, 职
称 等属性。
? 此外,学生通过学号、分数与课程
发生联系。如此可得教学实体模型。
教学实体模型
数据结构的规范化
? 信息域分析需要确定 数据的内容,
每个数据项要用表格列出,最后组
织成文件的逻辑结构,即面向应用
而不是面向存储的结构。
? 为了便于数据库的设计,常常要对
这种结构做一些简化,其中最常见
的一种方法就是规范化技术。
?,规范化” 将 数据的逻辑结构 归结
为满足一定条件的 二维表 (关系)。
?表格中每个信息项必须是一个不
可分割的数据项,不可是组项。
?表格中每一列 (列表示属性 )中所有
信息项必须是同一类型,各列的名
字 (属性名 ) 互异,列的次序任意。
?表格中各行 (行表示元组 ) 互不相
同,行的次序任意。
? 不满足上述要求的二维表或关系,
叫做非规范化关系。对于非规范化
的关系,必须将它规范化,即利用
更单纯、更规则的关系来代替原来
的关系。
? 规范化的目的是:
? 消除数据冗余,即消除表格中数
据的重复;
? 消除多义性,使关系中的属性含
义清楚、单一;
? 使关系的“概念”单一化,让每个
数据项只是一个简单的数或字符串,
而不是一个组项或重复组;
? 方便操作 。使数据的插入、删除与
修改操作可行并方便;
? 使关系模式更灵活,易于实现接近
自然语言的查询方式。
用教学管理例说明如何规范化
? 有三个实体型,即 课程, 学生 和 教
师,用三个关系保存它们的信息:
学生 (学号,姓名,性别,年龄,
专业,籍贯 )
教师 (职工号,姓名,年龄,职
称,工资级别,工资 )
课程 (课程号,课程名,学分,
学时,课程类型 )
? 为表示实体型之间的联系,又建立
两个关系:
选课 (学号,课程号,听课出勤
率,作业完成率,分数 )
教课 (职工号,课程号 )
? 这五个关系,组成了 数据库的模型 。
? 在每个关系中,属性名下加下划线)
指明 关键字 。并规定关键字能唯一
地标识一个元组。
? 关系规范化的程度,通常按属性间
的依赖程度来区分,并以范式 NF
(Normal Form) 来表达。常用的范
式分为第一范式( 1NF)、第二范
式( 2NF)和第三范式( 3NF)。
? 设 R 是 一个关系, X 和 Y 是 R 中的
两个属性 。若对于X的任一个值,
Y仅有一个值与之对应,则称R的
属性Y函数依赖于属性X。 例如,
教师 (职工号,姓名,年龄,?? )
? 其中,属性,姓名,,,年龄,等
都函数依赖于属性,职工号,。属
性X可以是复合属性,如:
选课 (学号,课程号,听课出勤率,?? )
? 如果 属性Y函数依赖于复合属性X,
而 不与X的任何真子集函数依赖,
则称 属性Y完全函数依赖于复合属
性X 。
? 例如在,选课,关系中,属性,听
课出勤率,、,作业完成率,和
,分数,等表示某个学生学习某门
课程时的学习情况。只有同时指定
,学号,和“课程号”,才能准确
地说明是哪位学生学习哪门课程时
的学习情况。
? 因此,,分数,等属性完全函数依
赖于,学号, 课程号,。
? 判断规范化程度的条件是:
?关系中所有属性都是“单纯域”,
即不出现“表中有表”
?非主属性完全函数依赖于关键字
?非主属性相互独立,即任何非主属
性间不存在函数依赖。
? 如果一个关系连 条件 ?都不满足,
则这个关系是非规范化的。
? 如果一个关系仅满足 条件 ?,则这
个关系满足 第一范式 (1NF)。
? 如果一个关系满足 条件 ?,?,但
不满足 ?,则这个关系满足 第二范
式 (2NF)。
? 如果一个关系同时满足 条件 ?,?
和 ?,则这个关系表满足 第三范式
(3NF)。
? 当数据模型达到 3NF,一般情况下
就能满足数据库应用的需要。
数据库分析的过程
在需求分析阶段进行数据库分析的流程
? 为开发一个系统所使用的数据库,
在开始分析数据库的需求前,分析
员必须 了解该系统的总目标和范围 。
然后 建立一个完整并高度细化的信
息模型 。
? 此信息模型应包括一个 综合的数据
词典,定义所有在开发数据库时用
到的数据项。
? 接着数据库分析定义数据库的 逻辑
特性 和 物理特性 。
? 以信息模型和系统规格说明为指导,
定义数据库的 逻辑数据结构 。
? 这种逻辑结构必须适应 数据存取,
修改, 关联性 及其它相关需求。
? 一旦逻辑数据结构建立起来,就可
以研制数据库的 物理结构 。
? 物理数据库结构定义 文件结构, 记
录格式, 与硬件相关的处理方式 以
及 数据库管理系统的特性 。
? 最后,要 对模式和物理特性进行完
全的评审 。
? 在数据库分析过程中所考虑的 因素
间存在着复杂的相互联系 。 改变其
中的任何一个因素都会(潜在地)
影响其它的因素 。所以必须在各个
因素之间进行折衷。
? 这种折衷包括 专用性 和 通用性 的折
衷,信息关联程度, 扩充潜力 及 操
作特性 等方面的折衷。
? 考虑 信息关联程度 和 扩充潜力 (包
括 信息规模 和 信息内容 两方面)主
要 基于需求分析和设计阶段分派给
数据库的专用性程度 。
? 专用的数据库要为系统特定的信息
需求服务,因此信息结构要设计得
能适应要求的关联性和预计的扩充。
? 通用的数据库可以适应更为广泛的
各种信息需求,但是为了获得通用
性要付出代价。
? 操作特性根据折衷的结果而定。数据
库的结构、规模和逻辑设计都会对它
的物理组织、硬件、存取方式以及性
能产生重要的影响。