数据库设计规范样本.doc

上传人:知*** 文档编号:97837335 上传时间:2024-07-08 格式:DOC 页数:19 大小:69.54KB
返回 下载 相关 举报
数据库设计规范样本.doc_第1页
第1页 / 共19页
数据库设计规范样本.doc_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《数据库设计规范样本.doc》由会员分享,可在线阅读,更多相关《数据库设计规范样本.doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、关系型数据库设计规范目录文档类别使用对象41.概述51.1 介绍51.2 术语定义51.3 参考资料51.4 版本更新统计52数据库设计目标63.数据库特征63.1完整性约束63.1.1not null约束73.1.2缺省值73.1.3unique约束73.1.4primary key约束73.1.5参考完整性约束83.1.6check约束83.2存放过程83.3触发器93.4事务处理93.4.3事务和一致性103.4.4事务和恢复103.5并发处理103.5.3死锁113.5.4读一致性113.6序号生成器113.7视图113.7.3安全性123.7.4逻辑数据独立性124.调整数据库设计以

2、提升系统性能134.1建立有用性能标准134.2数据库规范化134.3经过非规范化设计提升数据库效率134.3.3非规范化原因134.3.4非规范化技术144.3.5进行非规范化处理时注意事项144.4表大小154.4.3表是否过小154.4.4表是否过大154.4.5怎样减小表尺寸154.5统计大小154.5.3列有最好位置吗154.5.4存在最好统计大小吗154.5.5统计是否过小154.5.6统计是否过大154.5.7怎样减小统计164.5.8总结165.其它16文档类别使用对象文档类别该文档是通用软件企业关系型数据库设计规范,是技术文档。使用对象该文档使用人员包含: 开发本部总经理 各

3、产品部、事业部经理、项目经理、设计人员 软件中心责任人、设计人员 企业总经理1. 概述1.1 介绍本文档总结了企业进行多年来SYBASE数据库设计经验,目标将企业进行数据库设计经验积累下来,实现设计经验复用,为项目评审和项目质量确保提供进行检验依据。本规范从数据库设计目标、数据库各个特征、数据库规范化等各个方面进行叙述,对进行SYBASE数据库设计提供了很好依据。1.2 术语定义1.3 参考资料Powerbuilder开发设计中数据库设计晓通数据库研究和发展中心企业1.4 版本更新统计版本/修订版日期修改统计备注1.010/10/99初始版本2数据库设计目标 好数据库物理设计应该充足考虑应用需

4、求和开发工具特征,应该充足利用和挖掘数据库功效。一流数据库设计会给整个应用系统带来以下好处: 维护轻易。当需求发生改变时,优良数据库设计会使应用系统轻易地适应这种改变。 编程简单。因为数据库设计充足挖掘了数据库功效,所以应用程序复杂度能够显著降低。 加紧开发速度。因为数据库设计充足地考虑了需求和开发工具特征,所以开发人员会感到左右逢源,得心应手,从而能够加紧开发速度。 系统含有良好整体运行效率。3. 数据库特征 完整性约束。完整性约束许可在表上定义某种约束条件,这些条件作为表定义一部分存在,从而强制表中数据满足一定规则。 存放过程。存放过程是由流控制语句(ifelse)和SQL语句书写过程,这

5、个过程经过编译和优化后存放在数据库服务器中,使用时只要调用即可。 触发器。触发器是一个特殊存放过程,不一样是这种过程不是由程序调用来实施,而是经过数据库数据更新自动地“触发”实施。 事务处理:事务是最小逻辑工作单元,在这个单元中对数据库全部更新要么全成功要么全失败。 并发处理。许可用户在没有冲突情况下更新表中不一样行。行级锁和页级锁对联机事务处理很有用。 序号生成器。数据库能够自动生成连续序号供给用程序使用。 遵守工业标准SQL。 视图。视图是原始数据库表变换,可给应用程序带来安全性、简单性和独立性。 分布处理。数据能够分布在网络多个点上,数据本身支持分布查询和分布修改。 数据复制。数据能够在

6、网络多个数据库点相互复制。3.1完整性约束完整性约束是数据库用于维护数据库完整性一个机制。这种约束是表定义一部分,是内部。和在应用程序中维护数据库完整性不一样,它代价小而且性能高。完整性约束有以下两点作用:1. 使企业规则和数据库联络起来。2. 预防操作员或终端用户输入错误数据,破坏数据库完整性。完整性约束有以下多个:l not null约束缺省值l unique约束l primary key约束l foreign key约束l check约束3.1.1not null约束not null含义是列中不能有空值。not null在创建表时定义。not null约束限定了列中必需有值,但不能限定列

7、中能够有什么值,所以它常常和其它约束配合使用。3.1.2缺省值缺省值是在数据录入时,若用户没有输入数据,数据库自动输入值。下面是定义缺省时应注意部分事项:要确保列宽对缺省值来说足够大。要注意缺省值和规则间冲突,确保缺省值为规则所许可,不然,缺省值会被规则忽略掉。3.1.3 unique约束唯一列是这么列,它值不能在表中反复出现。注意,唯一列和主键不一样,主键可用来唯一地标识表中一行(不能有空值),而唯一列仅仅表示该列值不能在表中反复出现(能够有空值)。能够在一个列上定义唯一列,也能够在表上定义唯一列,也能够在表上对多个列定义唯一列。3.1.4 primary key约束每个表中全部应有主键,主

8、键唯一标识表中行。选择主键应注意以下几点:l 选择数据是唯一列。l 选择数据值不会改变列。主键目标是唯一地标识一行,不含有用于其它目标数据,选择通常不需要改变主键值列。l 选择不含有空值列。依据定义,主键列不许可输入空值。l 选择短和数值型列。l 避免选择联合主键。即使许可联合主键,但极难满足以上四点要求。3.1.5 参考完整性约束参考完整性约束用来约束两个表间关系。1. 空值和外部键对于缺省(无not null或check语句)情况,外部键约束为组合外部键实施“无匹配”规则。经过使用check和not null也可使用全部或部分规则:l 在组合外部键中实施全匹配规则,要求键全部要么全部为空要

9、么全部不为空。l 在通常情况下,不能使用参考完整性在组合键中实施部分匹配规则。部分匹配规则要求键非空部分出现在引用表主键对应部分上,这种情况通常要用触发器来处理。2. 父表和子表关系父表和子表关系决定于在子表外部键上定义其它类型完整性约束。l 在外部键上没有约束。l 在外部键上有非空约束。l 在外部键上有unique约束。l 在外部键上有unique和not null约束。3.1.6 check约束当需要依据逻辑表示式来限定列值域时,能够用check完整性约束。check约束写法和where子句写法一样,但它有以下限制:l 条件必需是能够利用更新行中值来求值表示式。l 条件中不能有子查询或序号

10、。l 条件中不能含有函数。l 条件中不能含有伪列。3.2 存放过程存放过程是由流控制和SQL语句书写过程,这个过程经编译和优化后存放在数据库服务器中,使用时只要调用即可。使用存放过程有以下优点:l 存放过程能力大大增强了SQL语言功效和灵活性。存放过程能够用流控制语句编写,有很强灵活性,能够完成复杂判定和较复杂运算。l 可确保数据安全性和完整性。 经过存放过程能够使没有权限用户在控制之下间接地寸取数据库,从而确保数据安全。 经过存放过程能够使相关动作在一起发生,从而能够维护数据库完整性。l 在运行存放过程前,数据库已对其进行了语法和句法分析,并给出了优化实施方案。这种已经编译好过程可极大地改善

11、SQL语句性能。因为实施SQL语句大部分工作已经完成,所以存放过程能以极快速度实施。l 能够降低网络通信量。l 使表现企业规则运算程序放入数据库服务器中,方便: 集中控制。 当企业规则发生改变时在服务器中改变存放过程即可,无须修改任何应用程序。3.3 触发器触发器是一个特殊存放过程,它在插入、删除或修改特定表中数据时触发实施,它比数据库本身标准功效有更精细和更复杂数据控制能力。数据库触发器有以下作用:l 安全性。能够基于数据库值使用户含有操作数据库某种权利。 能够基于时间限制用户操作。 能够基于数据库中数据限制用户操作。l 审计。能够跟踪用户对数据库操作。 审计用户操作数据库语句。 把用户对数

12、据库更新写入审计表。l 实现复杂数据完整性规则。 实现非标准数据完整性检验和约束。触发器可产生比规则更复杂限制。和规则不一样,触发器能够引用列或数据库对象。 提供可变缺省值。l 实现复杂非标准数据库相关完整性规则。触发器能够对数据库中相关表进行连环更新。 在修改或删除时级联修改或删除其它表中和之匹配行。 在修改或删除时把其它表中和之匹配行设成NULL值。 在修改或删除时把其它表中和之匹配行级联成缺省值。 触发器能够拒绝或“回退”那些破坏相关完整性改变,取消试图进行数据更新事物。当插入一个和主键不匹配外部键时,这种触发器会起作用。l 同时实时地复制表中数据。l 自动计算数据值,假如数据值达成了一

13、定要求,则进行特定处理。3.4 事务处理事务是这么一个机制,它确保多个SQL语句被看成单个工作单元来处理。事务含有以下作用:l 一致性:同时进行查询和更新相互不会发生冲突,其它用户不会看到发生了改变但还未提交数据。l 可恢复性:一旦系统故障,数据库会自动地完全恢复未完成事务。3.4.3 事务和一致性事务是完整性单位,一个事务实施是把数据库从一个一致状态转换成另一个一致状态。所以,假如事务孤立实施时是正确,但假如多个事务并发交错地实施,就可能相互干扰,造成数据库状态不一致性。在多用户环境中,数据库必需避免同时进行查询和更新发生冲突。这一点是很关键,假如正在被处理数据能够在该处理正在运行时被另一用

14、户修改所改变,那么该处理结果会是不明确。不加控制并发存取会产生以下多个错误。丢失修改(lost updates)当多个事务并发修改一个数据时,不加控制会得犯错误结果,一个修改会覆盖掉另一个修改。这种丢失修改叫“写写依靠”(WriteWrite Dependency)。读不可反复性当多个事务按某种时间次序存取若干数据时,假如对并发存取不加控制,也会产生错误。这叫做“读写依靠”(ReadWrite Dependency)。脏读(dirty data),读不一致性这种脏读或说读不一致性叫“写读依靠”(WriteRead Dependency)。光标带来目前值混乱事务在实施过程中它在某个表上目前位置是

15、由光标表示。光标指向目前正处理统计。当处理完该条统计后,则指向下一条统计。在多个事务并发实施时,一个事务修改可能产生副作用,使和这些光标相关事务犯错。未释放修改造成连锁退出一个事务在进行修改操作过程中可能会发生故障,这时需要将已做修改回退(Rollback)。假如在已进行过或已发觉错误还未复原之前许可其它事务读已做过修改(脏读),则会造成连锁退出。一事务在对一表更新时,另外事务却修改或删除此表定义。3.4.4 事务和恢复 数据库本身担负着管理事务责任。事务是最小逻辑工作单元,在这个工作单元中,对数据库全部更新工作,要么必需全部成功,要么必需全部失败(回退)。只要应用程序指定了某段程序为一个事务

16、并做了对应处理,数据库系统会自动维护事务本身特征。3.5 并发处理数据库特点就是数据集中管理和共享。在通常情况下总是有若干个事务并发地运行,这些并行事务可能并发地存取相同数据。所以,数据库管理系统一个关键任务就是要有一个机制去确保这种并发存取和修改不破坏数据完整性,确保这些事务能正确地运行并取得正确结果。事务并发实施时若不加控制话将造成不正确结果和数据库不一致状态。为确保数据库数据正确地反应全部事务更新和在一事务修改数据时其它事务不一样时修改这个数据,数据库系统用锁来控制对数据并发存取。3.5.3 死锁当事务T1想要锁住资源已被事务T2锁住,而T2想要锁住资源也被T1锁住时,T1要等候T2释放

17、资源,T2要等候T1释放资源。这么,两个事务相互等候造成死锁。当数据库检测到死锁时,检测到死锁事务被通知犯错,回退目前语句。通常被通知犯错事务应显式地回退整个事务,但用户也可不管被锁住资源直接提交或等会儿再重新做。数据库会自动检测到死锁并恢复。在应用中,为避免死锁,应在事务开始加尽可能强锁。在应用系统中,存取同一张表多种程序应使用相同次序,这会避免死锁。3.5.4 读一致性读一致性是数据库事务处理关键特征,其含义为:一事务对数据库任何更新全部在本事务内见到,数据库数据对本事务是一致。其它事务未提交更新,在本事务内见不到。即其它事务任何更新,只要还没提交,则对本事务而言,就好象不存在一样。3.6

18、 序号生成器在很多应用系统要用到序号。因为序号是连续生成,在大型系统中,会有多个用户同时申请下一个序号,序号生成便成了应用系统瓶颈问题。为了处理这个问题,大型数据库全部增加了序号对象。经过序号对象能够自动生成序号,多个用户能够并发读取,无须相互等候。3.7 视图视图是原始数据库数据一个变换,是查看表中数据另外一个方法。能够将视图看成一个移动窗口,经过它能够看到感爱好数据。视图是从一个或多个实际表中取得,这些表数据存放在数据库中。那些用于产生视图表叫做视图基表。一个视图也可从另一视图中产生。视图定义存在数据库中,和此定义相关数据并没有再存一份于数据库中。经过视图看到数据存放在基表中。视图看上去很

19、象数据库物理表,对它操作同任何其它表一样。当经过视图修改数据时,实际上是在改变基表中数据;相反地,基表数据改变也会自动反应在由基表产生视图中。因为逻辑上原因,有些视图能够修改对应基表,有些则不能(仅仅能查询)。视图有以下作用:l 简单性。看到就是需要。视图不仅能够简化用户对数据了解,也能够简化她们操作。那些被常常使用查询能够被定义为视图,从而使得用户无须为以后操作每次指定全部条件。l 安全性。经过视图用户只能查询和修改她们所能见到数据。数据库中其它数据则既看不见也取不到。数据库授权命令能够使每个用户对数据库检索限制到特定数据库对象上,但不能授权到数据库行和特定列上。经过视图,用户可被限制在数据

20、不一样子集上: 基表行子集上。 基表列子集上。 基表行和列子集上。 多个基表连接所限定行上。 基表数据统计汇总上。 另一行视图一个子集上,或是部分视图和基表合并后子集上。l 逻辑数据独立性。视图可帮助用户屏蔽真实表结构改变带来影响。3.7.3 安全性视图安全性能够预防未授权用户查看特定行或列。使用户只能看到表中特定行方法以下:1. 在表中增加一个标志用户列;2. 建立视图,使用户只能看到标有自己用户名列;3. 把视图授权给其它用户。3.7.4 逻辑数据独立性视图能够在以下多个方面使程序和数据独立:1. 假如应用建立在数据库表上,当数据库表发生改变时,能够在表上建立视图,经过视图屏蔽表改变,从而

21、应用程序能够不动。2. 假如应用建立在数据库表上,当应用发生改变时,能够在表上建立视图,经过视图屏蔽应用改变,从而使数据库表不动。3. 假如应用建立在视图上,当数据库表发生改变时,能够在表上修改视图,经过视图屏蔽表改变,从而应用程序能够不动。4. 假如应用建立在视图上,当应用发生改变时,能够在表上修改视图,经过视图屏蔽应用改变,从而使数据库表不动。4. 调整数据库设计以提升系统性能4.1 建立有用性能标准需遵照下列标准:l 单条统计更新应该在1秒钟之内。l 多条统计更新不超出10秒钟。l 对于少于4个表、数据有一定程度查询,响应时间应在5秒钟之内。l 对于其它数据有一定程度多表查询应在10秒钟

22、之内。l 整个表查询时间应在30秒钟之内。不过,不要盲目地接收性能标准,有些极端可除外。4.2 数据库规范化从关系模型角度来看,标准表应该满足第三范式(3NF)。这么表结构最轻易维护,而且最含有可维护性。对数据库进行规范化处理含有以下优点:l 因为表列数降低了,所以搜索、排序、创建索引速度能够加紧。l 因为表减小了,所以根据索引查询速度加紧了。l 能够愈加好地使用段来控制数据物理存放。l 每个表能够只有极少索引,所以能够加紧更新速度。l 能够降低空值和冗余,使数据库更紧凑。l 因为降低了冗余数据,能够使触发器实施速度愈加快。l 降低数据不规则性。l 规范化使数据库维护和修改变得更轻易。数据库经

23、过规范化后,数据查询即使需要更多连接操作,但对于含有索引列,连接速度是比较快。然而,全部采取规范化设计可能达不到最好性能。所以,即使推荐尽可能采取第三范式设计,不过在性能得不到满足情况下,需要非规范化方法提升性能。4.3 经过非规范化设计提升数据库效率4.3.3 非规范化原因在进行数据库设计时,出于对数据库实施效率考虑,能够采取非规范化方法。所谓非规范化方法,就是在数据库设计中合适地降低数据库范式。在下列情况下,通常要考虑进行非规范化处理:l 大量频繁查询过程所包含表全部需要进行连接。l 关键应用程序在实施时要将表连接起来进行查询。l 对数据库计算需要临时表或进行复杂查询。4.3.4 非规范化

24、技术对数据库进行非规范化目标在于提升应用程序效率,但非规范化处理毕竟会增加数据冗余,会带来对应数据完整性问题。所以,在考虑非规范化处理时,要慎重考虑下面多个问题:l 哪些是比较紧急事务,哪些事务对响应时间有要求。l 这些事务实施频率有多高。l 这些紧急事务要操作哪些表和表中哪些列,每次要访问多少行。l 哪种类型事务实施频率最高:查询、插入、删除还是更新。l 通常排序次序是什么。l 哪些工作会并发实施。l 常常访问表有多大。l 哪些需要进行统计计算。l 数据物理位置在哪里。常见非规范化技术有以下多个:l 增加冗余列。l 增加派生列。l 合并表。其它技术还有:l 反复表。l 分割表(水平分割和垂直

25、分割)。4.3.5 进行非规范化处理时注意事项非规范化优点:l 能够降低查询操作所需连接。l 能够降低外部键数量。l 降低了索引数量,节省了存放空间。l 能够预优异行统计计算。l 降低了表数量。非规范化缺点:l 数据更新速度会减慢。l 当应用程序改变时,可能要对规范化程度重新进行考察。l 会增加表大小。l 在一些情况下会使编码复杂化。不管使用哪种规范化方法,全部必需确保数据完整性。为此:l 建立触发器,确保冗余、派生和反复数据和基础数据保持一致。l 经过应用程序中事务逻辑来确保非规范化数据在更新时保持一致。l 批命令,在合适时间间隔运行批命令或存放过程来确保数据完整性。4.4 表大小4.4.3

26、 表是否过小表大小无下限,但过小可能会产生空间浪费。4.4.4 表是否过大实际上,表大小无上限,但为了满足响应时间和重建索引需要,最好限制表大小。4.4.5 怎样减小表尺寸经过垂直分割和水平分割来减小表尺寸。4.5 统计大小4.5.3 列有最好位置吗没有。但在定义表时,把主键列放在最前列,然后是常见列,最少会使文档好些。4.5.4 存在最好统计大小吗没有,但最好避免刚超出半页统计。4.5.5 统计是否过小统计大小没有下限。4.5.6 统计是否过大没有,但最好避免刚超出半页统计。4.5.7 怎样减小统计1. 分割统计。2. 静态分割和动态分割。3. 应用程序分割。4. 数据类型分割。5. 使用小数据类型。4.5.8 总结l 每页统计数为一个整数。l 统计最大尺寸为1962字节。l 每页统计大小没有下限,但上限是256(最新版本为1024)。l 固定长度统计有4字节额外开销。l 可变长度统计有4字节固定额外开销和每列2+1个字节额外开销。5. 其它l 数据库设计工具:象PowerDesigner等。l 数据仓库技术应用:OLTP和OLAP数据分开设计。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁