1第三章软件需求分析需求分析的任务与用户沟通获取需求的方法分析建模与规格说明实体一联系图数据规范化状态转换图其他图形工具验证软件需求小结习题2教学要求教学目的:了解需求分析的任务和步骤、评审标准和过程;掌握基本技术,理解需求规格说明书的作用与组成。教学重点:三种模型的建立、需求规格说明书编写。教学难点:功能模型的建立3补充:数据分析(1)在需求分析阶段,设计数据库的一般步骤为:收集信息标识对象标识每个对象的属性标识对象之间的关系在概要设计阶段和详细设计阶段,设计数据库的步骤为:绘制E-R图将E-R图转换为表格应用三大范式规范化表格3/3934补充:数据分析(2)为了设计结构良好的数据库,需要遵守一些专门的规则,称为数据库的设计范式。第一范式(1NF)的目标:确保每列的原子性。第二范式(2NF)的目标:确保表中的每列,都和主键相关。第三范式(3NF)的目标:确保每列都和主键列直接相关,而不是间接相关。不满足第一范式就不是关系型数据库4/3945补充:数据分析(3)6§3.4实体一联系图实体一联系图(E一R图)描绘系统的数据关系。分析实体一联系有助于对业务或系统数据组成的理解和交互。ER图中包含了实体(数据对象)、关系和属性三种基本成分一、基本概念(1)实体:客观世界中存在的,可区分的事物。属性:实体或数据对象所具有的性质。7数据对象(实体)对软件必须理解的复合信息的表示。所谓复合信息是指具有一系列不同性质或属性的事物,因此仅有单个值的事物(例如姓名)不是数据对象。数据对象可能是:一个外部实体,例如生产或消费信息的任何事物;一个事物,例如一份报告;一次行为,例如一个电话呼叫;一个事件,例如一次警报;一个角色,例如教师;一个组织,例如学校教务处;一个地点,例如图书馆;一个结构,例如一个目录。8一、基本概念(2)联系:客观事物之间的联系。联系分为四种:一对一(1:1)班级和班长,公司和经理,学校和校长一对多联系(1:N)班级和学生,系与教师,文件夹与文件多对一联系(N:1)多对多联系(M:N)课程与学生,教师和课程,读者和图书二、E一R图的结构三种基本元素:9映射基数9/399一对一XXXXYYYYXXXXYYYY一对多XXXXYYY多对一XXXXYYYY多对多客户订单产品MN1N一、基本概念(2)10例:教学E-R图11三、如何建立实体一联系图?1、在需求收集的过程中,列出应用软件或业务过程涉及到的所有“事物”,将其演化成数据对象;2、一次考虑一个对象,定义这个对象和其他对象之间是否存在连接;3、如果存在连接,应创建一个或多个关系;4、对每一个关系,确定其关联类型;5、重复步骤(2)到步骤(4),直到定义了所有关系。6、定义每个实体的属性;7、形式化并复审实体关系图;8、重复步骤(1)到(7),直到数据建模完成。12案例1:E-R图例子设计一简易选课系统,实现如下功能:1.每个系有多门课程,每门课程可以由多个老师教授,每个老师可以教授多门课。2.每个课堂限定了学生人数。3.学生通过学号和密码登录选课系统。通过课堂进行选课,可以跨系选择,没有学分限制。13E-R例子选课系统涉及实体及属性:1.学生属性有学号、姓名、性别、班级、登录密码2.教师属性有工作编号、姓名、性别、所在系3.课堂属性有课堂编号、教师、课程名、上课时间、人数4.课程属性有课程名、性质、应修学生人数、开课系学生学号姓名性别班级登录密码教师编号姓名性别所在系14E-R例子课堂编号教师课程名人数上课时间课程课程名性质开课系应修人数15E-R例子(4)实体间联系:1.一个课程由多个教师教师教授,每个教师教授多门课程2.一个课程开设多个课堂,每个课堂只教授一门课程课程教师讲授mn课程课堂开设1n16E-R例子(5)实体间联系:3.一个教师可担任多个课堂的教学,一个课堂只能由一个老师负责。4.一个学生可选择多个课堂,一个课堂可容纳多个学生。课堂教师上课n1学生课堂选择mn已选人数17E-R例子(6)学生学号姓名性别班级登录密码教师编号姓名性别所在系课堂编号教师课程名人数上课时间选择m1n1已选人数开设n31n4m4n21实体、关系、多重性不能重名18案例2:BBS论坛BBS论坛的基本功能:用户注册和登录,后台数据库需要存放用户的注册信息和在线状态信息;用户发贴,后台数据库需要存放贴子相关信息,如贴子内容、标题等;论坛版块管理:后台数据库需要存放各个版块信息,如版主、版块名称、贴子数等;19设计数据库的步骤标识对象(实体-Entity)标识数据库要管理的关键对象或实体19/3919用户:论坛普通用户、各版块的版主。用户发的主贴用户发的跟贴(回贴)版块:论坛的各个版块信息20设计数据库的步骤20/3920论坛用户呢称密码电子邮件生日性别用户的等级备注信息注册日期状态积分主贴发贴人发贴表情回复数量标题正文发贴时间点击数状态最后回复时间回贴贴子编号回贴人,回贴表情标题正文回贴时间点击数版块版块名称版主本版格言点击率发贴数标识每个实体的属性(Attribute)21设计数据库的步骤标识对象之间的关系(Relationship)21/3921跟贴和主贴:主从关系;主贴和版块:主从关系;跟贴和版块:主从关系;用户和版块:管理关系;22绘制E-R图22/3922管理bbsUser(用户,版主)……出生日期昵称版块名称版主……bbsSection(版块)23绘制E-R图23/3923111M1MMMM用户积分性别用户等级备注信息注册日期版块名称本版留言发贴数状态密码昵称电子邮件生日论坛用户(BBSUser)管理发表跟随属于点击率版主标题发贴人贴子编号正文点击率版块(BBSSection)发贴(BBSTopic)发贴人正文状态贴子编号所在版块最后回复时间发贴表情回复数量点击率发贴时间标题M跟贴(BBSReply)所在版块发贴时间最后回复时间发贴表情1论坛E-R图24如何将E-R图转换为表24/3924将各实体转换为对应的表,将各属性转换为各表对应的列标识每个表的主键列,需要注意的是:没有主键的表添加ID编号列,它没有实际含义,用于做主键或外键,例如用户表中的“UID”列,版块表中添加“SID”列,发贴表和跟贴表中的“TID”列在表之间建立主外键,体现实体之间的映射关系25如何将E-R图转换为表25/3925UID主键TID主键RID主键SID主键26如何将E-R图转换为表26/3926添加各表之间的关系27§3.5数据规范化仅有好的RDBMS并不足以避免数据冗余,必须在数据库的设计中创建好的表结构DrE.F.codd最初定义了规范化的三个级别,范式是具有最小冗余的表结构。这些范式是:第一范式(1stNF-FirstNormalFromate)第二范式(2ndNF-SecondNormalFromate)第三范式(3rdNF-ThirdNormalFromate)2728第一范式(1stNF)第一范式的目标是确保每列的原子性如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)学号科目信息分数中心编号中心名称年龄籍贯28/3928学号科目年龄籍贯分数中心编号中心名称29第二范式(2ndNF)如果一个关系满足1NF,并且除了主键以外的其他列,都依赖于该主键,则满足第二范式(2NF)第二范式要求每个表只描述一件事情29/3929学号科目分数学号科目年龄籍贯分数中心编号中心名称学号籍贯年龄中心编号中心名称30第三范式(3rdNF)如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF)30/3930学号科目分数学号籍贯年龄中心编号中心名称学号科目分数学号籍贯年龄中心编号中心编号中心名称31规范化实例假设某建筑公司要设计一个数据库。公司的业务规则概括说明如下:公司承担多个工程项目,每一项工程有:工程号、工程名称、施工人员等公司有多名职工,每一名职工有:职工号、姓名、性别、职务(工程师、技术员)等公司按照工时和小时工资率支付工资,小时工资率由职工的职务决定(例如,技术员的小时工资率与工程师不同)公司定期制定一个工资报表,如图-1所示31/393132规范化实例32/3932工程号工程名称职工号姓名职务小时工资率工时实发工资A1花园大厦1001齐光明工程师6513845.001002李思岐技术员6016960.001004葛宇宏律师60191140.00小计2945.00A2立交桥1001齐光明工程师6515975.001003鞠明亮工人5517935.00小计1910.00A3临江饭店1002李思岐技术员60181080.001004葛宇洪技术员6014840.00小计1920.00图-1某公司的工资表33规范化实例33/3933工程号工程名称职工号姓名职务小时工资率工时A1花园大厦1001齐光明工程师6513A1花园大厦1002李思岐技术员6016A1花园大厦1001齐光明工程师6513A1花园大厦1003鞠明亮工人5517A3临江饭店1002李思岐技术员6018A3临江饭店1004葛宇洪技术员6014图-2某公司的项目工时表34规范化实例表中包含大量的冗余,可能会导致数据异常:更新异常例如,修改职工号=1001的职务,则必须修改所有职工号=1001的行添加异常若要增加一个新的职工时,首先必须给这名职工分配一个工程。或者为了添加一名新职工的数据,先给这名职工分配一个虚拟的工程。(因为主关键字不能为空)删除异常例如,1001号职工要辞职,则必须删除所有职工号=1001的数据行。这样的删除操作,很可能丢失了其它有用的数据34/393435规范化实例采用这种方法设计表的结构,虽然很容易产生工资报表,但是每当一名职工分配一个工程时,都要重复输入大量的数据。这种重复的输入操作,很可能导致数据的不一致性。35/393536应用范式规范化设计36/3936一张表描述了多件事情,如图-3所示。工程号工程名称职工号姓名职务小时工资率工时图-3函数依赖图工程信息员工信息项目工时信息37应用第二范式规范化37/3937工程号工程名称职工号姓名职务小时工资率工程号职工号工时图-4应用第二范式工程表员工表项目工时表满足第三范式吗?38应用第三范式规范化38/3938工程号工程名称职工号姓名职务号职务号职务小时工资率工程号职工号工时工程表员工表职务表工时表39规范化和性能的关系为满足某种商业目标,数据库性能比规范化数据库更重要通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间通过在给定的表中插入计算列(如成绩总分),以方便查询进行规范化的同时,还需要综合考虑数据库的性能。39/393940总结1-1在需求分析阶段,设计数据库的一般步骤为:收集信息标识对象标识每个对象的属性标识对象之间的关系在概要设计阶段和详细设计阶段,设计数据库的步骤为:绘制E-R图将E-R图转换为表格应用三大范式规范化表格40/394041总结1-2为了设计结构良好的数据库,需要遵守一些专门的规则,称为数据库的设计范式。第一范式(1NF)的目标:确保每列的原子性。第二范式(2NF)的目标:确保表中的每列,都和主键相关。第三范式(3NF)的目标:确保每列都和主键列直接相关,而不是间接相关。不满足第一范式就不是关系型数据库41/394142ER图练习用E-R图表示某个工厂物资管理的概念模型实体仓库:仓库号、面积、电话号码零件:零件号、名称、规格、单价、描述供应商:供应商号、姓名、地址、电话号码、帐号项目:项目号、预算、开工日期职工:职工号、姓名、年龄、职称实体之间的联系如下:一个仓库可以存放多种零件,一种零件可以存放在多个仓库中。仓库和零件具有多对多的联系。用库存量来表示某种零件在某个仓库中的数量。一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作,仓库和职工之间是一对多的联系。职工实体型中具有一对多的联系职工之间具有领导-被领导关