数据库设计标准规范化的五个要求.doc
《数据库设计标准规范化的五个要求.doc》由会员分享,可在线阅读,更多相关《数据库设计标准规范化的五个要求.doc(15页珍藏版)》请在咨信网上搜索。
1、数据库设计规范化五个要求通常情况下,能够从两个方面来判定数据库是否设计比较规范。一是看看是否拥有大量窄表,二是宽表数量是否足够少。若符合这两个条件,则能够说明这个数据库规范化水平还是比较高。当然这是两个泛泛而谈指标。为了达成数据库设计规范化要求,通常来说,需要符合以下五个要求。要求一:表中应该避免可为空列。即使表中许可空列,不过,空字段是一个比较特殊数据类型。数据库在处理时候,需要进行特殊处理。如此话,就会增加数据库处理统计复杂性。当表中有比较多空字段时,在相同条件下,数据库处理性能会降低很多。所以,即使在数据库表设计时候,许可表中含有空字段,不过,我们应该尽可能避免。若确实需要话,我们能够经
2、过部分折中方法,来处理这些空字段,让其对数据库性能影响降低到最少。一是经过设置默认值形式,来避免空字段产生。如在一个人事管理系统中,有时候身份证号码字段可能许可为空。因为不是每个人全部能够记住自己身份证号码。而在职员报到时候,可能身份证没有带在身边。所以,身份证号码字段往往不能立即提供。为此,身份证号码字段能够许可为空,以满足这些特殊情况需要。不过,在数据库设计时候,则能够做部分处理。如当用户没有输入内容时候,则把这个字段默认值设置为0或为N/A。以避免空字段产生。二是若一张表中,许可为空列比较多,靠近表全部列数三分之一。而且,这些列在大部分情况下,全部是可有可无。若数据库管理员碰到这种情况,
3、笔者提议另外建立一张副表,以保留这些列。然后经过关键字把主表跟这张副表关联起来。将数据存放在两个独立表中使得主表设计更为简单,同时也能够满足存放空值信息需要。要求二:表不应该有反复值或列。如现在有一个进销存管理系统,这个系统中有一张产品基础信息表中。这个产品开发有时候能够是一个人完成,而有时候又需要多个人合作才能够完成。所以,在产品基础信息表产品开发者这个字段中,有时候可能需要填入多个开发者名字。如进销存管理中,还需要对用户联络人进行管理。有时候,企业可能只知道用户一个采购员姓名。不过在必需情况下,企业需要对用户采购代表、仓库人员、财务人员共同进行管理。因为在订单上,可能需要填入采购代表名字;
4、可是在出货单上,则需要填入仓库管理人员名字等等。为了处理这个问题,有多个实现方法。不过,若设计不合理话在,则会造成反复值或列。如我们也能够这么设计,把用户信息、联络人全部放入同一张表中。为了处理多个联络人问题,能够设置第一联络人、第一联络人电话、第二联络人、第二联络人电话等等。若还有第三联络人、第四联络人等等,则往往还需要加入更多字段。可是这么设计话,会产生一系列问题。如用户采购员流动性比较大,在十二个月内换了六个采购员。此时,在系统中该怎样管理呢?莫非就建立六个联络人字段?这不仅会造成空字段增加,还需要频繁更改数据库表结构。显著,这么做是不合理。也有些人说,能够直接修改采购员名字呀。可是这么
5、处理话,会把原先采购订单上采购员名字也改变了。因为采购单上用户采购员信息在数据库中存放不是采购员名字,而只是采购员对应一个编号。在编号不改而名字改变了情况下,采购订单上显示就是更改后名字。这不利于时候追踪。所以,在数据库设计时候要尽可能避免这种反复值或列产生。笔者提议,若数据库管理员碰到这种情况,能够改变一下策略。如把用户联络人另外设置一张表。然后经过用户ID把供给商信息表跟用户联络人信息表连接起来。也就是说,尽可能将反复值放置到一张独立表中进行管理。然后经过视图或其它手段把这些独立表联络起来。要求三:表中统计应该有一个唯一标识符。在数据库表设计时候,数据库管理员应该养成一个好习惯,用一个ID
6、号来唯一标识行统计,而不要经过名字、编号等字段来对纪录进行区分。每个表全部应该有一个ID列,任何两个统计全部不能够共享同一个ID值。另外,这个ID值最好有数据库来进行自动管理,而不要把这个任务给前台应用程序。不然话,很轻易产生ID值不统一情况。另外,在数据库设计时候,最好还能够加入行号。如在销售订单管理中,ID号是用户不能够维护。不过,行号用户就能够维护。如在销售订单行中,用户能够经过调整行号大小来对订单行进行排序。通常情况下,ID列是以1为单位递进。不过,行号就要以10为单位累进。如此,正常情况下,行号就以10、 20、30依次扩展下去。若此时用户需要把行号为30纪录调到第一行显示。此时,用
7、户在不能够更改ID列情况下,能够更改行号来实现。如能够把行号改为1,在排序时就能够按行号来进行排序。如此话,原来行号为30纪录现在行号变为了1,就能够在第一行中显示。这是在实际应用程序设计中对ID列一个有效补充。这个内容在教科书上是没有。需要在实际应用程序设计中,才会掌握到这个技巧。要求四:数据库对象要有统一前缀名。一个比较复杂应用系统,其对应数据库表往往以千计。若让数据库管理员看到对象名就了解这个数据库对象所起作用,恐怕会比较困难。而且在数据库对象引用时候,数据库管理员也会为不能快速找到所需要数据库对象而头疼。为此,笔者建立,在开发数据库之前,最好能够花一定时间,去制订一个数据库对象前缀命名
8、规范。如笔者在数据库设计时,喜爱跟前台应用程序协商,确定合理命名规范。笔者最常见是依据前台应用程序模块来定义后台数据库对象前缀名。如跟物料管理模块相关表能够用M为前缀;而以订单管理相关,则能够利用C作为前缀。具体采取什么前缀能够以用户爱好而定义。不过,需要注意是,这个命名规范应该在数据库管理员和前台应用程序开发者之间达成共识,而且严格根据这个命名规范来定义对象名。其次,表、视图、函数等最好也有统一前缀。如视图能够用V为前缀,而函数则能够利用F为前缀。如此数据库管理员不管是在日常管理还是对象引用时候,全部能够在最短时间内找到自己所需要对象。要求五:尽可能只存放单一实体类型数据。这里将实体类型跟数
9、据类型不是一回事,要注意区分。这里讲实体类型是指所需要描述对象本身。笔者举一个例子,估量大家就能够明白其中内容了。如现在有一个图书馆里系统,有图书基础信息、作者信息两个实体对象。若用户要把这两个实体对象信息放在同一张表中也是能够。如能够把表设计成图书名字、图书作者等等。可是如此设计话,会给后续维护带来不少麻烦。如当后续有图书出版时,则需要为每次出版图书增加作者信息,这无疑会增加额外存放空间,也会增加统计长度。而且若作者情况有所改变,如住址改变了以后,则还需要去更改每本书统计。同时,若这个作者图书从数据库中全部删除以后,这个作者信息也就荡然无存了。很显著,这不符合数据库设计规范化需求。碰到这种情
10、况时,笔者提议能够把上面这张表分解成三种独立表,分别为图书基础信息表、作者基础信息表、图书和作者对应表等等。如此设计以后,以上碰到全部问题就全部引刃而解了。以上五条是在数据库设计时达成规范化水平基础要求。除了这些另外还有很多细节方面要求,如数据类型、存放过程等等。而且,数据库规范往往没有技术方面严格限制,关键依靠数据库管理员日常工作经验累积。数据库设计中反规范技术探讨1. 数据库设计简述数据库设计是把现实世界商业模型和需求转换成数据库模型过程,它是建立数据库应用系统关键问题。设计关键是怎样使设计数据库能合理地存放用户数据,方便用户进行数据处理。数据库设计完全是人问题,而不是数据库管理系统问题。
11、系统不管设计是好是坏,照样运行。数据库设计应该由数据库管理员和系统分析员一起和用户一道工作,了解各个用户要求,共同为整个数据库做出合适、完整设计。数据库及其应用性能和调优全部是建立在良好数据库设计基础上,数据库数据是一切操作基础,假如数据库设计不好,则其它一切调优方法提升数据库性能效果全部是有限。数据规范化1.1. 范式概述规范化理论是研究怎样将一个不好关系模式转化为好关系模式理论,规范化理论是围绕范式而建立。规范化理论认为,一个关系数据库中全部关系,全部应满足一定规范(约束条件)。规范化理论把关系应满足规范要求分为几级,满足最低要求一级叫做第一范式(1NF),在第一范式基础上提出了第二范式(
12、2NF),在第二范式基础上又提出了第三范式(3NF),以后又提出了BCNF范式,4NF,5NF。范式等级越高,应满足约束集条件也越严格。规范每一等级全部依靠于它前一等级,比如若一个关系模式满足2NF,则一定满足1NF。下面我们只介绍1NF,2NF,3NF范式。1.2. 1NF1NF是关系模型最低要求,它规则是:每一列必需是原子,不能分成多个子列。每一行和列位置只能有一个值。不能含有多值列。例:假如要求一个学生一行,一个学生可选多门课,则下面“学生”表就不满足1NF: student(sno,sname,classno)其中:sno为学号,sname为学生姓名,classno为课程号。因为一个学
13、生可选多门课,所以列classno有多个值,所以空不符合1NF。规范化就是把它分成以下两个表:“学生”表和“选课”表,则这两个表就全部满足1NF了。student(sno,sname) stuclass(sno,classno)1.3. 2NF对于满足2NF表,除满足 1NF外,非主码列必需依靠于全部主码,而不是组合主码一部分。假如满足1NF表主码只有一列,则它自动满足2NF。例:下面“选课”表,不符合2NF。 stuclass(sno,classno,classname)其中:classname为课程名称。因为词表主码是: (sno,classno),非主码列classname依靠于组合主码
14、一部分classno,所以它不符合2NF。对该表规范化也是把它分解成两个表:“选课”表和“课程”表,则它们就全部满足2NF了。stuclass(sno,classno) class(classno,classname)1.4. 3NF3NF规则是除满足2NF 外,任一非主码列不能依靠于其它非主码列。 例:下面“课程”表,不符合3NF。class(classno,classname,teacherno,teachername)其中:teacherno为任课老师号,teachername为任课老师姓名。因为非主码列teachername依靠于另一非主码列teacherno,所以它不符合3NF。其处
15、理措施也是把它分解成两个表:“课程”表和 “老师”表,则它们就全部满足3NF了。class(classno,classname,teacherno) teacher(teacherno,teachername)1.5. 小结当一个表是规范,则其非主码列依靠于主码列。从关系模型角度来看,表满足3NF最符合标准,这么设计轻易维护。一个完全规范化设计并不总能生成最优性能,所以通常是先根据3NF设计,假如有性能问题,再经过反规范来处理。数据库中数据规范化优点是降低了数据冗余,节省了存放空间,对应逻辑和物理I/O次数降低,同时加紧了增、删、改速度,不过对完全规范数据库查询,通常需要更多连接操作,从而影响
16、查询速度。所以,有时为了提升一些查询或应用性能而破坏规范规则,即反规范。2. 数据反规范2.1. 反规范好处是否规范化程度越高越好?这要依据需要来决定,因为“分离”越深,产生关系越多,关系过多,连接操作越频繁,而连接操作是最费时间,尤其对以查询为主数据库应用来说,频繁连接会影响查询速度。所以,关系有时有意保留成非规范化,或规范化以后又反规范了,这么做通常是为了改善性能。比如帐户系统中“帐户”表BTB01,它列busibalance(企业帐户总余额)就违反规范,其中值能够经过下面查询取得:select busicode,sum(accbalance)from BTB06group by busi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 设计 标准 规范化 五个 要求
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。