数据库设计原则2007-05-26 01:08一个好的数据库产品不等于就有一个好的应用系统,如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能。一般来讲,在一个MIS系统分析、设计、测试和试运行阶段,因为数据量较小,设计人员和测试人员往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低……
数据库设计是建立数据库及其应用系统的核心和基础,它要求对于指定的应用环境,构造出较优的数据库模式,建立起数据库应用系统,并使系统能有效地存储数据,满足用户的各种应用需求。一般按照规范化的设计方法,常将数据库设计分为若干阶段:
系统规划阶段
主要是确定系统的名称、范围;确定系统开发的目标功能和性能;确定系统所需的资源;估计系统开发的成本;确定系统实施计划及进度;分析估算系统可能达到的效益;确定系统设计的原则和技术路线等。对分布式数据库系统,还应分析用户环境及网络条件,以选择和建立系统的网络结构。
需求分析阶段
要在用户调查的基础上,通过分析,逐步明确用户对系统的需求,包括数据需求和围绕这些数据的业务处理需求。通过对组织、部门、企业等进行详细调查,在了解现行系统的概况、确定新系统功能的过程中,收集支持系统目标的基础数据及其处理方法。
概念设计阶段
要产生反映企业各组织信息需求的数据库概念结构,即概念模型。概念模型必须具备丰富的语义表达能力、易于交流和理解、易于变动、易于向各种数据模型转换、易于从概念模型导出与DBMS有关的逻辑模型等特点。
逻辑设计阶段
除了要把E-R图的实体和联系类型,转换成选定的DBMS支持的数据类型,还要设计子模式并对模式进行评价,最后为了使模式适应信息的不同表示,需要优化模式。
物理设计阶段
主要任务是对数据库中数据在物理设备上的存放结构和存取方法进行设计。数据库物理结构依赖于给定的计算机系统,而且与具体选用的DBMS密切相关。物理设计常常包括某些 *** 作约束,如响应时间与存储要求等。
系统实施阶段
主要分为建立实际的数据库结构;装入试验数据对应用程序进行测试;装入实际数据建立实际数据库三个步骤。
另外,在数据库的设计过程中还包括一些其他设计,如数据库的安全性、完整性、一致性和可恢复性等方面的设计,不过,这些设计总是以牺牲效率为代价的,设计人员的任务就是要在效率和尽可能多的功能之间进行合理的权衡。
一个好的数据库产品不等于就有一个好的应用系统,如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能。一般来讲,在一个MIS系统分析、设计、测试和试运行阶段,因为数据量较小,设计人员和测试人员往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低……
数据库设计是建立数据库及其应用系统的核心和基础,它要求对于指定的应用环境,构造出较优的数据库模式,建立起数据库应用系统,并使系统能有效地存储数据,满足用户的各种应用需求。一般按照规范化的设计方法,常将数据库设计分为若干阶段:
系统规划阶段
主要是确定系统的名称、范围;确定系统开发的目标功能和性能;确定系统所需的资源;估计系统开发的成本;确定系统实施计划及进度;分析估算系统可能达到的效益;确定系统设计的原则和技术路线等。对分布式数据库系统,还应分析用户环境及网络条件,以选择和建立系统的网络结构。
需求分析阶段
要在用户调查的基础上,通过分析,逐步明确用户对系统的需求,包括数据需求和围绕这些数据的业务处理需求。通过对组织、部门、企业等进行详细调查,在了解现行系统的概况、确定新系统功能的过程中,收集支持系统目标的基础数据及其处理方法。
概念设计阶段
要产生反映企业各组织信息需求的数据库概念结构,即概念模型。概念模型必须具备丰富的语义表达能力、易于交流和理解、易于变动、易于向各种数据模型转换、易于从概念模型导出与DBMS有关的逻辑模型等特点。
逻辑设计阶段
除了要把E-R图的实体和联系类型,转换成选定的DBMS支持的数据类型,还要设计子模式并对模式进行评价,最后为了使模式适应信息的不同表示,需要优化模式。
物理设计阶段
主要任务是对数据库中数据在物理设备上的存放结构和存取方法进行设计。数据库物理结构依赖于给定的计算机系统,而且与具体选用的DBMS密切相关。物理设计常常包括某些 *** 作约束,如响应时间与存储要求等。
系统实施阶段
主要分为建立实际的数据库结构;装入试验数据对应用程序进行测试;装入实际数据建立实际数据库三个步骤。
另外,在数据库的设计过程中还包括一些其他设计,如数据库的安全性、完整性、一致性和可恢复性等方面的设计,不过,这些设计总是以牺牲效率为代价的,设计人员的任务就是要在效率和尽可能多的功能之间进行合理的权衡。
>
数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。 在数据库领域内,常常把使用数据库的各类系统统称为数据库
数据库设计的基本步骤
按照规范设计的方法,考虑数据库及其应用系统开发全过程,将数据库设计分为以下6个阶段
1需求分析
2概念结构设计
3逻辑结构设计
4物理结构设计
5数据库实施
6数据库的运行和维护
数据库设计通常分为6个阶段1分析用户的需求,包括数据、功能和性能需求;2概念结构设计:主要采用E-R模型进行设计,包括画E-R图;3逻辑结构设计:通过将转换成表,实现从E-R模型到关系模型的转换;4:主要是为所设计的数据库选择合适的和存取路径;5数据库的实施:包括编程、测试和试运行;6数据库运行与维护:系统的运行与数据库的日常维护。),主要讨论其中的第3个阶段,即逻辑设计。
在数据库设计过程中,需求分析和概念设计可以独立于任何数据库管理系统进行,逻辑设计和物理设计与选用的DAMS密切相关。
1需求分析阶段(常用自顶向下)
进行数据库设计首先必须准确了解和分析用户需求(包括数据与处理)。需求分析是整个设计过程的基础,也是最困难,最耗时的一步。需求分析是否做得充分和准确,决定了在其上构建数据库大厦的速度与质量。需求分析做的不好,会导致整个数据库设计返工重做。
需求分析的任务,是通过详细调查现实世界要处理的对象,充分了解原系统工作概况,明确用户的各种需求,然后在此基础上确定新的系统功能,新系统还得充分考虑今后可能的扩充与改变,不仅仅能够按当前应用需求来设计。
调查的重点是,数据与处理。达到信息要求,处理要求,安全性和完整性要求。
分析方法常用SA(Structured Analysis) 结构化分析方法,SA方法从最上层的系统组织结构入手,采用自顶向下,逐层分解的方式分析系统。
数据流图表达了数据和处理过程的关系,在SA方法中,处理过程的处理逻辑常常借助判定表或判定树来描述。在处理功能逐步分解的同事,系统中的数据也逐级分解,形成若干层次的数据流图。系统中的数据则借助数据字典(data dictionary,DD)来描述。数据字典是系统中各类数据描述的集合,数据字典通常包括数据项,数据结构,数据流,数据存储,和处理过程5个阶段。
大数据量的数据库表设计技巧
即使是一个非常简单的数据库应用系统,它的数据量增加到一定程度也会引起发一系列问题。如果在设计数据库的时候,就提前考虑这些问题,可以避免由于系统反映迟缓而引起的用户抱怨。
技巧1:尽量不要使用代码。比如性别这个字段常见的做法:1代表男,0代表女。这样的做法意味着每一次查询都需要关联代码表。
技巧2:历史数据中所有字段与业务表不要有依赖关系。如保存打印发票的时候,不要只保留单位代码,而应当把单位名称也保存下来。
技巧3:使用中间表。比如职工工资,可以把每一位职工工资的合计保存在一张中间表中,当职工某一工资项目发生变化的时候,同时对中间表的数据做相应更新。
技巧4:使用统计表。需要经常使用的统计数据,生成之后可以用专门的表来保存。
技巧5:分批保存历史数据。历史数据可以分段保存,比如2003年的历史数据保存在 《2003表名》中,而2004年的历史数据则保存在《2004表名》中。
技巧6:把不常用的数据从业务表中移到历史表。比如职工档案表,当某一职工离开公司以后,应该把他的职工档案表中的信息移动到《离职职工档案表》中。
1、经常查询的和不常用的分开几个表,也就是横向切分
2、把不同类型的分成几个表,纵向切分
3、常用联接的建索引
4、服务器放几个硬盘,把数据、日志、索引分盘存放,这样可以提高IO吞吐率
5、用优化器,优化你的查询
6、考虑冗余,这样可以减少连接
7、可以考虑建立统计表,就是实时生成总计表,这样可以避免每次查询都统计一次
8、用极量数据测试一下数据
速度,影响它的因数太多了,且数据量越大越明显。
1、存储将硬盘分成NTFS格式,NTFS比FAT32快,并看你的数据文件大小,1G以上你可以采用多数据库文件,这样可以将存取负载分散到多个物理硬盘或磁盘阵列上。
2、tempdbtempdb也应该被单独的物理硬盘或磁盘阵列上,建议放在RAID0上,这样它的性能最高,不要对它设置最大值让它自动增长
3、日志文件日志文件也应该和数据文件分开在不同的理硬盘或磁盘阵列上,这样也可以提高硬盘I/O性能。
4、分区视图就是将你的数据水平分割在集群服务器上,它适合大规模OLTP,SQL群集上,如果你数据库不是访问特别大不建议使用。
5、簇索引你的表一定有个簇索引,在使用簇索引查询的时候,区块查询是最快的,如用between,应为他是物理连续的,你应该尽量减少对它的updaet,应为这可以使它物理不连续。
6、非簇索引非簇索引与物理顺序无关,设计它时必须有高度的可选择性,可以提高查询速度,但对表update的时候这些非簇索引会影响速度,且占用空间大,如果你愿意用空间和修改时间换取速度可以考虑。
7、索引视图如果在视图上建立索引,那视图的结果集就会被存储起来,对与特定的查询性能可以提高很多,但同样对update语句时它也会严重减低性能,一般用在数据相对稳定的数据仓库中。
8、维护索引你在将索引建好后,定期维护是很重要的,用dbccshowcontig来观察页密度、扫描密度等等,及时用dbccindexdefrag来整理表或视图的索引,在必要的时候用dbccdbreindex来重建索引可以受到良好的效果。
不论你是用几个表1、2、3点都可以提高一定的性能,5、6、8点你是必须做的,至于4、7点看你的需求,我个人是不建议的。
本系统中数据库的设计,要考虑和遵循下列数据库设计的基本原则,以建立稳定、安全、可靠的数据库。
1)一致性原则:对数据来源进行统一、系统的分析与设计,协调好各种数据源,保证数据的一致性和有效性。
2)完整性原则:数据库的完整性是指数据的正确性和相容性。要防止合法用户使用数据库时向数据库加入不合语义的数据。对输入到数据库中的数据要有审核和约束机制。
3)安全性原则:数据库的安全性是指保护数据,防止非法用户使用数据库或合法用户非法使用数据库造成数据泄露、更改或破坏。要有认证和授权机制。
4)可伸缩性与可扩展性原则:数据库结构的设计应充分考虑发展的需要、移植的需要,具有良好的扩展性、伸缩性和适度冗余。
5)规范化:数据库的设计应遵循规范化理论。规范化的数据库设计,可以减少数据库插入、删除、修改等 *** 作时的异常和错误,降低数据冗余度等。
不能单纯的说好,或者不好,这需要根据你的系统实际需要。
如果你的系统并发要求,用户量不高,这样的设计就显得没有必要,因为小,少,运行速度也是很快的。
如果你的应用用户多,并发高,数据量大你这样设计是可以的,虽然增加了数据量,磁盘开销,但是换来的是高效运行。是OK的。
以上就是关于建立数据库的原则(怎样建立一个好的数据库)全部的内容,包括:建立数据库的原则(怎样建立一个好的数据库)、简述数据库设计的要求、如何设计一个优秀的数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)