数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。
在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。
一、数据库和信息系统
(1)数据库是信息系统的核心和基础,把信息系统中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的
功能,使信息系统可以方便、及时、准确地从数据库中获得所需的信息。
(2)数据库是信息系统的各个部分能否紧密地结合在一起以及如何结合的关键所在。
(3)数据库设计是信息系统开发和建设的重要组成部分。
(4)数据库设计人员应该具备的技术和知识:
数据库的基本知识和数据库设计技术
计算机科学的基础知识和程序设计的方法和技巧
软件工程的原理和方法
应用领域的知识
二、数据库设计的特点
数据库建设是硬件、软件和干件的结合
三分技术,七分管理,十二分基础数据
技术与管理的界面称之为“干件”
数据库设计应该与应用系统设计相结合
结构(数据)设计:设计数据库框架或数据库结构
行为(处理)设计:设计应用程序、事务处理等
结构和行为分离的设计
传统的软件工程忽视对应用中数据语义的分析和抽象,只要有可能就尽量推迟数据结构设计的决策早期的数据库设计致力于数据模型和建模方法研究,忽视了对行为的设计
如图:
三、数据库设计方法简述
手工试凑法
设计质量与设计人员的经验和水平有直接关系
缺乏科学理论和工程方法的支持,工程的质量难以保证
数据库运行一段时间后常常又不同程度地发现各种问题,增加了维护代价
规范设计法
手工设计方
基本思想
过程迭代和逐步求精
规范设计法(续)
典型方法:
(1)新奥尔良(New Orleans)方法:将数据库设计分为四个阶段
SBYao方法:将数据库设计分为五个步骤
IRPalmer方法:把数据库设计当成一步接一步的过程
(2)计算机辅助设计
ORACLE Designer 2000
SYBASE PowerDesigner
四、数据库设计的基本步骤
数据库设计的过程(六个阶段)
1需求分析阶段
准确了解与分析用户需求(包括数据与处理)
是整个设计过程的基础,是最困难、最耗费时间的一步
2概念结构设计阶段
是整个数据库设计的关键
通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型
3逻辑结构设计阶段
将概念结构转换为某个DBMS所支持的数据模型
对其进行优化
4数据库物理设计阶段
为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)
5数据库实施阶段
运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果
建立数据库,编制与调试应用程序,组织数据入库,并进行试运行
6数据库运行和维护阶段
数据库应用系统经过试运行后即可投入正式运行。
在数据库系统运行过程中必须不断地对其进行评价、调整与修改
设计特点:
在设计过程中把数据库的设计和对数据库中数据处理的设计紧密结合起来将这两个方面的需求分析、抽象、设计、实现在各个阶段同时进行,相互参照,相互补充,以完善两方面的设计
设计过程各个阶段的设计描述:
如图:
五、数据库各级模式的形成过程
1需求分析阶段:综合各个用户的应用需求
2概念设计阶段:形成独立于机器特点,独立于各个DBMS产品的概念模式(E-R图)
3逻辑设计阶段:首先将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式;然后根据用户处理的要求、安全性的考虑,在基本表的基础上再建立必要的视图(View),形成数据的外模式
4物理设计阶段:根据DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式
六、数据库设计技巧
1 设计数据库之前(需求分析阶段)
1) 理解客户需求,询问用户如何看待未来需求变化。让客户解释其需求,而且随着开发的继续,还要经常询问客户保证其需求仍然在开发的目的之中。
2) 了解企业业务可以在以后的开发阶段节约大量的时间。
3) 重视输入输出。
在定义数据库表和字段需求(输入)时,首先应检查现有的或者已经设计出的报表、查询和视图(输出)以决定为了支持这些输出哪些是必要的表和字段。
举例:假如客户需要一个报表按照邮政编码排序、分段和求和,你要保证其中包括了单独的邮政编码字段而不要把邮政编码糅进地址字段里。
4) 创建数据字典和ER 图表
ER 图表和数据字典可以让任何了解数据库的人都明确如何从数据库中获得数据。ER图对表明表之间关系很有用,而数据字典则说明了每个字段的用途以及任何可能存在的别名。对SQL 表达式的文档化来说这是完全必要的。
5) 定义标准的对象命名规范
数据库各种对象的命名必须规范。
2 表和字段的设计(数据库逻辑设计)
表设计原则
1) 标准化和规范化
数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式,但Third Normal Form(3NF)通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说,遵守3NF 标准的数据库的表设计原则是:“One Fact in One Place”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。它具有以下特点:有一组表专门存放通过键连接起来的关联数据。
举例:某个存放客户及其有关定单的3NF 数据库就可能有两个表:Customer 和Order。Order 表不包含定单关联客户的任何信息,但表内会存放一个键值,该键指向Customer 表里包含该客户信息的那一行。
事实上,为了效率的缘故,对表不进行标准化有时也是必要的。
2) 数据驱动
采用数据驱动而非硬编码的方式,许多策略变更和维护都会方便得多,大大增强系统的灵活性和扩展性。
举例,假如用户界面要访问外部数据源(文件、XML 文档、其他数据库等),不妨把相应的连接和路径信息存储在用户界面支持表里。还有,如果用户界面执行工作流之类的任务(发送邮件、打印信笺、修改记录状态等),那么产生工作流的数据也可以存放在数据库里。角色权限管理也可以通过数据驱动来完成。事实上,如果过程是数据驱动的,你就可以把相当大的责任推给用户,由用户来维护自己的工作流过程。
3) 考虑各种变化
在设计数据库的时候考虑到哪些数据字段将来可能会发生变更。
举例,姓氏就是如此(注意是西方人的姓氏,比如女性结婚后从夫姓等)。所以,在建立系统存储客户信息时,在单独的一个数据表里存储姓氏字段,而且还附加起始日和终止日等字段,这样就可以跟踪这一数据条目的变化。
字段设计原则
4) 每个表中都应该添加的3 个有用的字段
dRecordCreationDate,在VB 下默认是Now(),而在SQL Server • 下默认为GETDATE()
sRecordCreator,在SQL Server 下默认为NOT NULL DEFAULT • USER
nRecordVersion,记录的版本标记;有助于准确说明记录中出现null 数据或者丢失数据的原因 •
5) 对地址和电话采用多个字段
描述街道地址就短短一行记录是不够的。Address_Line1、Address_Line2 和Address_Line3 可以提供更大的灵活性。还有,电话号码和邮件地址最好拥有自己的数据表,其间具有自身的类型和标记类别。
6) 使用角色实体定义属于某类别的列
在需要对属于特定类别或者具有特定角色的事物做定义时,可以用角色实体来创建特定的时间关联关系,从而可以实现自我文档化。
举例:用PERSON 实体和PERSON_TYPE 实体来描述人员。比方说,当John Smith, Engineer 提升为John Smith, Director 乃至最后爬到John Smith, CIO 的高位,而所有你要做的不过是改变两个表PERSON 和PERSON_TYPE 之间关系的键值,同时增加一个日期/时间字段来知道变化是何时发生的。这样,你的PERSON_TYPE 表就包含了所有PERSON 的可能类型,比如Associate、Engineer、Director、CIO 或者CEO 等。还有个替代办法就是改变PERSON 记录来反映新头衔的变化,不过这样一来在时间上无法跟踪个人所处位置的具体时间。
7) 选择数字类型和文本类型尽量充足
在SQL 中使用smallint 和tinyint 类型要特别小心。比如,假如想看看月销售总额,总额字段类型是smallint,那么,如果总额超过了$32,767 就不能进行计算 *** 作了。
而ID 类型的文本字段,比如客户ID 或定单号等等都应该设置得比一般想象更大。假设客户ID 为10 位数长。那你应该把数据库表字段的长度设为12 或者13 个字符长。但这额外占据的空间却无需将来重构整个数据库就可以实现数据库规模的增长了。
8) 增加删除标记字段
在表中包含一个“删除标记”字段,这样就可以把行标记为删除。在关系数据库里不要单独删除某一行;最好采用清除数据程序而且要仔细维护索引整体性。
3 选择键和索引(数据库逻辑设计)
键选择原则:
1) 键设计4 原则
为关联字段创建外键。 •
所有的键都必须唯一。 •
避免使用复合键。 •
外键总是关联唯一的键字段。 •
2) 使用系统生成的主键
设计数据库的时候采用系统生成的键作为主键,那么实际控制了数据库的索引完整性。这样,数据库和非人工机制就有效地控制了对存储数据中每一行的访问。采用系统生成键作为主键还有一个优点:当拥有一致的键结构时,找到逻辑缺陷很容易。
3) 不要用用户的键(不让主键具有可更新性)
在确定采用什么字段作为表的键的时候,可一定要小心用户将要编辑的字段。通常的情况下不要选择用户可编辑的字段作为键。
4) 可选键有时可做主键
把可选键进一步用做主键,可以拥有建立强大索引的能力。
索引使用原则:
索引是从数据库中获取数据的最高效方式之一。95%的数据库性能问题都可以采用索引技术得到解决。
1) 逻辑主键使用唯一的成组索引,对系统键(作为存储过程)采用唯一的非成组索引,对任何外键列采用非成组索引。考虑数据库的空间有多大,表如何进行访问,还有这些访问是否主要用作读写。
2) 大多数数据库都索引自动创建的主键字段,但是可别忘了索引外键,它们也是经常使用的键,比如运行查询显示主表和所有关联表的某条记录就用得上。
3) 不要索引memo/note 字段,不要索引大型字段(有很多字符),这样作会让索引占用太多的存储空间。
4) 不要索引常用的小型表
不要为小型数据表设置任何键,假如它们经常有插入和删除 *** 作就更别这样作了。对这些插入和删除 *** 作的索引维护可能比扫描表空间消耗更多的时间。
4 数据完整性设计(数据库逻辑设计)
1) 完整性实现机制:
实体完整性:主键
参照完整性:
父表中删除数据:级联删除;受限删除;置空值
父表中插入数据:受限插入;递归插入
父表中更新数据:级联更新;受限更新;置空值
DBMS对参照完整性可以有两种方法实现:外键实现机制(约束规则)和触发器实现机制
用户定义完整性:
NOT NULL;CHECK;触发器
2) 用约束而非商务规则强制数据完整性
采用数据库系统实现数据的完整性。这不但包括通过标准化实现的完整性而且还包括数据的功能性。在写数据的时候还可以增加触发器来保证数据的正确性。不要依赖于商务层保证数据完整性;它不能保证表之间(外键)的完整性所以不能强加于其他完整性规则之上。
3) 强制指示完整性
在有害数据进入数据库之前将其剔除。激活数据库系统的指示完整性特性。这样可以保持数据的清洁而能迫使开发人员投入更多的时间处理错误条件。
4) 使用查找控制数据完整性
控制数据完整性的最佳方式就是限制用户的选择。只要有可能都应该提供给用户一个清晰的价值列表供其选择。这样将减少键入代码的错误和误解同时提供数据的一致性。某些公共数据特别适合查找:国家代码、状态代码等。
5) 采用视图
为了在数据库和应用程序代码之间提供另一层抽象,可以为应用程序建立专门的视图而不必非要应用程序直接访问数据表。这样做还等于在处理数据库变更时给你提供了更多的自由。
5 其他设计技巧
1) 避免使用触发器
触发器的功能通常可以用其他方式实现。在调试程序时触发器可能成为干扰。假如你确实需要采用触发器,你最好集中对它文档化。
2) 使用常用英语(或者其他任何语言)而不要使用编码
在创建下拉菜单、列表、报表时最好按照英语名排序。假如需要编码,可以在编码旁附上用户知道的英语。
3) 保存常用信息
让一个表专门存放一般数据库信息非常有用。在这个表里存放数据库当前版本、最近检查/修复(对Access)、关联设计文档的名称、客户等信息。这样可以实现一种简单机制跟踪数据库,当客户抱怨他们的数据库没有达到希望的要求而与你联系时,这样做对非客户机/服务器环境特别有用。
4) 包含版本机制
在数据库中引入版本控制机制来确定使用中的数据库的版本。时间一长,用户的需求总是会改变的。最终可能会要求修改数据库结构。把版本信息直接存放到数据库中更为方便。
5) 编制文档
对所有的快捷方式、命名规范、限制和函数都要编制文档。
采用给表、列、触发器等加注释的数据库工具。对开发、支持和跟踪修改非常有用。
对数据库文档化,或者在数据库自身的内部或者单独建立文档。这样,当过了一年多时间后再回过头来做第2 个版本,犯错的机会将大大减少。
6) 测试、测试、反复测试
建立或者修订数据库之后,必须用用户新输入的数据测试数据字段。最重要的是,让用户进行测试并且同用户一道保证选择的数据类型满足商业要求。测试需要在把新数据库投入实际服务之前完成。
7) 检查设计
在开发期间检查数据库设计的常用技术是通过其所支持的应用程序原型检查数据库。换句话说,针对每一种最终表达数据的原型应用,保证你检查了数据模型并且查看如何取出数据。
数据库物理设计与内模式设计有关。
物理结构设计阶段实现的是数据库系统的内模式,它的质量直接决定了整个系统的性能。
物理设计就是根据所选择的关系型数据库的特点对逻辑模型进行存储结构设计。
考点46物理设计的评价
数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生多种方案,数据库设计人员必须对这些方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构。
在数据库应用系统生存期中,总的开销包括:规划开销、设计开销、实施和测试开销、 *** 作开销、运行维护开销。评价物理数据库的方法完全依赖于所选用的DBMS。
420实现和维护
考点47数据库的实现
数据库实现的主要工作有以下几个方面:
(1)定义数据库结构。
(2)编制与调试应用程序。
(3)数据装载。
(4)数据库试运行。
考点48其他设计
其他设计工作包括加强数据库的安全性、完整性控制,以及保证一致性、可恢复性等,总是以牺牲效率为代价的。设计人员的任务就是要在实现代价和尽可能多的功能之间进行合理平衡。其他设计包括数据库的再组织设计、故障恢复方案设计、安全性考虑和事务控制等。
考点49数据库的运行和维护
在数据库运行阶段,对数据库经常性的维护工作主要是由DBA完成的,它包括以下几个方面:
(1)数据库的转储和恢复。
(2)数据库的安全性、完整性控制。
(3)数据库性能的监督、分析和改进。
(4)数据库的重组织和重构造。
421数据库管理系统概述
考点50 DBMS的系统目标
数据库管理系统(DBMS)是 *** 作和管理数据库的软件系统,它由一组计算机程序构成,管理并控制数据资源的使用。数据库管理系统是数据库系统的核心DBMS的目标是用户界面友好、结构清晰和开放性。
考点51 DBMS的基本功能
DBMS主要是实现对共享数据有效的组织、管理和存取。因此,DBMS具有如下几个方面的基本功能。
(1)数据库定义功能。
(2)数据存取功能。
(3)数据组织、存储和管理。
(4)数据库运行管理。
(5)数据库的建立和维护。
(6)通信功能和数据转换功能等。
考点52 DBMS程序模块的组成
大致来说,DBMS的程序模块可按功能划分为以下5个模块:
(1)数据定义方面的程序模块。
(2)数据 *** 纵方面的程序模块
(3)数据库运行管理方面的程序模块
(4)数据库组织、存储和管理方面的程序模块。
(5)数据库建立、维护和其他方面的程序模块。
考点53 DBMS的层次结构
可以将DBMS划分成若干层次,这样可以帮助我们更清晰地认识DBMS,更重要的是有助于DBMS的设计和维护。
(1)最上层是应用层位于DBMS核心之外。
(2)第二层是语言翻译处理层它处理的对象是数据库语言}A SQL,
(3)第三层是数据存取层:该层处理的对象是单个元组。
(4)第四层是数据存储层。该层处理的对象是数据页和系统缓冲区。
(5) *** 作系统是DBMS的基础。它处理的对象是数据文件的物理块。
422新的应用需求对DBMS的挑战
考点54新的应用需求对DBMS的挑战
由于现在以关系型数据库管理系统(RDBMS )为主流。这些新应用需求要求数据库管理系统应该具有支持分布式 *** 作、联机事务处理能力、决策支持能力、支持多媒体、大容量、复杂数据应用、兼容性和集成能力、异种数据库之间的互访能力、系统可靠性、安全性、大型系统等方面的管理能力。
在我国,当前流行的数据库管理系统绝大多数是关系型数据库管理系统,一般可分为如下3类:
(1)以PC机、微型机系统为运行环境的数据库管理系统。
(2)以Oracle为代表的数据库管理系统,这类系统还有IBM DB2,Sybase等,也被称为主流数据库管理系统。
(3)以Microsoft SQI Server为代表的介于以上两类之间的数据库管理系统。
423 Oracle数据库系统
考点55Oracle数据库系统简介
Oracle关系型数据库管理系统是美国Oracle公司的优秀软件产品,它采用SQL语言作为数据库语言。该公司于1979年推出了世界上第一个商业化的关系型数据库系统。
Oracle数据库的特点包括兼容性、可移植性、可连接性及高的生产率。
考点56 Oracle的主要产品及其功能
1Oracle数据库服务霖功能及其特色
Oracle数据库服务器包括标准服务器和许多可选的服务器选件,选件用于扩展标准服务器的功能,以适应特殊的应用需求。
(1)标准服务器主要具有下列特色:多进程多线索的体系结构、高性能核心技术、高可用性和SQL的实现。
(2)并行服务器选件(paralle server option)和并行查询选件(paralle query option)。
(3)分布式选件(distributed)。
(4)过程化选件(procedural option)。
2Oracle的工具产品及其功能
为方便用户开发数据库应用程序,Oracle提供了众多工具供用户选择使用,主要包括以下几个方面:
(1)Developer/2000。它是Oracle的一个较新的应用开发工具集,包括Oracle Forms, Oracle Reports,Oracle Graphics和Oracle Books等多种工具,用来实现高生产率、大型事务处理及客户/服务器结构的应用系统。
(2)Designer/2000 。它是Oracle提供的CASE工具,能够帮助用户对复杂系统进行建模、分析和设计,由BPR、Modellers、Generators等组成。
(3 ) Discoverer/2000。它是一个OLAP工具,主要用于支持数据仓库应用。
(4)Oracle Office。它是用于办公自动化的,能完成企业范围内的消息接收与发送。
(5)SQL DBA 。SQL DBN 是一个易于使用的。菜单驱动的DNA实用工具,可供用户进行动态性能监视、远程DB管理等。
424 IBM DB2数据库系统
考点58 IBM DB2数据库系统简介
IBM DB2数据库系统是美国IBM公司的产品1973年位于美国加州圣荷西市的IBM研究中心开始了一个大的关系型数据库系统研究项目jvstem R,探讨并验证在多用户与大量数据下关系型数据库的实际可行性。
考点59 DB2通用数据库的功能和特色
DB2家族除r包含在各种平台土运行的数据库管理系统内核之外,产品包中还包括了数据复制、数据库系统管理、Internet网关支持、在线分析处理、多媒体支持和各种并行处理能力,并为所有平台上的异构数据库访问提供‘中间件”解决方案。
DB2通用数据库(LDB)V7 1的特色包括支持Internet应用、支持面向对象和多媒体应用、支持联机分析处理和了干行处理能力。
考点60 IBM的商务智能解决方案
商务智能解决方案的基本结构往往包含以下3个部分:
(1)数据仓库,用于抽取、整和、分布、存储有用的信息。
(2)多维分析模型,全方位了解现状。
(3)前台分析工具,提供简单易用的图形化界面给管理人员。
考点61 IBM内容管理解决方案
(1) IBM Content Manager On Demand它可以完成电子存储、回取、分发、打印和传真,在极短的时间内就可以在显示器上获得与原来提供给客户的一模一样的报表/账单及其他计算机的输出信息。
(2)Digital Library IBM数字图书馆技术使人们快速而廉价地管理、访问、保护及传递大量多种多样的资料成为可能。这种数字化工作流程包含了一系列最新信息技术。
425 Sybase数据库系统
考点62 Svbase数据库简介
Sybase是美国Sybase公司的产品。1986年正式推出Sybase数据库系统。 Sybase在新兴的EP发展策略中充分利用了已有的核心产品和战略优势,提供了满足电子商务需求的解决方案。
考点63Sybase数据库系统的功能及其特色
目前,Sybase数据库系统定位在4个方向,分别在企业解决方案,Internet应用、商务智能和移动与嵌人计算领域为客户提供先进的技术:
企业解决方案包括企业级数据库、数据复制和数据访问。主要产品有:Sybase EP,Adaptive Server Enter-prise、Adaptive Server Replication、Adaptive Server Connect及异构数据库互联选件。
426 IBS-SQL Server数据库系统
考点64 MS-SQL Server数据库系统
MS-SQL Server数据库系统是美国Microsoft公司的产品。MS-SQL Server数据库系统是在Svbase SQL erver 4的版本基础上发展起来的。目前Microsoft SQL Server 7 0和Microsoft SQL Server 2000广泛使用于我国的各行各业,包括许多政府部门。
考点65 Microsoft SQL Server系统主要功能及其特性
1数据库服备器MS-SQI, Server
MS-SQL决rver数据库系统的核心是Microsoft SQL Server,简称MS-SQL Server或SQL Server,它有70、2000和2005三个主要版本。
2MS-SQL Server 2000的主要功能及其特色
MS-SQL Server 2000的主要功能有充分的Web支持、高度可伸缩性和可靠性、最快投放市场、充分的数据仓库功能和广泛的支持电子商务功能。
考点66 SQL Server 2000多版本支持
SQL Server 2000提供了各种不同的版本,包括SQL Server 2000企业版、SQL Server 2000标准版、SQLServer 2000个人版、SQL Server 2000开发人员版,SQL Server 2000企业评估版,SQL Server 2000桌面引擎和SQL Server 2000 Windows CE版
数据库的设计过程大致可分为以下六个阶段:
1 需求分析阶段
需求收集和分析,结果得到数据字典描述的数据需求(和数据流图描述的处理需求)。
2 概念结构设计阶段
通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,可以用E-R图表示。
3 逻辑结构设计阶段
将概念结构转换为某个DBMS所支持的数据模型(例如关系模型),并对其进行优化。
4 数据库物理设计阶段
为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
5 数据库实施阶段
运用DBMS提供的数据语言(例如SQL)及其宿主语言(例如C),根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
6 数据库运行和维护阶段
数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。
(1)存储记录结构设计综合分析数据存储要求和应用需求,设计存储记录格式
(2)存储空间分配存储空间分配有两个原则:①存取频度高的数据尽量安排在快速、随机设备上,存取频度低的数据则安排在速度较慢的设备上
②相互依赖性强的数据尽量存储在同一台设备上,且尽量安排在邻近的存储空间上
从提高系统性能方面考虑,应将设计好的存储记录作为一个整体合理地分配物理存储区域
尽可能充分利用物理顺序特点,把不同类型的存储记录指派到不同的物理群中
(3)访问方法的设计一个访问方法包括存储结构和检索机构两部分
存储结构限定了访问存储记录时可以使用的访问路径;检索机构定义了每个应用实际使用的访问路径
(4)物理设计的性能评价①查询响应时间从查询开始到有结果显示之间所经历的时间称为查询响应时间
查询响应时间可进一步细分为服务时间、等待时间和延迟时间
在物理设计过程中,要对系统的性能进行评价
性能评价包括时间、空间、效率、开销等各个方面
⊙CPU服务时间和I/O服务时间的长短取决于应用程序设计
⊙CPU队列等待时间和I/O队列等待时间的长短受计算机系统作业的影响
⊙设计者可以有限度地控制分布式数据库系统的通信延迟时间
②存储空间存储空间存放程序和数据
程序包括运行的应用程序、DBMS子程序、OS子程序等
数据包括用户工作区、DBMS工作区、OS工作区、索引缓冲区、数据缓冲区等
存储空间分为主存空间和辅存空间
设计者只能有限度地控制主存空间,例如可指定缓冲区的分配等
但设计者能够有效地控制辅存空间
③开销与效率设计中还要考虑以下各种开销,开销增大,系统效率将下降
⊙事务开销指从事务开始到事务结束所耗用的时间
更新事务要修改索引、重写物理块、进行写校验等 *** 作,增加了额外的开销
更新频度应列为设计的考虑因素
⊙报告生成开销指从数据输入到有结果输出这段时间
报告生成占用CPU及I/O的服务时间较长
设计中要进行筛选,除去不必要的报告生成
⊙对数据库的重组也是一项大的开销
设计中应考虑数据量和处理频度这两个因数,做到避免或尽量减少重组数据库
在物理设计阶段,设计、评价、修改这个过程可能要反复多次,最终得到较为完善的物理数据库结构说明书
建立数据库时,DBA依据物理数据库结构说明书,使用DBMS提供的工具可以进行数据库配置
在数据库运行时,DBA监察数据库的各项性能,根据依据物理数据库结构说明书的准则,及时进行修正和优化 *** 作,保证数据库系统能够保持高效率地运行
6
程序编制及调试在逻辑数据库结构确定以后,应用程序设计的编制就可以和物理设计并行地展开程序模块代码通常先在模拟的环境下通过初步调试,然后再进行联合调试
联合调试的工作主要有以下几点:(1)建立数据库结构根据逻辑设计和物理设计的结果,用DBMS提供的数据语言(DDL)编写出数据库的源模式,经编译得到目标模式,执行目标模式即可建立实际的数据库结构
(2)调试运行数据库结构建立后,装入试验数据,使数据库进入调试运行阶段
运行应用程序,测试(3)装入实际的初始数据在数据库正式投入运行之前,还要做好以下几项工作:(1)制定数据库重新组织的可行方案
(2)制定故障恢复规范(3)制定系统的安全规范7
运行和维护数据库正式投入运行后,运行维护阶段的主要工作是:(1)维护数据库的安全性与完整性
按照制定的安全规范和故障恢复规范,在系统的安全出现问题时,及时调整授权和更改密码
及时发现系统运行时出现的错误,迅速修改,确保系统正常运行
把数据库的备份和转储作为日常的工作,一旦发生故障,立即使用数据库的最新备份予以恢复
(2)监察系统的性能
运用DBMS提供的性能监察与分析工具,不断地监控着系统的运行情况
当数据库的存储空间或响应时间等性能下降时,立即进行分析研究找出原因,并及时采取措施改进
例如,可通修改某些参数、整理碎片、调整存储结构或重新组织数据库等方法,使数据库系统保持高效率地正常运作
(3)扩充系统的功能在维持原有系统功能和性能的基础上,适应环境和需求的变化,采纳用户的合理意见,对原有系统进行扩充,增加新的功能
数据库设计的基本步骤
按照规范设计的方法,考虑数据库及其应用系统开发全过程,将数据库设计分为以下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个阶段。
2概念结构设计阶段(常用自底向上)
概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合,归纳与抽象,形成了一个独立于具体DBMS的概念模型。
设计概念结构通常有四类方法:
自顶向下。即首先定义全局概念结构的框架,再逐步细化。
自底向上。即首先定义各局部应用的概念结构,然后再将他们集成起来,得到全局概念结构。
逐步扩张。首先定义最重要的核心概念结构,然后向外扩张,以滚雪球的方式逐步生成其他的概念结构,直至总体概念结构。
混合策略。即自顶向下和自底向上相结合。
3逻辑结构设计阶段(E-R图)
逻辑结构设计是将概念结构转换为某个DBMS所支持的数据模型,并将进行优化。
在这阶段,E-R图显得异常重要。大家要学会各个实体定义的属性来画出总体的E-R图。
各分E-R图之间的冲突主要有三类:属性冲突,命名冲突,和结构冲突。
E-R图向关系模型的转换,要解决的问题是如何将实体性和实体间的联系转换为关系模式,如何确定这些关系模式的属性和码。
4物理设计阶段
物理设计是为逻辑数据结构模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
首先要对运行的事务详细分析,获得选择物理数据库设计所需要的参数,其次,要充分了解所用的RDBMS的内部特征,特别是系统提供的存取方法和存储结构。
常用的存取方法有三类:1索引方法,目前主要是B+树索引方法。2聚簇方法(Clustering)方法。3是HASH方法。
5数据库实施阶段
数据库实施阶段,设计人员运营DBMS提供的数据库语言(如sql)及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制和调试应用程序,组织数据入库,并进行试运行。
6数据库运行和维护阶段
数据库应用系统经过试运行后,即可投入正式运行,在数据库系统运行过程中必须不断地对其进行评价,调整,修改。
数据库设计5步骤
Five Steps to design the Database
1确定entities及relationships
a) 明确宏观行为。数据库是用来做什么的?比如,管理雇员的信息。
b) 确定entities。对于一系列的行为,确定所管理信息所涉及到的主题范围。这将变成table。比如,雇用员工,指定具体部门,确定技能等级。
c) 确定relationships。分析行为,确定tables之间有何种关系。比如,部门与雇员之间存在一种关系。给这种关系命名。
d) 细化行为。从宏观行为开始,现在仔细检查这些行为,看有哪些行为能转为微观行为。比如,管理雇员的信息可细化为:
· 增加新员工
· 修改存在员工信息
· 删除调走的员工
e) 确定业务规则。分析业务规则,确定你要采取哪种。比如,可能有这样一种规则,一个部门有且只能有一个部门领导。这些规则将被设计到数据库的结构中。
====================================================================
范例:
ACME是一个小公司,在5个地方都设有办事处。当前,有75名员工。公司准备快速扩大规模,划分了9个部门,每个部门都有其领导。
为有助于寻求新的员工,人事部门规划了68种技能,为将来人事管理作好准备。员工被招进时,每一种技能的专业等级都被确定。
定义宏观行为
一些ACME公司的宏观行为包括:
● 招聘员工
● 解雇员工
● 管理员工个人信息
● 管理公司所需的技能信息
● 管理哪位员工有哪些技能
● 管理部门信息
● 管理办事处信息
确定entities及relationships
我们可以确定要存放信息的主题领域(表)及其关系,并创建一个基于宏观行为及描述的图表。
我们用方框来代表table,用菱形代表relationship。我们可以确定哪些relationship是一对多,一对一,及多对多。
这是一个E-R草图,以后会细化。
细化宏观行为
以下微观行为基于上面宏观行为而形成:
● 增加或删除一个员工
● 增加或删除一个办事处
● 列出一个部门中的所有员工
● 增加一项技能
● 增加一个员工的一项技能
● 确定一个员工的技能
● 确定一个员工每项技能的等级
● 确定所有拥有相同等级的某项技能的员工
● 修改员工的技能等级
这些微观行为可用来确定需要哪些table或relationship。
确定业务规则
业务规则常用于确定一对多,一对一,及多对多关系。
相关的业务规则可能有:
● 现在有5个办事处;最多允许扩展到10个。
● 员工可以改变部门或办事处
● 每个部门有一个部门领导
● 每个办事处至多有3个电话号码
● 每个电话号码有一个或多个扩展
● 员工被招进时,每一种技能的专业等级都被确定。
● 每位员工拥有3到20个技能
● 某位员工可能被安排在一个办事处,也可能不安排办事处。
2确定所需数据
要确定所需数据:
a) 确定支持数据
b) 列出所要跟踪的所有数据。描述table(主题)的数据回答这些问题:谁,什么,哪里,何时,以及为什么
c) 为每个table建立数据
d) 列出每个table目前看起来合适的可用数据
e) 为每个relationship设置数据
f) 如果有,为每个relationship列出适用的数据
确定支持数据
你所确定的支持数据将会成为table中的字段名。比如,下列数据将适用于表Employee,表Skill,表Expert In。
Employee
Skill
Expert In
ID
ID
Level
Last Name
Name
Date acquired
First Name
Description
Department
Office
Address
如果将这些数据画成图表,就像:
需要注意:
● 在确定支持数据时,请一定要参考你之前所确定的宏观行为,以清楚如何利用这些数据。
● 比如,如果你知道你需要所有员工的按姓氏排序的列表,确保你将支持数据分解为名字与姓氏,这比简单地提供一个名字会更好。
● 你所选择的名称最好保持一致性。这将更易于维护数据库,也更易于阅读所输出的报表。
● 比如,如果你在某些地方用了一个缩写名称Emp_status,你就不应该在另外一个地方使用全名(Empolyee_ID)。相反,这些名称应当是Emp_status及Emp_id。
● 数据是否与正确的table相对应无关紧要,你可以根据自己的喜好来定。在下节中,你会通过测试对此作出判断。
3标准化数据
标准化是你用以消除数据冗余及确保数据与正确的table或relationship相关联的一系列测试。共有5个测试。本节中,我们将讨论经常使用的3个。
关于标准化测试的更多信息,请参考有关数据库设计的书籍。
标准化格式
标准化格式是标准化数据的常用测试方式。你的数据通过第一遍测试后,就被认为是达到第一标准化格式;通过第二遍测试,达到第二标准化格式;通过第三遍测试,达到第三标准化格式。
如何标准格式:
1. 列出数据
2. 为每个表确定至少一个键。每个表必须有一个主键。
3. 确定relationships的键。relationships的键是连接两个表的键。
4. 检查支持数据列表中的计算数据。计算数据通常不保存在数据库中。
5. 将数据放在第一遍的标准化格式中:
6. 从tables及relationships除去重复的数据。
7. 以你所除去数据创建一个或更多的tables及relationships。
8. 将数据放在第二遍的标准化格式中:
9. 用多于一个以上的键确定tables及relationships。
10. 除去只依赖于键一部分的数据。
11. 以你所除去数据创建一个或更多的tables及relationships。
12. 将数据放在第三遍的标准化格式中:
13. 除去那些依赖于tables或relationships中其他数据,并且不是键的数据。
14. 以你所除去数据创建一个或更多的tables及relationships。
数据与键
在你开始标准化(测试数据)前,简单地列出数据,并为每张表确定一个唯一的主键。这个键可以由一个字段或几个字段(连锁键)组成。
主键是一张表中唯一区分各行的一组字段。Employee表的主键是Employee ID字段。Works In relationship中的主键包括Office Code及Employee ID字段。给数据库中每一relationship给出一个键,从其所连接的每一个table中抽取其键产生。
RelationShip
Key
Office
Office code
Office address
Phone number
Works in
Office code
Employee ID
Department
Department ID
Department name
Heads
Department ID
Employee ID
Assoc with
Department ID
EmployeeID
Skill
Skill ID
Skill name
Skill description
Expert In
Skill ID
Employee ID
Skill level
Date acquired
Employee
Employee ID
Last Name
First Name
Social security number
Employee street
Employee city
Employee state
Employee phone
Date of birth
将数据放在第一遍的标准化格式中
● 除去重复的组
● 要测试第一遍标准化格式,除去重复的组,并将它们放进他们各自的一张表中。
● 在下面的例子中,Phone Number可以重复。(一个工作人员可以有多于一个的电话号码。)将重复的组除去,创建一个名为Telephone的新表。在Telephone与Office创建一个名为Associated With的relationship。
将数据放在第二遍的标准化格式中
● 除去那些不依赖于整个键的数据。
● 只看那些有一个以上键的tables及relationships。要测试第二遍标准化格式,除去那些不依赖于整个键的任何数据(组成键的所有字段)。
● 在此例中,原Employee表有一个由两个字段组成的键。一些数据不依赖于整个键;例如,department name只依赖于其中一个键(Department ID)。因此,Department ID,其他Employee数据并不依赖于它,应移至一个名为Department的新表中,并为Employee及Department建立一个名为Assigned To的relationship。
将数据放在第三遍的标准化格式中
● 除去那些不直接依赖于键的数据。
● 要测试第三遍标准化格式,除去那些不是直接依赖于键,而是依赖于其他数据的数据。
● 在此例中,原Employee表有依赖于其键(Employee ID)的数据。然而,office location及office phone依赖于其他字段,即Office Code。它们不直接依赖于Employee ID键。将这组数据,包括Office Code,移至一个名为Office的新表中,并为Employee及Office建立一个名为Works In的relationship。
4考量关系
当你完成标准化进程后,你的设计已经差不多完成了。你所需要做的,就是考量关系。
考量带有数据的关系
你的一些relationship可能集含有数据。这经常发生在多对多的关系中。
遇到这种情况,将relationship转化为一个table。relationship的键依旧成为table中的键。
考量没有数据的关系
要实现没有数据的关系,你需要定义外部键。外部键是含有另外一个表中主键的一个或多个字段。外部键使你能同时连接多表数据。
有一些基本原则能帮助你决定将这些键放在哪里:
一对多 在一对多关系中,“一”中的主键放在“多”中。此例中,外部键放在Employee表中。
一对一 在一对一关系中,外部键可以放进任一表中。如果必须要放在某一边,而不能放在另一边,应该放在必须的一边。此例中,外部键(Head ID)在Department表中,因为这是必需的。
多对多 在多对多关系中,用两个外部键来创建一个新表。已存的旧表通过这个新表来发生联系。
5检验设计
在你完成设计之前,你需要确保它满足你的需要。检查你在一开始时所定义的行为,确认你可以获取行为所需要的所有数据:
● 你能找到一个路径来等到你所需要的所有信息吗?
● 设计是否满足了你的需要?
● 所有需要的数据都可用吗?
如果你对以上的问题都回答是,你已经差不多完成设计了。
最终设计
最终设计看起来就像这样:
设计数据库的表属性
数据库设计需要确定有什么表,每张表有什么字段。此节讨论如何指定各字段的属性。
对于每一字段,你必须决定字段名,数据类型及大小,是否允许NULL值,以及你是否希望数据库限制字段中所允许的值。
选择字段名
字段名可以是字母、数字或符号的任意组合。然而,如果字段名包括了字母、数字或下划线、或并不以字母打头,或者它是个关键字(详见关键字表),那么当使用字段名称时,必须用双引号括起来。
为字段选择数据类型
SQL Anywhere支持的数据类型包括:
整数(int, integer, smallint)
小数(decimal, numeric)
浮点数(float, double)
字符型(char, varchar, long varchar)
二进制数据类型(binary, long binary)
日期/时间类型(date, time, timestamp)
用户自定义类型
关于数据类型的内容,请参见“SQL Anywhere数据类型”一节。字段的数据类型影响字段的最大尺寸。例如,如果你指定SMALLINT,此字段可以容纳32,767的整数。INTEGER可以容纳2,147,483,647的整数。对CHAR来讲,字段的最大值必须指定。
长二进制的数据类型可用来在数据库中保存例如图像(如位图)或者文字编辑文档。这些类型的信息通常被称为二进制大型对象,或者BLOBS。
关于每一数据类型的完整描述,见“SQL Anywhere数据类型”。
以上就是关于怎样设计一个好的数据库全部的内容,包括:怎样设计一个好的数据库、数据库物理设计与内模式设计有关吗、全国计算机三级数据库考点分析之数据库系统基本原理[5]等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)