SQL编程对于操作数据库人员来说无疑是一种提高效率的方法,但是有些刚入门数据库管理人员对于编程的规范视而不见,他们总是认为达到自己想要的结果就好,可是他们却忽略了性能以及优化的问题,今天小编和大家分享一些SQL命名规范希望对大家有所帮助。
一.常见命名规则有四种样式:完全大写、完全小写、Pascal 大小写和 Camel 大小写。
1. Camel 大小写
标识符的首字母小写,每个后面连接的单词的首字母大写,其余字母小写的书写约定。对于缩写的双字母单词,要求它们出现在标识符首部时全部小写,否则全部大写。
例如:applicationException
id
2. Pascal 大小写
组成标识符的每个单词的首字母大写,其余字母小写的书写约定。对于缩写的双字母单词,要求全部大写。
例如:ApplicationException
ID
3. 匈牙利命名法
匈牙利命名法由匈牙利程序员发明,他在微软工作了多年,此命名法就是通过微软的各种产品和文档传出来。多数有经验的程序员,不管他们用的是哪门语言,都或多或少在使用它。
基本原则:变量名 = 属性 + 类型 + 对象描述
即一个变量名是由三部分信息组成,这样,程序员很容易理解变量的类型、用途,而且便于记忆。
说到命名规范,让我不禁想到代码的注释,之前从事开发工作的时候,由于注释不到位再加上编码不规范的问题,使团队的其他成员很难看懂,严重的造成项目延期。所以下面小编也要和大家说下注释规范,所谓没规矩不成方圆嘛!
1 代码头部注释
在SQL代码块(SQL文件或存储过程)的头部进行注释,标注创建人(Author)、创始日期(Create date)、修改信息(Modify [n])。
格式:
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- Modify [n]: < Modifier,Date, Description >
-- =============================================
示例:
-- ================================================
-- Author: Zhanghaifeng
-- Create date: 2006-12-25
-- Description: H2000报关单回执处理
-- Modify [1]: 郑佐, 2006-12-31, 简化逻辑判断流程
-- Modify [2]: 郑佐, 2007-01-20, 更新条件判断
-- ================================================
注:日期格式使用 yyyy-MM-dd。Modify [n] n代表修改序号,从1开始,每次修改加1。
建议在每个事务的开头进行注释,说明该事务的功能。
-- < Modifier,Date, Description >
BEGIN TRANSACTION;
数据库命名规范
0. 字符集合
a-z A-Z 0-9 和 _ 共 63个
1. 所有字条以小写字母开头,所有名词采用单数,所以前缀都要小写
如:userIduser_id
2. 数据库对象命名规范
数据库对象={表,视图(查询),索引,关联,存储过程(参数查询),函数}
规则:对象名字由前缀和实际名字 组成,他们之间加下划线,不要在对象名的字符之间留空格,长度不超过30字符。
[对象名字]=[前缀]_[实际名字]
前缀:使用小写字母
表 tb
视图 vi
索引 idx
关联 rl
存储过程 sp
函数 fn
实际名字:实际名字尽量描述实体的内容,由单词或单词组合,每个单词(第一个除外)的首字母大写,其他字母小写,不以数字和_开头,单词与单词间不用下划线。
[实际名字]=[小写字母开头的单词][大写字母开头的单词]...[大写字母开头的单词
例如:userNamepassWord userRegisterTime
[单词]=[a-z|A-Z][a-z|A-Z|0-9|_]...[a-z|A-Z|0-9|_]
例子:tb_webUservi_userOrder
3. 数据库表命名规范
表名由 前缀(tb) 接 _ 接 实际名字组成
[表名]=tb_[实际名字]
4. 字段命名规范
[字段名]=[表名简称]_[实际名字]
现在约定,[表名简称]=[表名]的[实际名字]部分 的各个单词首字母安顺序组合
如:tb_userInfomation应用此规则,其表名简称为uI
5. 视图命名规范
[视图]=vi_[实际名字]
6. 存储过程命名规范
[存储过程名]=sp_[实际名字]_[操作名字]
[操作名字]=[insert|delete|update|calculate|confirm]
例如:sp_userState_update
7. 索引命名规范
[索引]=idx[0-9]_[表名简写]_[实际名字]
例子:idx0_uInfo_age
注:[表名简写]不同于上面的[表名简称],它采用下面的字串简化规则。参见最后9。
8. 关联命名规范
[关联]=rl_[表名简写]_[表名简写]
例子:rl_uInfo_msg
8.数据库设计文档规范
表名: tb_userInformation
作者: XXX
日期: 2004-12-17
版本: 1.0
描述: 保存用户资料
具体内容:(以表格形式)
9. 字串简化规则(方法):
- 按要求规定字串长度。判断字串是否满足要求,如果满足则简化完成,否则进入下一步
- 用单词简写替代字串的每个单词从而获得新字串,标准化做方法就是建立所谓“单词简写库”(下面有介绍)。判断字串是否满足要求,如果满足则简化完成,否则取消该步并进入下一步
- 采用字串的各个单词首字母构成新字串。判断字串是否满足要求,如果满足则简化完成,否则取消该步并进入下一步
- 进行“人工干预”
*** 单词简写库 ***
标准化地规定一些单词的简写,例如:
进行如下规定:
user → u
password → pass
address → addr
register → reg
login → li
logout → lo
time → t
date → d
information → info
project → prj
manager → man
…
这样userRegisterTime 就可以简写为 uRegT userInformation 可以写成 uInfo
以上规则完全可以用程序实现:
这样的程序的功能和用法大概由下面的例子可以看出
sampleinput:
userRegisterInformation
sampleoutput:
uRegInfo
我们可以把该程序架设到一台服务器上,方便我们工作
上面全部的规则中,字段的 [实际名字] 部分是不会经过简化的,但大多时候这样会造成字段过长。为此,我们有如下
** 附加规则:当 [实际名字] 长度超过x(eg x=8)个字符时,要对其应用 字串简化规则
如果采用了附加规则,在取表名的简称时,可能会出现如下情况:
表名:tb_projectManager根据附加规则,不符合要求
应用字串简化规则后:tb_prjMan
根据 [字段名]=[表名简称]_[实际名字],那么 [表名简称] 如何取得?
由于这个时候表名是tb_prjMan 它的简称即是 prjMan 的简称,这是就需要先将其还原为 projectManager 再取 project 和 Manager 的首字母 pM, 这才是表名简称。由于pM 要作为前缀,所以还要将其改成小写 pm