SQL Server命名规范
1.命名协定
1。1表和视图命名规则
1,T_HistoryMsgInfo T_开头标识实体
HistoryMsgInfo为数据表的业务,在我们的库中有如下几种 首字母大写,后面小写
前缀和表含义之间以‘_'连接
2,M_HistoryMsgInfo M_开头标识内存表
HistoryMsgInfo为数据表的业务 首字母大写,后面小写
前缀和表含义之间以‘_’连接
3,V_HistoryMsgInfo
V_开头标识视图
HistoryMsgInfo为数据表的业务,在我们的库中有如下几种 首字母大写,后面小写
前缀和表含义之间以‘_'连接
1。2 列名
1,列名命名规则和表名一样不过不用加下划线
如:MobilePhone, MsgContent 2,简写要都大写,尽量简单易懂,
如:ID 即编号
1.3 存储过程命名
存储过程命名包括不要使用特殊的字符,大写首词,不要使用组名(比如,myProc1),不要使用系统保留的“sp_”前缀(比如可以使用up_),使用文字数据式字符,为了使存储过程名字更有意义, 下面是可选的命名规则,使用“业务”+“动作”+“对象”的方式:
PR_Add_HistoryMsgInfo -—插入类型
1
(完整)SQL.Server命名规范_V1
PR_Get_HistoryMsgInfo PR_Del_HistoryMsgInfo PR_Up_HistoryMsgInfo
—-查询类型 -—删除类型 —-更新类型
1。4 触发器命名
触发器命名应该遵从以下的协定: TR+ { Ins | Upd | Del}+表名
Ins标识此触发器为insert触发器,UPD标识此触发器为update触发器,同理DEL被用来标识delete触发器: 触发器示例:
TR_Add_Customer TR_Del_ProductCode TR_Up_BusinessUnit
1.5 索引命名
索引的命名应该在表空间内唯一,当查看执行计划时可以有效的对索引进行识别。. [IX][类型(U标识Unique,C标识Clustered)][列名(s)]
当对单列进行索引时,你可能需要使用列的全名. 当对多列进行索引时,要使用你所能想到的最优的缩写. 当对一个表的所有列进行索引时,使用
ALL单词.
在多列名中使用下划线以增加可读性。 不要为索引加上序列号
例如:
IXUC_SalesId (clustered unique) IXU_SalesDate (unique)
IX_SalesId_MonId_QtrId_WkId (composite index) IX_MonId_YrId (composite index)
2
(完整)SQL.Server命名规范_V1
IXC_SalesId (clustered not unique)
1。6 主键和外键命名
主键:对主键进行命名应该遵从以下标准: PK_表名 例如,主键名 PK_Customer
外键:对外键进行命名时应该遵从以下标准: FK_ParentTableName_ChildTableName 外键名字示例:
FK_Country_Customer FK_Customer_Sales
1.7 Check约束命名
Check约束的命名遵从以下的约定: CK{数字}_表名
数字被用来区别同一表中的其它Check约束。 Check约束命名示例: CK1_Customer
1。8 Job的命名
Job命名使用以下方式,其中在” Job名”中要标识出此JOB的功能: Job_[应用系统名_][数据库名_]Job名/ [storce procedure名] For Example: Job_IM_IMDB_backup
3
(完整)SQL.Server命名规范_V1
1.9 用户自定义函数命名
满足
NESE命名的基本原则
fn来标识
用户定义的函数使用
名字中应包括“对象”+“动作”的方式 For example:
Fn_IM_CustomerGet(IM 标识itemmaintain系统使用)
2.SQL Server代码规范 2。1 对象创建脚本
使用数据库(USE)
要在SQL Server源文件使用USE 数据库名语句。 删除对象:
IF Exists语句应该在Drop 对象语句之前执行: IF object_id(‘tablename’) IS NOT NULL DROP TABLE TableName
2.2 数据库更改脚本
当在产品服务器上对数据库进行更改时,要非常小心和注意。这会避免产品服务库发生丢失数据或者停止服务等灾难的发生。
这个脚本应该是可以对数据库的对象进行判断的,比如,如果一个对象已经存在,那应该成功结束,而不是把此对象删除,因为此对象可能已经包括数据。比如表,如果要删除一个已经存在的表,则也删除了表中的数据。 当表或者视图重新被创建时,也要重新创建授权(owner权限除外)。
任何时候,当表被创建或者被重新创建时,确认所有的依靠关系,比如PK,FK,索引,触发器,默认值和视图都应该对重新创建.
当底层表结构更改时,视图都应该被重新创建.这个应该特别被注意,特别是视图是使用如”SELECT * FROM Table”时。
4
(完整)SQL.Server命名规范_V1
2.3 参照完整性
使用ALTER TABLE ADD CONSTRAINT 命令来约束强制参照完整性. 除非要调整数据库间的完整性,否则不要使用触发器来强制参照完整性.
2。3。1 主键
每个表都应该有主健存在。
当需要使用代理关键字来标识行的时候,使用identity列. 此时应该在此列上使用primary约束 我们一般推荐在主键上创建clustered 索引来最小化存储空间和达到性能要求。 PK_表名
2。3。2 外键
在外键的定义中,FK列应该和被参照的PK(Unique)列有相同的数据类型.注意, 在一列上创建FK并不会自动在此列上创建索引。所以我们推荐在FK上手动创建索引以提升性能.
2.4 触发器
触发器可以被用来强制商业规则,在数据库间强制数据完整性. TR_Mas_Resource_Delete
TR_Mas_Resource_Insert TR_Mas_Resource_Update
2。5 局部变量命名标准
这是局部变量的命名标准: @Rows int 标识此语句影响的行数: SELECT @Rows = @@EowCount @Err int 本地变量存储全局变量@@Error的值: SELECT @Err = @@Error 5
(完整)SQL.Server命名规范_V1
@ErrMsg varchar(200) 这个用来存储错误信息。 在 RAISERROR有他的编码示例. @Msg
varchar(200) 被打印出来的message字符串. 6
因篇幅问题不能全部显示,请点此查看更多更全内容