- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第10章数据库设计
10.1数据设计概述
数据库系统的设计包括数据库设计和数据库应用系统设计两个方面。数据库设计的目
的是为特定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效
地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域内,常常把
使用数据库的各类系统统称为数据库应用系统。
数据库设计的主要内容包括:需求分析、概念模型设计、逻辑模型设计、物理模型设
计、数据库的实施和数据库的运行和维护。
图10-1新奥尔良方法的数据库设计步骤
数据库是整个软件应用的根基,是软件设计的起点,它起着决定性的质变作用,因此
我们必须对数据库设计高度重视起来,培养设计良好数据库的习惯,在进行数据库设计时,
应遵循以下数据库设计的原则:
(1)数据库设计最起码要占用整个项目开发的40%以上的时间
数据库是需求的直观反应和表现,因此设计时必须要切实符合用户的需求,要多次与
用户沟通交流来细化需求,将需求中的要求和每一次的变化都要一一体现在数据库的设计当
中。如果需求不明确,就要分析不确定的因素,设计表时就要事先预留出可变通的字段,正
所谓“有备无患”。
(2)数据库设计不仅仅停留于页面demo的表面
页面内容所需要的字段,在数据库设计中只是一部分,还有系统运转、模块交互、中
转数据、表之间的联系等等所需要的字段,因此数据库设计绝对不是简单的基本数据存储,
还有逻辑数据存储。
(3)数据库设计完成后,项目80%的设计开发在你脑海中就已经完成了
每个字段的设计都是有他必要的意义的,你在设计每一个字段的同时,就应该已经想
清楚程序中如何去运用这些字段,多张表的联系在程序中是如何体现的。换句话说,你完成
数据库设计后,程序中所有的实现思路和实现方式在你的脑海中就已经考虑过了。如果达不
到这种程度,那当进入编码阶段后,才发现要运用的技术或实现的方式数据库无法支持,这
时再改动数据库就会很麻烦,会造成一系列不可预测的问题。
(4)数据库设计时就要考虑到效率和优化问题
一开始就要分析哪些表会存储较多的数据量,对于数据量较大的表的设计往往是粗粒
度的,也会冗余一些必要的字段,已达到尽量用最少的表、最弱的表关系去存储海量的数据。
并且在设计表时,一般都会对主键建立聚集索引,含有大数据量的表更是要建立索引以提供
查询性能。对于含有计算、数据交互、统计这类需求时,还要考虑是否有必要采用存储过程。
(5)添加必要的(冗余)字段
像“创建时间”、“修改时间”、“备注”、“操作用户IP”和一些用于其他需求(如统计)
的字段等,在每张表中必须都要有,不是说只有系统中用到的数据才会存到数据库中,一些
冗余字段是为了便于日后维护、分析、拓展而添加的,这点是非常重要的,比如黑客攻击,
篡改了数据,我们便就可以根据修改时间和操作用户IP来查找定位。
(6)设计合理的表关联
若多张表之间的关系复杂,建议采用第三张映射表来关联维护两张表之间的关系,以
降低表之间的直接耦合度。若多张表涉及到大数据量的问题,表结构尽量简单,关联也要尽
可能避免。
(7)设计表时不加主外键等约束性关联,系统编码阶段完成后再添加约束性关联
这样做的目的是有利于团队并行开发,减少编码时所遇到的问题,表之间的关系靠程
序来控制。编码完成后再加关联并进行测试。不过也有一些公司的做法是干脆就不加表关联。
(8)选择合适的主键生成策略
主键生成策略大致可分:int自增长类型(identity、sequence)、手动增长类型(建立单
独一张表来维护)、手动维护类型(如userId)、字符串类型(uuid、guid)。int型的优点是
使用简单、效率高,但多表之间数据合并时就很容易出现问题,手动增长类型和字符串类型
能很好解决多表数据合并的问题,但同样也都有缺点:前者的缺点是增加了一次数据库访问
来获取主键,并且又多维护一张主键表,增加了复杂度;而后者是非常占用存储空间,且表
关联查询的效率低下,索引的效率也不高,跟int类型正好相反。
10.2需求分析
调查和分析用户的业务活动和数据的使用情况,弄清所用数据的种类、范围、数量以
及它们在业务活动中交流的情况,确定用户对数据库系统的使用要求和各种约束条件等,形
成用户需求规约。
需求分析是在用户调查的基础上,通
文档评论(0)