《数据库设计方法.ppt》由会员分享,可在线阅读,更多相关《数据库设计方法.ppt(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、问题提出设计关系数据库的过程是什么?各个阶段的特点是什么?第4 章 数据库设计方法知识要求:数据库系统的设计过程 关系完整性 关系术语 E-R绘制及转换关系模式4.1 数据库系统的设计过程新奥尔良(New Orleans)方法,它将数据库设计分为四个阶段:需求分析(分析用户需求)、概念设计(信息分析和定义)、逻辑设计(设计实现)和物理设计(物理数据库设计)。其后,等将数据库设计分为5个步骤。主张将数据库设计当成一步步的过程并采用一些辅助手段实现每一过程。目前是按照6个步骤进行。4.1 数据库系统的设计过程 需求分析阶段 概念结构设计阶段 逻辑结构设计阶段 物理结构设计阶段 数据库设计的实施阶段
2、,即应用程序编 码、调试、试运行阶段(应用程序设计)数据库系统的运行与维护阶段设计阶段设 计 描 述数 据 处 理需求分析 数据字典、全系统中数据项、数据流、数据存储的描述数据流图和定表(判定树)数据字典中处理过程的描述概念结构设计概念模型(E-R图)数据字典系统说明书。包括:(1)新系统要求、方案和概图(2)反映新系统信息的数据流图 逻辑结构设计某种数据模型关系模型系统结构图非关系模型(模块结构图)物理设计 存储安排存取方法选择存取路径建立模块设计IPO表实施阶段(应用程序设计)编写模式装入数据数据库试运行程序编码编译联结测试运行维护 性能测试,转储/恢复数据库重组和重构新旧系统转换、运行、
3、维护(修正性、适应性、改善性维护)1系统需求分析阶段 需求分析是整个数据库设计过程的基础,要收集数据库所有用户的信息内容和处理要求,并加以规格化和分析。这是最费时、最复杂的一步,但也是最重要的一步,相当于待构建的数据库大厦的地基,它决定了以后各步设计的速度与质量。需求分析做得不好,可能会导致整个数据库设计返工重做。在分析用户需求时,要确保用户目标的一致性。2概念结构设计阶段 概念设计是把用户的信息要求统一到一个整体逻辑结构中,此结构能够表达用户的要求,是一个独立于任何DBMS软件和硬件的概念模型。(用实体联系模型E-R表示)3逻辑结构设计阶段 逻辑设计是将上一步所得到的概念模型转换为某个DBM
4、S所支持的数据模型,并对其进行优化。(得到关系模式)4物理设计阶段 物理设计是为逻辑数据模型建立一个完整的能实现的数据库结构,包括存储结构和存取方法。上述分析和设计阶段是很重要的,如果做出不恰当的分析或设计,则会导致一个不恰当或反应迟钝的应用系统。5数据库实施阶段(应用程序设计)根据物理设计的结果把原始数据装入数据库,建立一个具体的数据库并编写和调试相应的应用程序。应用程序的开发目标是开发一个可依赖的有效的数据库存取程序,来满足用户的处理要求。6数据库运行与维护阶段 这一阶段主要是收集和记录实际系统运行的数据,数据库运行的记录用来提高用户要求的有效信息,用来评价数据库系统的性能,进一步调整和修
5、改数据库。在运行中,必须保持数据库的完整性,并能有效地处理数据库故障和进行数据库恢复。在运行和维护阶段,可能要对数据库结构进行修改或扩充。4.1.1 学生管理系统的设计E-R 图概念结构模型设计4.1.2 转化为关系模式(逻辑结构模型设计)1、院系关系(院系编号,名称,负责人)2、教职工关系(教职工号,教师姓名,性别,生日,岗位类别,学历,职称,所属院系,所学专业,联系电话,家庭地址)等等4.1.3 物理结构模型设计院系信息表(College)序号 字段名 字段类型 说明 备注1 colID Char(6)院系编号2 colName Varchar(20)院系名称,不能为空3 colFuzer
6、en Char(8)院系负责人 教职工号,外键4.2 数据库的概念设计 案例 概念设计的目标是将需求分析得到的用户需求抽象为数据库的概念结构,即概念模式。描述概念模式的是E-R图。E-R图包含三个基本成分:实体、联系、属性。1、实体型:用矩形表示,矩形框内写明实体名。2、属性:用椭圆形表示,并用无向边将其与相应的实体连接起来。3、联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,l:n或m:n)。学生学号学习学习学生课程n m概念设计的的一般步骤1 初始化工程 这个阶段的任务是从目的描述和范围描述开始,确定建模目标,开发建模计划,组织
7、建模队伍,收集源材料,制定约束和规范。其中收集源材料是这阶段的重点。通过调查和观察结果,由业务流程、原有系统的输入输出、各种报表、收集的原始数据形成了基本数据资料表。2 定义实体 实体集合的成员都有一个共同的特征和属性集,可以从收集的源材料基本数据资料表中直接或间接标识出大部分实体。根据源材料名字表中表示物的术语以及具有“代码”结尾的术语,如客户代码、代理商代码、产品代码等将其名词部分代表的实体标识出来,从而初步找出潜在的实体,形成初步实体表。3 定义联系 根据实际的业务需求、规则和实际情况确定出连接关系、关系名和说明,确定关系类型,是标识关系、非标识关系(强制的或可选的)还是非确定关系、分类
8、关系。如果子实体的每个实例都需要通过和父实体的关系来标识,则为标识关系,否则为非标识关系。非标识关系中,如果每个子实体的实例都与而且只与一个父实体关联,则为强制的,否则为非强制的。如果父实体与子实体代表的是同一现实对象,那么它们为分类关系。4 定义码 为实体标识候选码属性,以便唯一识别每个实体,再从候选码中确定主码。为了确定主码和关系的有效性,通过非空规则和非多值规则来保证,即一个实体的一个属性不能是空值,也不能在同一个时刻有一个以上的值。5 定义属性 从源数据表中抽取说明性的名词开发出属性表,确定属性的所有者。定义非主码属性,检查属性的非空及非多值规则。此外,还要检查完全依赖函数规则和非传递
9、依赖规则,保证一个非主码属性必须依赖于整个主码主码且仅仅是依赖于主码。以此得到了至少符合关系理论第三范式。6 定义其他对象和规则 定义属性的数据类型、长度、精度、非空、缺省值、约束规则等。定义触发器、存储过程、视图、角色、同义词、序列等对象信息。设计E-R图的过程1 设计局部E-R图 局部ER模型设计是从需求分析数据流图和需求文档出发确定实体和属性,并根据数据流图中表示的对数据的处理、确定实体之间的联系。2 综合成初步E-R图 局部E-R图设计完成之后,将所有的局部E-R图综合成全局概念结构。它不仅要支持所有的局部E-R模式,而且必须合理地表示一个完善、一致的数据概念结构。一般可以使同一个实体
10、只出现一次,进行两两合并,当然还要消除合并带来的一些属性、命名和结构的冲突,便可产生总体E-R图。3 优化成基本E-R图 初步E-R图是在对现实世界进行调查研究之后综合出来的全局和整体概念模型,但并不一定是最优的。需要经过仔细分析找出潜在的数据冗余,再根据应用需求确定是否消除冗余的属性或者冗余的联系。以上仅仅举了商品进销存管理系统概念设计中一个非常简单的例子,目的是使读者对概念设计有一个初步的了解。实际上的概念设计是非常复杂的,只能在工作中逐步学习、积累经验。4.2.3 数据库概念设计案例介绍 案例1:学校教务管理系统概念设计。根据系统需求分析得到学生实体,属性有学号(主码)、姓名、性别、出生
11、日期和专业等。课程实体,属性有课程号(主码)、课程名和学分等。学生与课程实体之间通过选课建立联系,并派生出新的属性成绩。假定一门课程有若干名学生选修,而一名学生可以选修多门课程,课程和学生之间具有多对多的联系。学生选修课程局部E-R图如右图 示。根据系统需求分析还得到教师实体,属性有职工号(主码)、姓名、性别、出生日期和职称等,与课程实体之间通过授课建立联系,并派生出新的属性评价。假定一门课程可以有若干名教师讲授,每一名教师可以讲授多门课程,教师和课程之间具有多对多的联系。教师授课局部E-R图,如下图所示。根据系统需求分析还可以得到教材实体,属性有教材号(主码)、教材名、出版社和价格等,与课程
12、实体之间通过选用建立联系,并派生出新的属性数量。假定一门课程选用一种教材,一种教材被一门课选用,教材和课程之间具有一对一的联系。与学生选修课程和教师授课局部E-R图一起构成教务管理系统综合E-R图如下图所示。为了简单起见,图中学生、课程和教师实体只保留其主码属性。案例2:图书借阅系统概念设计。根据系统需求分析,得到读者实体,属性有读者编号、姓名、读者类型和已借数量等。图书实体,属性有图书编号、书名、作者、出版社、出版日期和定价等。读者和图书实体之间通过借阅建立联系,并派生出借期和还期属性。假定一位读者可以借阅多本图书,一本图书可以经多位读者借阅,读者和图书之间的借阅联系类型是多对多的。其E-R
13、图如下图 所示。档案材料归档班级组成管理宿舍住宿学生教学教师选修开设教室 课程讲授教材成绩档案号 档案资料 班级号 地址111宿舍编号地址床位数1 nnnm1nmn1n1m 1地址容量教室号课程号课程名学分书号书名价钱职工号 姓名性别职称4.2.3 E-R 模型(概念模型)转换为逻辑模型一、E-R模型转换为关系模型的规则:ER模型由实体、实体的属性和实体之间的联系3个要素组成,而关系模型的逻辑模型是一组关系模式的集合。将ER模型转换为关系模型,实际上是将实体、实体的属性和实体间的联系转化为关系模式,并确定这些关系模式的属性和主键。每一个实体集对应于一个关系模式*实体名关系名*实体属性关系属性实
14、体间的联系一般对应于一个关系*联系名关系名实体和联系中的关键字对应的属性关系模式的关键字二、转换规则详细描述1)一个实体转换为一个关系模式在这种情况下,关系模式的属性就是实体的属性,关系模式的主键就是实体标识符。比如:档案材料(档案号,档案资料)同理可以得到其余的关系。2)两个实体之间的联系A、一个1:1的联系可以转化为一个独立的关系模式,也可以与任意一端对应的关系模式合并。一般采取合并居多。若转换为一个独立的关系模式,则与该联系相连的各实体的实体标识符和联系本身的属性都是关系模式的属性,关系模式的主键为任一端实体的实体标识符,另一端的实体标识符为关系模式的候选键,且各实体标识符同时为外键。若
15、与某一端实体对应的关系模式合并,则需要在该关系模式中加入另一端的实体标识符和联系本身的属性,该实体标识符同时为外键,合并后关系模式的主键不变。例如:图中的“管理”联系,可以转化为 管理(职工号,班级号)或者管理(班级号,职工号)(下划线为表示主键,斜体表示外键)管理和班级合并为班级(班级号,地址,职工号)或者管理与教师合并为教师(职工号,姓名,性别,职称,班级号)B、一个1:n联系可以转化为一个独立的关系模式,也可以与n端的关系模式合并。若转换为一个独立的关系模式,则与该联系相连的各实体的实体标识符以及联系本身的属性均为该关系模式的属性,关系模式的主键为n端实体的实体标识符,且各实体标识符同时
16、为外键。若与n端对应的关系模式合并,则需要在n端关系模式中加入1端的实体标识符和联系本身的属性,该实体标识符同时为外键,合并后关系模式的主键不变。例如:图中的“组成”联系为1:n。可以转化为:不合并,转化为关系:组成(学号,班级号)合并到“学生”关系模式,只需要在“学生”中加入“班级”实体标识符(班级号)就行了:学生(学号,姓名,年龄,性别,班级号)C、一个m:n联系转换为一个关系模式与该联系相连的各实体的实体标识符以及联系本身的属性均是关系模式的属性,各实体的实体标识符的组合为关系模式的主键,且各实体标识符同时为外键。例如:选修(学号,课程号,成绩)3)3个或者3个以上的实体间的多元联系转换
17、为一个关系模式与该多元联系相连的各实体的实体标识符以及联系本身的属性均是关系模式的属性,各实体的实体标识符的组合是关系模式的主键,各标识符同时为外键。例如“讲授”联系。讲授(课程号,职工号,书号)4.3 关系数据结构 关系1 关系术语2 关系术语与其他术语的对照34.3.1 关系 关系的基本定义关系是满足一定条件的二维表,称为关系(relation),在关系模型中,无论概念世界中的实体还是实体之间的联系均由关系(表)来表示。例如:学生情况表 Student,表2-1。SID Sname Sex Birthday Specialtyt2013216001 赵成刚 男 1986年5月 计算机应用2
18、013216002 李敬 女 1986年1月 软件技术2013216003 郭洪亮 男 1986年4月 电子商务2013216004 吕珊珊 女 1987年10月 计算机网络2013216005 高全英 女 1987年7月 电子商务2013216006 郝莎 女 1985年8月 电子商务2013216007 张峰 男 1986年9月 软件技术2013216111 吴秋娟 女 1986年8月 电子商务4.3.2 关系术语 关系术语 关系:每个二维表称为一个关系例如:学生情况表Student 关系型:表的所有列标题,描述实体或联系的型例如:(SID,Sname,Sex,Birthday,Speci
19、alty)关系值:表的列对应的数据,描述实体或联系的值例如:2013216003,郭洪亮,男,1992年4月,电子商务 2013216004,吕珊珊,女,1993年10月,计算机网络 元组:表中的一行,描述一个实体或联系例如:2013216004,吕珊珊,女,1993年10月,计算机网络4.3.2 关系术语 关系术语 属性:表中的一列的标题例如:SID,Sname 属性值:表中的一列对应的数据,描述实体或联系的特征例如:2013216003,郭洪亮 域:属性的取值范围 主码:表中的某个属性或属性组,能惟一确定一个元组,即确定一个实体例如:SID 关系模式:对关系的描述,表示为关系名(属性1,属
20、性2,属性n)例如:Student(SID,Sname,Sex,Birthday,Specialty)Course(CID,Cname,Credit)SC(SID,CID,Grade)4.3.2 关系术语 关系术语 候选码(Candidate Key):若关系中的某一属性或属性组的值能惟一的标识一个元组,则称该属性或属性组为候选码,候选码可以有多个。例如:关系Student中的属性SID和Sname(假设没有重名的学生),关系SC中的属性组SID,CID 外码(Foreign Key,FK):一个关系中的属性或属性组不是本关系的主码,而是另一关系的主码,则称该属性或属性组是该关系的外码。也称为
21、外关键字。例如:关系SC中的属性SID和CID 主属性:能作为候选码的属性。例如:关系Student中的属性SID 和Sname(假设没有重名的学生),关系SC中的属性SID和CID 非主属性:除了主属性的其他属性。例如:关系Student中的属性Sex,Birthday,Specialty 关系SC中的属性SID和CID4.3.3 关系术语与其他术语的对照 概念模型中 关系理论中 关系数据库中 某些软件中实体集Entity set关系Relation表Table表或数据库文件实体Entity元组Tuple行Row记录Record属性Attribute属性Attribute列Column字段F
22、ield主码Primary key主码Primary key关键字Primary key关键字Primary key4.4 关系的完整性 关系模型的完整性规则是对关系的某种约束条件。关系模型中三类完整性约束:1.实体完整性2.参照完整性3.用户定义的完整性 实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。一、实体完整性 实体完整性规则(Entity Integrity)若属性A是基本关系R的主属性,则属性A不能取空值。例:学生 如果主属性“学号”取空值,则该元组就没有意义,即该元组不能表示是哪一个“学生”实体的信息。用实体完整性机制可
23、以制止主属性为空值的元组输入到关系表中。学号 年龄 系名 年级2013004 19计算机20132013006 20航海20132013008 18轮机2013 一个关系模式 对应一个实体型,一个关系对应一个实体集,一个元组对应一个实体。二、参照完整性 1.关系间的引用 2.外码 3.参照完整性规则1.关系间的引用 在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在着关系与关系间的引用。看几个例子:例1 学生实体、专业实体以及专业与学生间的一对多联系。学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)“学生”关系中的 专 业 号引用“专业”关系中的专业号,通过这种引用可以
24、查得相应的专业名。关系间的引用(续)学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)学号 姓名 性别 系别号 年龄08101张三 男1 1908102李四 女2 1908103王五 男1 20系别号 系别名称1计算机2航海3港航学生(学号,姓名,性别,系别号,年龄),主码为学号系别(系别号,系别名称),主码为系别号该字段和系别关系的系别号相对,就被称为外键或者外码学生关系被称为参照关系,系别关系被称为被参照关系关系间的引用(续)例2 学生、课程、学生与课程之间的多对多联系 学生(学号,姓名,性别,专业号,年龄)课程(课程号,课程名,学分)选修(学号,课程号,成绩)“选修”关系中的学
25、号引用“学生”关系中的学号,通过这种引用可以查得相应的姓名。“选修”关系中的课程号引用“课程”关系中的课程号,通过这种引用可以查得相应的课程名。最后,可以得到“姓名 课程名 成绩”这样的信息,而不是“学号,课程号,成绩”这样的信息。关系间的引用(续)学生学生选课 课程2 外码 外码 设 F是基本关系 R的一个或一组属性,但不是关系 R的码。如果F与基本关系 S的主码Ks相对应,则称F是基本关系 R的外码 基本关系R 称为参照关系 基本关系S 称为被参照关系或目标关系 例:“学生”关系中的专业号(外码)引用“专业”关系中的专业号。学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)外码(
26、续)说明 关系R和S不一定是不同的关系。目标关系 S的主码Ks和参照关系的外码F必须定义在同一个域上。外码并不一定要与相应的主码同名。当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别。3.参照完整性规则 参照完整性规则就是定义外码与主码之间的引用规则。参照完整性规则 若属性(或属性组)F是基本关系 R的外码,它与基本关系 S的主码Ks相对应(基本关系 R和 S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值。用参照完整性机制可以制止外码取对应的主码中不存在的值输入到关系表中。参照完整性规则(续)例1 学生-
27、专业数据库:学 生(学 号,姓 名,性 别,专 业 号,年 龄)专业(专业号,专业名)“学生”关系中的“专 业 号”不能取“专业”关系中不存在的专业号。参照完整性规则(续)例2 由于“学号”和“课程号”是“选修”关系中的主属性,按照实体完整性和参照完整性规则,它们只能取相应被参照关系中已经存在的主码值,而不能取不存在的值。学生学生选课课程参照完整性规则(续)例3“学生”关系中,“班长”属性值可以取两类值:(1)空值,表示该学生所在班级尚未选出班长,或该学生本人即是班长;(2)非空值,这时该值必须是本关系中某个元组的学号值,不能取不存在的学号。三、用户定义的完整性 用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。用户定义的完整性(续)例 课程(课程号,课程名,学分)“课程名”属性必须取唯一值 非主属性“课程名”也不能取空值“学分”属性只能取值1,2,3,44.5 小结数据库的设计步骤:需求分析 概念结构设计 逻辑结构设计 物理结构设计 实施阶段 运行和维护概念结构设计:E-R图的绘制和合成 E-R转换为关系模式。关系完整性:实体完整性:主码参照完整性:外码、引用用户定义完整性:数据类型、约束我学习,我快乐