数据库设计贯通逻辑及物理设计_第1页
数据库设计贯通逻辑及物理设计_第2页
数据库设计贯通逻辑及物理设计_第3页
数据库设计贯通逻辑及物理设计_第4页
数据库设计贯通逻辑及物理设计_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库设计贯通逻辑及物理设计第一页,共四十二页,编辑于2023年,星期三参考书目:数据库系统概论高等教育出版社王珊萨师煊数据库系统教程高等教育出版社施伯乐等数据库设计、应用开发与管理电子工业出版社MichaelV.Mannino著唐常杰等译UML和统一过程-实用面向对象的分析和设计机械工业出版社方贵宾等译UML应用建模实践过程机械工业出版社尤克滨编著第二页,共四十二页,编辑于2023年,星期三逻辑结构设计步骤ER图向关系模型的转换关系模型的优化视图(view)设计第三页,共四十二页,编辑于2023年,星期三ER图向关系模型的转换Entity1:MrelationshipN:MrelationshipIdentifyingrelationshipOptional1-MrelationshipGeneralizationHierarchy1-1Relationships第四页,共四十二页,编辑于2023年,星期三基本转化规则

basicconversionrules规则一、Eachentitytypebecomesatable(实体转化为表,实体的主码成为表的主码,不包括弱实体,属性转化成列)第五页,共四十二页,编辑于2023年,星期三基本转化规则

basicconversionrules规则二、Each1-Mrelationshipbecomesaforeignkeyinthetablecorrespondingtothechildentity(一对多联系转化为子表中参照父表的外键,如果父表对子表来说是强制mandatory的,则外键不能为NULL)或

1-MrelationshipbecomesatablewithaprimarykeyfromM-sideoftherelationship(也可转化成独立的关系,与该联系相连的各实体的码以及联系本身的属性组成关系的属性,关系的码为M端实体的码)【少采用,比较规则五】第六页,共四十二页,编辑于2023年,星期三规则三、EachM-Nrelationshipbecomesanassociativetablewithacombinedprimarykey.(多对多联系转化成为一张独立的表,其主码由联系两端的实体的主码共同组成)第七页,共四十二页,编辑于2023年,星期三规则四、Eachidentifyingrelationshipaddsacolumntoaprimarykey.(标识依赖在转化时,将父表的主码添加到弱实体中,弱实体的主码包括:1弱实体自己的主码2标识实体【也就是父表】的主码)第八页,共四十二页,编辑于2023年,星期三规则五、Optional1-MRule(可选的一对多联系,所谓“可选”,指“1”端,也就是父表端不强制,最小基数可为0的情况)如:第九页,共四十二页,编辑于2023年,星期三下图表示是一个可选的一对多联系,学生可以住宿舍,也可以不住宿舍(比如有回家住的学生),这里,dorm对student来说是可选的,因此dormNo作为Student表的外码,可以为空(Null)为了避免这种空值,我们将live联系转化成关系表Optional第十页,共四十二页,编辑于2023年,星期三该表的主码是子表(Student实体)的主码该表的外码是两端的实体的主码的组合该表的外码不允许空NULL注意:规则五可以避免NULL,但是多生成了一个表,增加了查询的复杂性,许多应用中,避免额外的表比避免NULL更重要第十一页,共四十二页,编辑于2023年,星期三规则六、转化泛化层次结构。RDBMS不直接支持泛化,各CASE工具的实现方法有别第十二页,共四十二页,编辑于2023年,星期三规则七、1:1relationship(转化一对一联系)方法一:直接将1:1联系转化成两个外码(可能会产生NULL)方法二:如果联系的某一端实体是可选的(optional),则可以在另一个实体中取消外码,以消除NULL举例:第十三页,共四十二页,编辑于2023年,星期三方法一:冗余联系第十四页,共四十二页,编辑于2023年,星期三方法二:在PowerDesigner中可通过设置dominant关系来实现第十五页,共四十二页,编辑于2023年,星期三CREATETABLEOffice(…PRIMARYKEY(OfficeNo),FOREIGNKEY(EmpNo)REFERENCESEmployee,UNIQUE(EmpNo))第十六页,共四十二页,编辑于2023年,星期三逻辑模型的优化规范化分析数据依赖关系,消除部分依赖、传递依赖和多值依赖反规范化涉及到多个关系的查询时,需进行关系的连接运算,产生很高的代价关系模式的分解80/20原则,大关系中,经常被使用的数据只占所有数据的20%,把这20%分解出来,形成独立的子关系水平分解和垂直分解注意保持无损连接性和函数依赖第十七页,共四十二页,编辑于2023年,星期三考虑查询某笔贷款的贷款人和担保人等情况在表Loan中存储LenderNo和LenderName是不符合BCNF范式的,但可以减少表Loan和Lender的连接仔细定夺,考虑是否要在Loan表中增加来自Guarantor、Lender和Institution表中的Name如果需要,则反规范化就是一个好方法,

因为Guarantor、Lender和Institution表是相对稳定的虽然不符合BCNF范式,如果只查询,不更新,则没有更新异常的问题第十八页,共四十二页,编辑于2023年,星期三视图(view)设计定义视图是一个虚拟表,其内容由查询定义同真实的表一样,视图包含一系列带有名称的列和行数据但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成对其中所引用的基础表来说,视图的作用类似于筛选第十九页,共四十二页,编辑于2023年,星期三视图定义视图是一个虚拟表,其内容由查询定义从用户角度来看一个视图是从一个特定的角度来查看数据库中的数据从数据库系统内部来看视图是由一张或多张表中的数据组成的从数据库系统外部来看视图就如同一张表一样,对表能够进行的一般操作都可以应用于视图,例如查询,插入,修改,删除操作等第二十页,共四十二页,编辑于2023年,星期三视图的作用视点集中视图集中即是使用户只关心它感兴趣的某些特定数据和他们所负责的特定任务设:产品(产品号,产品名,规格,单价,生产车间,负责人,产品成本,产品合格率,质量等级)可在产品关系上建立两个视图:为一般顾客建立视图:产品1(产品号,产品名,规格,单价)为产品销售部门建立视图:产品2(产品号,产品名,规格,单价,生产车间,负责人,产品成本)第二十一页,共四十二页,编辑于2023年,星期三视图的作用简化操作视图大大简化了用户对数据的操作。因为在定义视图时,若视图本身就是一个复杂查询的结果集,这样在每一次执行相同的查询时,不必重新写这些复杂的查询语句,只要一条简单的查询视图语句即可可见视图向用户隐藏了表与表之间的复杂的连接操作第二十二页,共四十二页,编辑于2023年,星期三视图的作用定制数据视图能够实现让不同的用户以不同的方式看到不同或相同的数据集。因此,当有许多不同水平的用户共用同一数据库时,这显得极为重要合并分割数据在有些情况下,由于表中数据量太大,故在表的设计时常将表进行水平分割或垂直分割,但表的结构的变化却对应用程序产生不良的影响。如果使用视图就可以重新保持原有的结构关系,从而使外模式保持不变,原有的应用程序仍可以通过视图来重载数据第二十三页,共四十二页,编辑于2023年,星期三视图的作用安全性视图可以作为一种安全机制通过视图用户只能查看和修改他们所能看到的数据,其它数据库或表既不可见也不可以访问如果某一用户想要访问视图的结果集,必须授予其访问权限。视图所引用表的访问权限与视图权限的设置互不影响如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等第二十四页,共四十二页,编辑于2023年,星期三视图可以由以下任意一项组成:1一个基表的任意子集2两个或两个以上的基表的合集3两个或两个以上基表的交集4一个或者多个基表运算的结果集合5另一个视图的子集.第二十五页,共四十二页,编辑于2023年,星期三利用企业管理器创建与管理视图用T-SQL语句创建与管理视图创建视图:CREATEVIEW<视图名>【(列名组)】AS<子查询>删除视图:DROPVIEW<索引名>第二十六页,共四十二页,编辑于2023年,星期三举例:创建视图,显示学生的姓名和该学生的选课号和成绩CREATEVIEWv_scASSELECTs.sn,o,sc.scoreFROMsinnerjoinscONs.sno=sc.sno练习:创建显示学生姓名、课程名和成绩的视图第二十七页,共四十二页,编辑于2023年,星期三举例现有‘员工表’和‘项目表’,选择其中的部分字段和记录创建视图,并且限制表‘员工表’中的记录只能是部门为“项目部”的记录集合,视图定义为view_part代码:CREATEVIEWview_partASSELECT员工表.编号,员工表.姓名,员工表.性别,员工表.所属部门,项目表.项目编号,项目表.名称FROM项目表INNERJOIN员工表ON项目表.负责人=员工表.编号WHERE员工表.所属部门='项目部'第二十八页,共四十二页,编辑于2023年,星期三可以在设计视图时,重新定义列的命名,使其与用户命名习惯一致例:如第一题,但重新定义列名为中文CREATEVIEWv_sc(姓名,选课号,成绩)ASSELECTs.sn,o,sc.scoreFROMsinnerjoinscONs.sno=sc.sno第二十九页,共四十二页,编辑于2023年,星期三两个参数:Withencryption数据加密,显示的是乱码Withcheckoption强制视图的修改操作必须符合select语句设定的条件,否则不予执行第三十页,共四十二页,编辑于2023年,星期三Withcheckoption例:CREATEVIEWygb_viewASSELECT*FROM员工表WHERE员工表.性别=‘女’执行下列语句,插入新记录:INSERTINTOygb_view(姓名,性别,工资)values(‘李立三’,‘男’,2300)插入操作成功,但不合理!解决办法:使用withcheckoption:CREATEVIEWygb_viewAS

SELECT*FROM员工表WHERE员工表.性别=‘女’Withcheckoption同样,插入新记录:INSERTINTOygb_view(姓名,性别,工资)values(‘李立三’,‘男’,2300)时,插入操作将失败!第三十一页,共四十二页,编辑于2023年,星期三数据库设计贯通

—物理设计部分第三十二页,共四十二页,编辑于2023年,星期三从索引说起分类唯一索引

/非唯一索引唯一索引是不允许其中任何两行具有相同索引值的索引主键索引/非主键索引主键索引是唯一索引的特定类型聚集索引表中行的物理顺序与索引顺序相同一个表只能包含一个聚集索引非聚集索引不改变行的物理顺序由于在建立聚集索引时会随时改变行的物理顺序,应在非聚集索引前建立聚集索引聚集索引比非聚集索引快第三十三页,共四十二页,编辑于2023年,星期三索引在“学生选课数据库”中,创建索引如下:列名聚集索引唯一索引非聚集索引是否主键s.sno√√√s.sn√o√√√√√Sc.sno√√√So第三十四页,共四十二页,编辑于2023年,星期三方法一:企业管理器选中学生表,右击“设计表”右击“索引/键”打开“属性”对话框为学号sno创建聚集、唯一索引参见右图第三十五页,共四十二页,编辑于2023年,星期三方法一:企业管理器选中学生表,右击“设计表”右击“索引/键”打开“属性”对话框为姓名sn创建非聚集索引参见右图第三十六页,共四十二页,编辑于2023年,星期三方法二:使用SQL命名为课程号cno创建聚集、唯一索引的命令如下:CreateuniqueclusteredindexIN_CNOonc(cno)Withpad_index,fillfactor=80为课程名cn创建非聚集、唯一索引的命令如下:CreateuniqueindexIN_CNonc(cnDESC)注:pad_index需与fillfactor一起使用Fillfactor=填充因子:用于指定在创建索引时,每个索引页的数据占索引页大小的百分比,范围为1~100DESC表示为降序索引,默认是升序第三十七页,共四十二页,编辑于2023年,星期三为选课表sc创建聚集、唯一索引的命令如下:CreateuniqueclusteredindexIN_SConsc(sno,cno

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论