您现在的位置: 首页  > SQLServer > 基础知识
通行证登录
 

SQLSERVER 数据库使用规范

作者:[51ak ]
 这是我自己写的SQLSERVER 数据库使用规范,供参考
1.   表的字义
a)   尽可能少的使用允许NULL 字段
b)   聚集索引字段应该尽可能的少(不超过3个字段),尽可能的小(不多与200字节)
c)   鼓励使用GUID字段 代替IDENTITY(1,1)自增字段。推荐使用扩展的GUID( YYYYmmDDHHMMssms+3位机器编号+6位随机数字),尤其是对快速增长的表
d)   在使用INDENTITY字段,需考虑IDENTITY字段在高可用行框架下的“非连续性”,“非顺序性”
e)   表记录中的单行最大占用空间,原则上要求在8K以下,避免单行数据的分页存储
f)   使用varhcar(max),navarchar(max) varbinary(max)代替text,ntext,image
g)   建议多使用time,date 等SQL2008新类型来节省存储空间和查询时的转换运算
h)   XML类型字段:要充分考虑到该类型字段索引的宠大开销
i)   不允许使用 ID 这个字段名,可考虑改成 F_ID,PID,CpId,UserID 等形式
j)   对数据有效性的验证优先采用 CHECK约束
k)   一定要记住:主键和聚集索引是可以分开定义的
l)   特殊定义字段需要填写说明. EXEC sys.sp_addextendedproperty
m)   在不影响业务的前题下,多用空间换时间
2.   索引的字义
a)   不建无用索引,测试时候的索引要及时删除(无用索引)
b)   杜绝建同一实体的不同名称的索引(重复索引)
c)   不建议过多的采有联合索引
d)   鼓励使用筛选索引
e)   对读多写少的表,读性能制约明显的表鼓励多建索引
f)   要考虑到维护索引的开销,索引碎片率的产生(低命中率的索引)
g)   索引的命名
         i.      非聚集索引:IX_表名_主字段名
       ii.      聚集索引:CL_表名_主字段名
      iii.      主键聚集索引:PK_表名[_主字段名]
3.   存储过程的定义
a)   尽可能少的在存储过程中拼接SQL语句再执行,宁可多写IF判断或拆分存储过程
b)   对一个存储过程中要反复使用的一部分数据,查出来到变量中,避免多次查询
c)   存储过程中IF嵌套不能超过5层,每一层的BEGIN END 都需要缩进,多个并行IF,建议换行分隔
d)   存储过程的命名
         i.      普通存储过程以usp开头 usp_影响的主表_主要的操作(get,lst,add,del,edi) 例:usp_UserInfo_edi
       ii.      影响多表(3个以上)的存储过程,且分不出主要影响对象的表 uspa_影响的主表_主要的操作
      iii.      使用了链接服务器的存储过程,以 uspl_影响的主表_主要的操作
       iv.      CLR存储过程 csp_影响的主表_主要的操作
e)   存储过程的注释
         i.      所有的存储过程的开头部分必须有注释,对格式不做显示要求,但应包含创建人,创建和修改时间,用途,参数说明,最好附带使用示例
       ii.      存储过程中对关键分支需要但不强求有注释
      iii.      存储过程的变量名应尽可能的符合其代表的含义。对于有特殊含义的过程内变量也需要有注释
       iv.      在大多数时候 建议存储过程中使用 SET NOCOUNT ON
首页上一页123下一页尾页  分页:1/3页