/**
*=================================================
*Name: 数据库命名及设计规范
*RCSfile: 命名及设计规范-数据库.txt
*Revision: 0.01Beta
*Author:
*Released: 2005-01-19 11:25:10
*Description: 数据库命名及设计规范
*Contact:
*==================================================
*/
1.数据库涉及字符规范
我们约定:采用26个英文字母(区分大小写)和0-9这十个自然数,加上下划线_组成,共63个字符。不能出现其他字符(注释除外)。
2.数据库对象命名规范
规则:对象名字由前缀和实际名字组成,他们之间加下划线,不要在对象名的字符之间留空格,长度不超过30字符。
[对象名字]=[前缀]_[实际名字]
我们约定,数据库对象包括表、视图(查询)、存储过程(参数查询)、函数、约束。对象名字由前缀和实际名字组成,长度不超过30。
前缀:使用小写字母
表 | tb |
视图 | vi |
存储过程 | sp |
函数 | fn |
索引 | idx |
关联 | rl |
实际名字:实际名字尽量描述实体的内容,由单词或单词组合,每个单词的首字母大写,其他字母小写,不以数字和_开头。如
表 User_Info
视图 User_List
存储过程 User_Delete
因此,合法的对象名字类似如下。
表 tb_User_Info tb_Message_Detail
视图 vi_Message_List
存储过程 sp_Message_Add
3.数据库表命名规范
[表名]=tb_[实际名字]
我们约定,表名由前缀和实际名字组成。
前缀:使用小写字母tb,代表表。实际名字中,一个系统尽量采取同一单词,多个后面加_来连接区分。 因此,合法的表名类似如下。
tb_Member
tb_Member_Info
tb_Forum_Board
tb_Blog_Comment1
4.字段命名规范
[字段名]=[表名简称]_[实际名字]
现在约定,[表名简称]=[表名]的[实际名字]部分 的各个单词首字母安顺序组合
我们约定,字段由表的简称,实际名字组组成。如果此字段关联另外的字段,那么加下划线_连接关联表字段的字段名。
因此,合法的字段名类似如下。
UserID_MeID
UserName
UserRegDate
5.视图命名规范
[视图]=vi_[实际名字]
我们约定,字段由前缀和实际名字组成,中间用下划线连接。
前缀:使用小写字母vi,表示视图。因此,合法的视图名类似如下。
vi_User
vi_UserInfo
6.存储过程命名规范
[存储过程名]=sp_[实际名字]_[操作名字]
[操作名字]=[insert|delete|update|calculate|confirm]
我们约定,字段由前缀和实际名字加操作名字组成,中间用下划线连接。
前缀:使用小写字母sp,表示存储过程。
操作名字:Insert|Delelte|Update|Caculate|Confirm
例如:
sp_User_Insert
7. 索引命名规范
[索引]=idx[0-9]_[表名简写]_[实际名字]
例子:idx0_uInfo_age
注:[表名简写]不同于上面的[表名简称],它采用下面的字串简化规则。参见最后9。
8. 关联命名规范
[关联]=rl_[表名简写]_[表名简写]
例子:rl_uInfo_msg
7.数据库设计文档规范
所有数据库设计要写成文档,文档以模块化形式表达。大致格式如下:
'-------------------------------------------
' 表名: tbUser_Info
' 作者:
' 日期: 2004-12-17
' 版本: 1.0
' 描述: 保存用户资料
' 具体内容:
' UserId int,自动增量 用户代码
' UserName char(12) 用户名字
' ......
'--------------------------------------------
8.sql语句规范
我们约定,所有sql关键词全部大写,比如SELECT,UPDATE,FROM,ORDER,BY等。
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