已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库设计规范化反规范化=*作者:bingghost(只是学习笔记 部分内容来源于网络)*邮箱:443530836*贴吧:Radasm吧(按Ctrl+鼠标点击进入)=一.实体关系模型1.实体关系图(Entity-relation diagram)(1).实体实质客观存在的事物,具有一些属性.如人,汽车,学校等.(2).实体关系图是表示实体及实体间关系的图解形式,是数据库设计的初步.常简称E-R图(3).实体关系图的表现形式:实体:矩形框属性:椭圆关系:菱形框2.实体图示例3.实体-关系图(E-R)示例4.同类实体间可能存在关系5.二个实体之间可存在多种关系二.实体之间的关系模型1.一对一的关系 大学与校长的关系2.一对多的关系 员工与部门的关系3.多对多的关系 顾客与商品的关系三.关系的实现关系的实现是用转换规则把E-R图转换成表.(1)对于实体,把实体名转换成表名,把实体中的属性转换成表中的字段(2)对于实体间的关系,把实体关系名转换为关系表名,把相关实体的主键和关系属性转换成表中的字段(3)把具有相同主键的表合并四.转换规则1、一对一的关系可把任一实体的主键放入另一实体中,成为外键。2. 一对多的关系 把一实体中的主键放入到多实体中,成为其外键。3、多对多的关系 把相关实体中的主键放入到一个新实体中,成为新实体的组合主键。学生信息表:学生表SnoSnameSsex001李明男002王华男003陈洁女课程表:课程表CnoCname001语文002数学003英语成绩表:成绩表SnoCnoScore0010028000200175001003620020026800100599003005100五.数据库设计三大范式为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。在实际开发中最为常见的设计范式有三个:1第一范式(确保每列保持原子性)第一范式是最基本的范式。数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。上表所示的用户信息遵循了第一范式的要求,这样在对用户使用城市进行分类的时候就非常方便,也提高了数据库的性能。2第二范式(确保表中的每列都和主键相关)在满足第一范式的基础上.第二范式需要确保数据库表中的每一个属性都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。(表中的属性必须是由于2个主键(复合,联合)确定的)这样就产生一个问题:这个表中是以订单编号和商品编号作为联合主键。这样在该表中商品名称、单位、商品价格等信息不与该表的主键相关,而仅仅是与商品编号相关。所以在这里违反了第二范式的设计原则。而如果把这个订单信息表进行拆分,把商品信息分离到另一个表中,把订单项目表也分离到另一个表中,就非常完美了。如下所示。这样设计,在很大程度上减小了数据库的冗余。如果要获取订单的商品信息,使用商品编号到商品信息表中查询即可。3第三范式(确保每列都和主键列直接相关,而不是间接相关)第三范式需要确保数据表中的字段和主键直接对应不依靠其他的中间字段。这样在查询订单信息的时候,就可以使用客户编号来引用客户信息表中的记录,也不必在订单信息表中多次输入客户信息的内容,减小了数据冗余。举一个反例:学生表:学号(PK) 姓名 学院 学院地点(符合2NF,不符合3NF)修改:学生表:学号(PK) 姓名 学院ID(FK)学院表学院ID(PK) 学院地点六. 反规范设计是否规范化的程度越高越好?这要根据需要来决定,因为“分离”越深,产生的关系越多,关系过多,连接操作越频繁,而连接操作是最费时间的,特别对以查询为主的数据库应用来说,频繁的连接会影响查询速度。所以,关系有时故意保留成非规范化的,或者规范化以后又反规范了,这样做通常是为了改进性能。反规范的好处是降低连接操作的需求、降低外码和索引的数目,还可能减少表的数目,相应带来的问题是可能出现数据的完整性问题。加快查询速度,但会降低修改速度。因此决定做反规范时,一定要权衡利弊,仔细分析应用的数据存取需求和实际的性能特点,好的索引和其它方法经常能够解决性能问题,而不必采用反规范这种方法。1.常用的反规范技术在进行反规范操作之前,要充分考虑数据的存取需求、常用表的大小、一些特殊的计算(例如合计)、数据的物理存储位置等。常用的反规范技术有增加冗余列、增加派生列、重新组表和分割表。(1)增加冗余列增加冗余列是指在多个表中具有相同的列,它常用来在查询时避免连接操作。但它需要更多的磁盘空间,同时增加表维护的工作量。(2).增加派生列增加派生列指增加的列来自其它表中的数据,由它们计算生成。它的作用是在查询时减少连接操作,避免使用集函数。(3).重新组表重新组表指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。例如,用户经常需要同时查看课程号,课程名称,任课教师号,任课教师姓名,则可把表class(classno,classname,teacherno)和表teacher(teacherno,teachername)合并成一个表class(classno,classname,teacherno,teachername)。这样可提高性能,但需要更多的磁盘空间,同时也损失了数据在概念上的独立性。(4).分割表有时对表做分割可以提高性能。表分割有两种方式:1、水平分割:根据一列或多列数据的值把数据行放到两个独立的表中。水平分割通常在下面的情况下使用:A 表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高查询速度。B 表中的数据本来就有独立性,例如表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,而另外一些数据不常用。C 需要把数据存放到多个介质上。 例如法规表law就可以分成两个表activelaw和inactivelaw。activeaauthors表中的内容是正生效的法规,是经常使用的,而inactivelaw表则使已经作废的法规,不常被查询。水平分割会给应用增加复杂度,它通常在查询时需要多个表名,查询所有数据需要union操作。在许多数据库应用中,这种复杂性会超过它带来的优点,因为只要索引关键字不大,则在索引用于查询时,表中增加两到三倍数据量,查询时也就增加读一个索引层的磁盘次数。2、垂直分割:把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。如果一个表中某些列常用,而另外一些列不常用,则可以采用垂直分割,另外垂直分割可以使得数据行变小,一个数据页就能存放更多的数据,在查询时就会减少I/O次数。其缺点是需要管理冗余列,查询所有数据需要join操作。3.反规范技术需要维护数据的完整性无论使用何种反规范技术,都需要一定的管理来维护数据的完整性,常用的方法是批处理维护、应用逻辑和触发器。批处理维护是指对复制列或派生列的修改积累一定的时间后,运行一批处理作业或存储过程对复制或派生列进行修改,这只能在对实时性要求不高的情况下使用。数据的完整性也可由应用逻辑来实现,这就要求必须在同一事务中对所有涉及的表进行增、删、改操作。用应用逻辑来实现数据的完整性风险较大,因为同一逻辑必须在所有的应用中使用和维护,容易遗漏,特别是在需求变化时,不易于维护。另一种方式就是使用触发器,对数据的任何修改立即触发对复制列或派生列的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司与车辆合作协议书
- 关于企业合作合同范本
- 2026年企业人力资源管理师之四级人力资源管理师考试题库300道附完整答案(典优)
- 合伙投资股份合同范本
- 位股东借款协议书范本
- 协议签错如何撤销合同
- 合伙投资合同协议范本
- 2026年内蒙古机电职业技术学院单招职业适应性测试题库含答案
- 2026年内蒙古体育职业学院单招职业适应性测试题库完美版
- 会所股权转让合同范本
- 基站基础知识
- PET分类词汇带音标
- 电子科大薄膜物理(赵晓辉)第四章 化学气相沉积
- 2023年全国《经济金融基础知识》题库与答案
- 工贸行业重点可燃性粉尘目录版
- 国内地铁轨道公司组织架构
- 某县医疗卫生机构药品验收记录表
- 乙炔安全技术说明书MSDS
- GA/T 453.2-2021居民身份证冲切技术规范第2部分:冲切设备技术要求
- 医药代表地区经理竞聘ppt模板
- 国电南自110kv主变保护pst671u型调试手册
评论
0/150
提交评论