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