- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库的设计与编码优化汇编
数据库的设计与编码优化主讲: 刘敖(本文所有范例除最后1个外均能在AdventureWorks数据库上执行)一、设计阶段设计阶段是系统性能的关键阶段,数据库设计阶段需要注意:1、数据库逻辑设计的规范化 第一范式(1NF):数据表中没有重复的列或多值的列,即实体或每一行的某个属性不能有多个值或重复值,这是关系数据库设计的最低要求。第二范式(2NF): 数据表中每一行可以被唯一区分,即实体或每一行的某个属性必须依赖于主关键字,而且不能只依赖于主关键字的一部分。消除部分依赖,大部分情况下,数据库设计都应该达到第二范式。 第三范式(3NF): 数据表中字段不能依赖于其它非主关键字。消除传递依赖,达到第三范式应该是系统中大部分表的要求,除非一些特殊作用的表。大部分数据表能满足第三范式,系统就会产生较少的列和较多的表,减少数据冗余,利于性能的提高。下面以一个学校的学生系统为例来分析说明三个范式的应用。首先,我们关心的问题有以下几方面:学生有哪些基本信息?学生选了哪些课,成绩是什么?每个课的学分是多少?学生属于哪个系,系的基本信息是什么?确定要设计的内容包括:学号、姓名、年龄、性别、课程名、课程学分、学科成绩、系别、系办地址、系办电话等信息。对于这些信息,可设计成一张表(学号、姓名、年龄、性别、课程名、课程学分、学科成绩、系别、系办地址、系办电话),符合1NF2NF实例分析以上设计存在以下问题a. 数据冗余,同一门课由n个学生选修,学分就重复n-1次;同一个学生选修了m门课程,姓名和年龄就重复了m-1次。b.更新异常,若调整了某门课程的学分,表中所有行的学分值都要更新,否则会出现同一门课学分不同。c.插入异常,如果计划开新课,由于没人选修,没有学号关键字,只能等有人选修才能把课程和学分存入。d.删除异常,若学生已经结业,从当前数据库删除选修记录,与此同时,某门课程新生尚未选修,则此门课程及学分记录无法保存。原因是表列存在如下依赖关系学号←姓名、年龄、性别、系别、系办地址、系办电话课程名←课程学分学号、课程名←学科成绩解决方法拆分成3个表,使其符合2NF学生 Student(学号、姓名、年龄、性别、系别、系办地址、系办电话)课程 Course(课程名、课程学分)选课关系 ChoseCourse(学号、课程名、学科成绩)3NF实例分析以上设计还存在以下问题a.数据冗余,n个学生同属一个系,系办地址和系办电话就重复n-1次。b.更新异常,若调整了某个系别的地址或电话,表中与该系别相关的所有行都要更新,否则会出现系别地址或电话不一致。c.插入异常,如果计划设立一个新院系,由于没有学号关键字,只能等有人进入该院才能把院系信息存入。原因是表列还存在传递依赖非主关键字关系学号← 系别← 系办地址、系办电话解决方法将Student(学号、姓名、年龄、性别、系别、系办地址、系办电话)表继续拆分成2个表,使其符合3NF学生 Student(学号、姓名、年龄、性别、系别)系别 Department(系别、系办地址、系办电话)至此,上面的数据表设计符合1NF、2NF、3NF ,消除了数据冗余,更新异常,插入异常与删除异常。2、合理的冗余 大系统的设计里,加入合理的冗余是必要的。冗余可以是冗余数据库、冗余表或者冗余字段,不同粒度的冗余可以起到不同的作用。从性能角度来说,冗余数据库可以分散数据库压力,冗余表可以分散数据量大的表的并发压力,也可以加快特殊查询的速度,冗余字段可以有效减少数据库表的连接,提高效率。3、字段的设计 字段是数据库最基本的单位,其设计对性能的影响很大: A、数据类型尽量用数字型,数字型的比较比字符型的快很多。 B、数据类型尽量小,这里的尽量小是指在满足可以预见的未来需求的前提下的。C、尽量不要允许NULL,除非必要,可以用NOT NULL+DEFAULT代替。NULL值会带来以下困扰。NULL 与任何值的比较都为假,比较结果selectcount(*)as total from Production.Product where ProductModelID2selectcount(*)as total from Production.Product where ProductModelID2 or ProductModelID isnullNULL被排除在集合汇总之外,比较结果selectcount(ProductModelID)as total from Production.Product selectcount(*)as total from Production.Product D、少用TEXT和IMAGE,二进制字段的读写是比较慢的,而且,读取的方法也不多。E、真假、对错、男女等值可定义成 BIT类型,能减少存储空间
您可能关注的文档
- 放射性皮肤损伤的防与治汇编.pptx
- 总装质量意识培训TL-2012-10-15选编.ppt
- 环境学导论-绪论综述.ppt
- 环境学复习资料综述.doc
- 支承层线间混凝土技术交底2013.3.7汇编.doc
- 放飞梦想作文15篇汇编.doc
- 政务信息写作交流汇编.doc
- 政务信息写作技巧汇编.doc
- 政府与事业单位会计模拟题汇编.doc
- 铸造工艺图选编.ppt
- 预应力钢筒混凝土管外防腐纳米改性涂料.pdf
- 新解读《GB_T 26704-2022铅笔》深度解析深度解析.docx
- 《重庆市超充基础设施建设技术指南(2025年)》(渝经信油气〔2025〕6号).docx
- 新解读《GB_T 26899-2022结构用集成材》深度解析.docx
- 新解读《GB_T 26727 - 2022回收铟原料》深度解析.docx
- 新解读《GB_T 31138-2022加氢机》深度解析.docx
- 新解读《GB_T 41255-2022智能工厂 通用技术要求》深度解析.docx
- 2025年中华基督教青年会全国协会中华基督教女青年会全国协会招聘应届高业生笔试高频难、易错点备考题库.docx
- 新解读《GB_T 41326-2022六氟丁二烯》深度解析.docx
- 信息技术中心软件研发流程规范.pdf
文档评论(0)