数据库开发规范1.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE 5 项目一部数据库开发规范 版本号 日期 修改者 说 明 1.0 2012-03-06 注:对该文件内容增加、删除或修改均需填写此变更记录,详细记载变更信息,以保证其可追溯性。 命名规范 对象 新建的表,存储过程,包等要遵循以下规则 对象名称 前缀 备注 表 见下表,根据功能分 视图 v_ 主键 pk_ 索引 idx_ 序列 seq_ 存储过程 pr_ 包 pk_ 函数 f_ 同义词 s_ 数据库连接(dblink) dl_ 表 表名不得超过30个字母,全部采用大写字母,表的命名可以如下:模块缩写名_表的名称,如RES_NODE代表资源模块的节点; 值班: DUTY_CALENDAR。 字段名称 字段名不得超过30个字母,必须以英文单词构成,每个单词之间以下划线隔开,全部采用大写字母。对复杂的大型应用系统而言,必须建立表名和字段名的数据字典,并附于开发规范附录中,在命名时必须严格遵守数据字典。 数据库对象管理 一般规定 数据库所有对象,包括表、视图、主键、索引、序列、存储过程、包等必须在数据库建模工具中进行管理并保持与数据库完全同步。 大小写 在数据库模型、数据库脚本中,所有对象,包括表、视图、主键、索引、序列、存储过程、包等名称必须大写。 语句书写规范 尽量不使用某种数据库的特有功能 为了保持可移植性,尽量不使用某种数据库的特有功能,如SQL Server专用的Unique ID, Oracle专用的Sequence的功能; 查询sql语句尽量使用绑定变量 尽最大可能不使用通配符 在SQL语句中,LIKE关键字支持通配符匹配,但这种匹配特别耗费时间。如:SELECT A FROM ABC WHERE A LIKE M% 。在A字段上建立了索引。把语句改为SELECT A FROM ABC WHERE A M AND A N,在执行查询时会利用索引以提高响应速度。 使用*通配符必须事先征得项目开发负责人同意。 Distinct 使用distinct会增加查询和I/O的操作次数。应当避免使用distinct关键字。 嵌套查询 SELECT A FROM CMS_USER WHERE USER_NAME IN ( SELECT USER_NAME FROM CMS_DEPARTMENT WHERE DEPARTMENT=’电子办’) 如果我们用连接来代替,且表关联放在条件语句的最后部。即: SELECT A FROM CMS_USER,CMS_DEPARTMENT WHERE CMS_DEPARTMENT .DEPARTMENT=’电子办’ AND CMS_DEPARTMENT .USER_NAME = CMS_USER.USER_NAME 将提高一定的效率。 查询嵌套层次越多,效率越低。应当尽量避免子查询。如果子查询不可避免,那么要在子查询中过滤掉尽可能多的行。 排序 利用索引自动以适当的次序输出时,可以避免对表中数据排序,当以下的情况发生时,排序就不能省略: 索引中不包括一个或几个待排序的列; group by或order by子句中列的次序与索引的次序不一样; 排序的列来自不同的表。 正确地增建索引、合理地合并数据库表,可以避免不必要的排序。如果排序不可避免,那么应当试图简化它,如缩小排序列的范围等。 UNION 如果不过滤多表中的重复数据,请使用UNION ALL;如果过滤多表中的重复数据,请使用UNION。 长语句 避免使用很长、很复杂的查询语句,如果有特殊需求必须书写较长的SQL语句,应该把语句分解成若干部分,每一部分形成一个存储过程或函数。 大表尽可能使用分区 大表分区:超过1G的表尽可能使用分区,分区的原则和尽可能和维护该表的机制结合起来。比如:保留10天数据,每天删除10天前的一天数据,在删除数据的时候,可以采用采用alter table table_name truncate partition partition_name,而后alter table table_name drop partition partition_name;这里不直接使用drop的原因是减小数据库的开销。Truncate 是在秒的级别中完成。 其他注意事项 在条件语句中,如 Where a.s=b.c 中将记录少的表放在等号的前部。表关联条件放在语句的最后部。 不使用容易与系统关键字重复的单词来命名,如ID,DATE等,但可以使用如NODEID,BUYDATE等可以来命名; SQL语句用大写字母(字段中的内容除外); 编写ddl和dml时,每个语句后面必须加上分号; 对于定期增加性的性能数据表,必须建立有效的索引; 查询语句的Where语句必须落在索引上。 高效的

文档评论(0)

187****8078 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档