《数据库标准规范.ppt》由会员分享,可在线阅读,更多相关《数据库标准规范.ppt(19页珍藏版)》请在优知文库上搜索。
1、数据库标准规范数据库设计说明1.引言1.1编写目的1.2背景1.3定义1.4参考资料数据库设计说明2.外部标识2.1标识符和状态2.2使用它的程序2.3约定2.4专门指导2.5支持软件数据库设计说明3.结构设计3.1概念结构设计3.2逻辑结构设计3.3物理结构设计3.3物理结构设计物理结构设计数据库设计说明4.运用设计4.1数据字典设计4.2安全保密设计数据库设计规范1.建表规范2.索引规范3.视图规范4.序列规范5.包规范6.触发器规范7.工具规范建表规范表名和字段名由英文单词组成,单词之间用表名和字段名由英文单词组成,单词之间用下划线隔开,不允许用汉语拼音,尽量用单下划线隔开,不允许用汉语
2、拼音,尽量用单词全称,不用缩写。词全称,不用缩写。表名第一个单词使用系统简称。表名第一个单词使用系统简称。表的设计必须遵循第一范式,尽量达到第二表的设计必须遵循第一范式,尽量达到第二范式及第三范式。范式及第三范式。 即不允许字段出现二义性,即不允许字段出现二义性,例如:字段的值由数位数字组成,第一位代例如:字段的值由数位数字组成,第一位代表客户,第二位代表渠道等等。表客户,第二位代表渠道等等。 Create table Create table 语句参数不能包含语句参数不能包含storagestorage选选项,不能包含项,不能包含nologgingnologging选项(影响选项(影响ora
3、cleoracle备备份和恢复)。份和恢复)。建表规范每个表的字段数目不允许超过每个表的字段数目不允许超过5050个,同时,表中一条记录所有个,同时,表中一条记录所有字段的长度不能超过数据库的字段的长度不能超过数据库的db_block_sizedb_block_size大小(缺省大小(缺省8K8K)。)。字段必须定义合适的数据类型,以减少使用过程中的数据类型字段必须定义合适的数据类型,以减少使用过程中的数据类型转换。例如:日期型禁止用转换。例如:日期型禁止用varchar2varchar2,否则影响索引及排序效,否则影响索引及排序效果。果。不允许使用大对象类型字段(不允许使用大对象类型字段(l
4、ong,loblong,lob等),如果需要记录大等),如果需要记录大数据,建议将数据保存到文件中,然后字段里记录文件的路径。数据,建议将数据保存到文件中,然后字段里记录文件的路径。建表规范 表和字段必须有表和字段必须有commentcomment中文注释。中文注释。 对于用户表示类型,状态,标志等意义的对于用户表示类型,状态,标志等意义的 字段,需要在字段,需要在commoncommon中说明每个标志的含义,比中说明每个标志的含义,比如如“案件类型:案件类型:0 0无效无效1 1有效有效”,不允许把中文状,不允许把中文状态直接写到字段值中。态直接写到字段值中。 为了保证表中数据的完整性,在设
5、计表时,为了保证表中数据的完整性,在设计表时,必须考虑给各字段加上适当的约束。约束的类型必须考虑给各字段加上适当的约束。约束的类型包括非空约束,唯一性约束,主键约束,外键约包括非空约束,唯一性约束,主键约束,外键约束,束,checkcheck约束等;对于用户表示类型,状态,约束等;对于用户表示类型,状态,标志等意义的字段,需加上标志等意义的字段,需加上checkcheck约束,并在约束,并在commoncommon中说明每个标志的含义,比如中说明每个标志的含义,比如“案件类型:案件类型:0 0无效无效1 1有效有效”。建表规范所有表必须有数据创建人,创建时间,修改人,修改时间这所有表必须有数据
6、创建人,创建时间,修改人,修改时间这4 4个个字段。字段。除非外键的父表没有或极少的除非外键的父表没有或极少的delete,updatedelete,update操作,否则该外键操作,否则该外键必须建立索引。如果没有对外键建立索引,则在对父表操作时,必须建立索引。如果没有对外键建立索引,则在对父表操作时,会对字表产生锁。会对字表产生锁。同一含义的字段在不同的表中,必须使用相同的名字,类型,同一含义的字段在不同的表中,必须使用相同的名字,类型,长度长度单表数据量三年内超过单表数据量三年内超过500500万或容量超过万或容量超过2G2G,必须分区。,必须分区。索引规范 为了提高查询效率,可以根为了
7、提高查询效率,可以根据不同的数据特点,建立适当的索引,据不同的数据特点,建立适当的索引,如如B-TREEB-TREE索引,位图索引,反向索引,索引,位图索引,反向索引,函数索引,降序索引,分区索引。函数索引,降序索引,分区索引。索引规范 索引的命名格式为:索引的命名格式为:ix_+ix_+表名表名+_+_字段名字段名或字段名组合或字段名组合 生产使用过程中,表的总数据量小于生产使用过程中,表的总数据量小于1000010000或者占用空间或者占用空间22个个blockblock则不需要建索则不需要建索引引 创建索引需要选择查询频率高的创建索引需要选择查询频率高的SQLSQL所所涉及的表和字段建立
8、索引涉及的表和字段建立索引 需要选择数据区分度高的字段建立索引。需要选择数据区分度高的字段建立索引。索引规范 禁止为大数据类型创建索引,如果禁止为大数据类型创建索引,如果varchar2varchar2类型字段宽度超过类型字段宽度超过200200,不要建立,不要建立索引。索引。 组合索引字段的顺序,最常用的字段组合索引字段的顺序,最常用的字段放在前面,同等常用的字段,再按区分度,放在前面,同等常用的字段,再按区分度,区分度高的放在前面。区分度高的放在前面。视图规范 执行视图系统会占用资源,因此建议执行视图系统会占用资源,因此建议尽量少用视图。使用视图会增加数据库对视尽量少用视图。使用视图会增加
9、数据库对视图的解析过程,会增加系统的开销。另外视图的解析过程,会增加系统的开销。另外视图依赖于其他数据库对象,这些依赖对象的图依赖于其他数据库对象,这些依赖对象的改变会影响视图的有效性。改变会影响视图的有效性。 创建视图时禁止使用创建视图时禁止使用“select “select * * from from 表名表名”语句,要求将用到的字段在视图语句语句,要求将用到的字段在视图语句中列明。中列明。视图规范 视图创建语句中禁止使用视图创建语句中禁止使用for for updateupdate 视图中禁止使用视图中禁止使用order by order by 子句,子句,会影响到视图查询的效率。会影响
10、到视图查询的效率。 尽量避免使用嵌套视图,如果必须尽量避免使用嵌套视图,如果必须使用,本地嵌套视图不能超过使用,本地嵌套视图不能超过1 1级。级。序列规范 SequenceSequence的命名格式为:的命名格式为:seq+seq+表名表名+_+_字段字段名名 所有的所有的SequenceSequence必须指定为循环模式必须指定为循环模式(cyclecycle) 要求所有的要求所有的SequenceSequence都是用都是用cachecache选项选项 SequenceSequence最大值不能超过字段宽度最大值不能超过字段宽度 创建创建SequenceSequence时,必须指定时,必须
11、指定minvalue,maxvalue,startwith,increment minvalue,maxvalue,startwith,increment by,cacheby,cache的值的值包规范 系统内通信或者系统间通信,尤其系统内通信或者系统间通信,尤其是大数据量复杂操作,建议使用是大数据量复杂操作,建议使用packagepackage。所有的所有的procedureprocedure或者或者functionfunction需要放在需要放在pkgpkg中。中。 对于对于packagepackage中的中的procedureprocedure或者或者functionfunction,其
12、大小不能超过其大小不能超过30003000行行 系统间的系统间的packagepackage接口必须是一对一的,接口必须是一对一的, 禁止一对多的情况出现禁止一对多的情况出现 提供给外关联系统调用的提供给外关联系统调用的pkgpkg不能有事务语不能有事务语句(句(commitcommit或者或者rollbackrollback)触发器规范 由于触发器在后台运行,不易跟踪和监控,建由于触发器在后台运行,不易跟踪和监控,建议尽量少使用议尽量少使用triggertrigger。 命名规则:命名规则: Before TriggerBefore Trigger: tr_i/u/d_+ tr_i/u/d_
13、+表名表名 AfterTriggerAfterTrigger: tr_aft_i/u/d_+ tr_aft_i/u/d_+表名表名 对于对于TriggerTrigger中每个功能模块需要加上注释中每个功能模块需要加上注释 对于对于TriggerTrigger中每个功能模块需要加上开关控制模中每个功能模块需要加上开关控制模块是否启用块是否启用 所有的所有的TriggerTrigger必须要有错误控制,错误控制必须必须要有错误控制,错误控制必须要明确是哪个功能模块抛出的异常。要明确是哪个功能模块抛出的异常。工具规范 使用使用ERSTUDIO7ERSTUDIO7作为标准数据库设计工具作为标准数据库设计工具 所有数据库的修改必须在逻辑图上修改,然后执所有数据库的修改必须在逻辑图上修改,然后执行导出的行导出的SQLSQL 所有修改的所有修改的SQLSQL需要按照日期进行备份需要按照日期进行备份