实体 - 联系图
概念性数据模型是一种面向问题的数据模型,是按 照用户的观点对数据建立的模型。
它描述了从用户角度看到的数据,它反映了用户的 现实环境,而且与在软件系统中的实现方法无关。
数据模型中包含 3 种相互关联的信息:数据对象、
数据对象的属性及数据对象彼此间相互连接的关系
。
数据对象可以是外部实体 ( 例如,产生或使用信息 的任何事物 ) 、事物 ( 例如,报表 ) 、行为 ( 例如,
打电话 ) 、事件 ( 例如,响警报 ) 、角色 ( 例如,教 师、学生 ) 、单位 ( 例如,会计科 ) 、地点 ( 例如,
仓库 ) 或结构 ( 例如,文件 ) 等。总之,可以由一组 属性来定义的实体都可以被认为是数据对象。
数据对象彼此间是有关联的,例如,教师“教”课程
,学生“学”课程,教或学的关系表示教师和课程或 学生和课程之间的一种特定的连接。
数据对象只封装了数据而没有对施加于数据上的操 作的引用。
属性定义了数据对象的性质。必须把一个或多个属 性定义为“标识符”,也就是说,当我们希望找到数 据对象的一个实例时,用标识符属性作为“关键字”
( 通常简称为“键” ) 。
数据对象彼此之间相互连接的方式称为联系,
也称为关系。联系可分为以下 3 种类型:
(1) 一对一联系 (1 1)∶
例如,一个部门有一个经理,而每个经理只在 一个部门任职,则部门与经理的联系是一对一的。
(2) 一对多联系 (1 N)∶
例如,某校教师与课程之间存在一对多的联系
“教”,即每位教师可以教多门课程,但是每门课程 只能由一位教师来教。
(3)
多对多联系 (M N)∶例如,学生与课程间的联系 (“ 学” ) 是 多对多的,即一个学生可以学多门课程,而 每门课程可以有多个学生来学。
联系也可能有属性。例如,学生“学”某门课程所取 得的成绩,既不是学生的属性也不是课程的属性。
由于“成绩”既依赖于某名特定的学生又依赖于某门 特定的课程,所以它是学生与课程之间的联系“学”
的属性。
某校教学管理 ER 图
某个工厂物资管理的概念模式,物资管理涉及 的实体有:
仓库(仓库号,面积,电话号码)
零件(零件号,名称,规格,单价,描述)
供应商(供应商号,姓名,地址,电话号码,帐 号)
项目(项目号,预算,开工日期)
职工(职工号,姓名,年龄,职称)
这些实体间的联系如下:
1 )一个仓库可以存放多种零件,一种零件可以存 放在多个仓库中
2 )一个仓库可以有多个职工当保管员,一个职工 只能在一个仓库工作
3 )职工之间具有领导与被领导关系,仓库主任领 导若干保管员
4 )供应商、项目和零件之间具有多对多关系
某网站建立一个网络论坛 (BBS) ,该论坛称 为“ VB.Net 高手汇集地”,其网址为
WWW.BBS.VBNET.COM
;该网站有专门管 理员进行管理,每个管理员有其账号、密码、权限等;该论坛的 BBS 用户有自己的帐号
、密码、头像和基本信息;每个用户可以发 表自己的关于 VB.NET 的帖子,所有的帖子 都归管理员进行管理。
数据规范化
软件系统经常使用各种长期保存的信息,这些信息 通常以一定方式组织并存储在数据库或文件中,为 减少数据冗余,避免出现插入异常或删除异常,简 化修改数据的过程,通常需要把数据结构规范化。
通常用“范式 (normal forms)” 定义消除数据冗余的 程度。
范式级别越高,存储同样数据就需要分解成更多张 表,因此,“存储自身”的过程也就越复杂。
范式级别提高则需要访问的表增多,因此性能 ( 速 度 ) 将下降。从实用角度看来,在大多数场合选用 第三范式都比较恰当。
(1) 第一范式每个属性值都必须是原子值,即仅仅是 一个简单值而不含内部结构。
(2) 第二范式满足第一范式条件,而且每个非关键字 属性都由整个关键字决定 ( 而不是由关键字的一部 分来决定 ) 。
(3) 第三范式符合第二范式的条件,每个非关键字属 性都仅由关键字决定,而且一个非关键字属性不能 仅仅是对另一个非关键字属性的进一步描述 ( 即一 个非关键字属性值不依赖于另一个非关键字属性值 )
。
数据字典
数据字典是关于数据的信息的集合,也就是对数据 流图中包含的所有元素的定义的集合。
数据字典的作用是在软件分析和设计的过程中给人 提供关于数据的描述信息。
在数据词典的每一个词条中应包含以下信息:
① 名称:数据对象或控制项、数据存储或外部实体 的名字。
② 别名或编号。
③ 分类:数据对象?加工?数据流?数据文件?外 部实体?控制项 ( 事件∕状态 ) ?
④ 描述:描述内容或数据结构等。包括定义 ( 数据 类型,长度,结构等等 ) ,使用特点 ( 值的范围,
使用频率,使用方式——输入、输出、本地,条件 值等等 ) 。
⑤ 何处使用:使用该词条 ( 数据或控制项 ) 的加工。
数据元素的别名就是该元素的其他等价的名字,出现 别名主要有下述 3 个原因:
(1) 对于同样的数据,不同的用户使用了不同的名 字;
(2) 一个分析员在不同时期对同一个数据使用了不 同的名字;
(3) 两个分析员分别分析同一个数据流时,使用了 不同的名字。
虽然应该尽量减少出现别名,但是不可能完全消除 别名。
存折=户名+所号+帐号+开户日+性质+(印密)+ 1 { 存取行 }50
户名= 2{ 字母 }24
所号=“ 001”..“999” 注:储蓄所编码,规定三位数字
帐号=“ 00000001”..“99999999” 注:帐号规定由八位数 字组成
开户日=年+月+日
性质=“ 1”..“6” 注:“ 1” 表示普通户,“ 5” 表示工资户等
印密=“ 0” 注:印密在存折上不显示
存取行=日期+(摘要)+支出+存入+余额+操作+复核
日期=年+月+日
……
字母= [“a”..“z”|“A”..“Z”]
根据本章开头讲的结构化分析的第 3 条准则
,在需求分析过程中应该建立起软件系统的 行为模型。状态转换图 ( 简称为状态图 ) 通 过描绘系统的状态及引起系统状态转换的事 件,来表示系统的行为。此外,状态图还指 明了作为特定事件的结果系统将做哪些动作 ( 例如,处理数据 ) 。因此,状态图提供了 行为建模机制,可以满足第 3 条分析准则的 要求。
3.6 状态转换图
状态是任何可以被观察到的系统行为模式,
一个状态代表系统的一种行为模式。状态规 定了系统对事件的响应方式。系统对事件的 响应,既可以是做一个 ( 或一系列 ) 动作,
也可以是仅仅改变系统本身的状态,还可以 是既改变状态又做动作。
在状态图中定义的状态主要有:初态 ( 即初 始状态 ) 、终态 ( 即最终状态 ) 和中间状态。
在一张状态图中只能有一个初态,而终态则 可以有 0 至多个。
3.6.1 状态
状态图既可以表示系统循环运行过程,也可 以表示系统单程生命期。当描绘循环运行过 程时,通常并不关心循环是怎样启动的。当 描绘单程生命期时,需要标明初始状态 ( 系 统启动时进入初始状态 ) 和最终状态 ( 系统 运行结束时到达最终状态 ) 。
事件是在某个特定时刻发生的事情,它是对 引起系统做动作或 ( 和 ) 从一个状态转换到 另一个状态的外界事件的抽象。例如,内部 时钟表明某个规定的时间段已经过去,用户 移动或点击鼠标等都是事件。简而言之,事 件就是引起系统做动作或 ( 和 ) 转换状态的 控制信息。
3.6.2 事件
在状态图中,初态用实心圆表示,终态用一 对同心圆 ( 内圆为实心圆 ) 表示。
中间状态用圆角矩形表示,可以用两条水平 横线把它分成上、中、下 3 个部分。上面部 分为状态的名称,这部分是必须有的;中间 部分为状态变量的名字和值,这部分是可选 的;下面部分是活动表,这部分也是可选的
。
活动表的语法格式如下:
事件名 ( 参数表 )/ 动作表达式
3.6.3 符号
其中,“事件名”可以是任何事件的名称。在 活动表中经常使用下述 3 种标准事件:
entry , exit 和 do 。 entry 事件指定进入该状 态的动作, exit 事件指定退出该状态的动作
,而 do 事件则指定在该状态下的动作。需 要时可以为事件指定参数表。活动表中的动 作表达式描述应做的具体动作。
状态图中两个状态之间带箭头的连线称为状 态转换,箭头指明了转换方向。状态变迁通 常是由事件触发的,在这种情况下应在表示 状态转换的箭头线上标出触发转换的事件表 达式;如果在箭头线上未标明事件,则表示 在源状态的内部活动执行完之后自动触发转 换。
事件表达式的语法如下:
事件说明[守卫条件]/动作表达式 其中,
事件说明的语法为:事件名 ( 参数表 ) 。
守卫条件是一个布尔表达式。如果同时使用 事件说明和守卫条件,则当且仅当事件发生 且布尔表达式为真时,状态转换才发生。如 果只有守卫条件没有事件说明,则只要守卫 条件为真状态转换就发生。
动作表达式是一个过程表达式,当状态转换 开始时执行该表达式。
图 3.3 给出了状态图中使用的主要符号。
图 3.3 状态图中使用的主要符号
为了具体说明怎样用状态图建立系统的行为 模型,下面举一个例子。图 3.4 (见书 57 页)是人们非常熟悉的电话系统的状态图。
图中表明,没有人打电话时电话处于闲置状 态;有人拿起听筒则进入拨号音状态,到达 这个状态后,电话的行为是响起拨号音并计 时;这时如果拿起听筒的人改变主意不想打 了,他把听筒放下 ( 挂断 ) ,电话重又回到 闲置状态;如果拿起听筒很长时间不拨号 ( 超时 ) ,则进入超时状态;……。
3.6.4 例子
层次方框图用树形结构的一系列多层次的矩 形框描绘数据的层次结构。树形结构的顶层 是一个单独的矩形框,它代表完整的数据结 构,下面的各层矩形框代表这个数据的子集
,最底层的各个框代表组成这个数据的实际 数据元素 ( 不能再分割的元素 ) 。
例如,描绘一家计算机公司全部产品的数据 结构可以用图 3.5 中的层次方框图表示。
3.7 其他图形工具
3.7.1 层次方框图
图 3.5 层次方框图的一个例子
闲置 复印 do / 复印
缺纸 do / 警告
卡纸 do / 警告 复印命令
完成复印命
令 发生
卡纸故障
发现缺纸
装满纸
排除了卡纸故障