文档介绍:第18页(共18页)
数据库开发设计规范
文件版本:
文件编号:
编 写: 安金锁
审 核:
审 批:
发布时间 的所有列(lob 类型除外)的长度和不能超过 8060 字节。
列命名规则
中文名称:列描述
英文名称:对应中文名称的英文单词缩写(每个单词的首字母大写)
列属性说明
数值型的列都要有default,因为数值列可能会参加运算的。
存储中文的列一律使用nvarchar类型。
具有序号含义的列尽量采用SQL Server提供的Identity列,可以有效避免重号及跳号。
明显不能为空的列,必须禁止为空,比如年龄。
可以为空的列,应根据实际情况,给予适当默认值。
如果某列的值是通过数学运算从本行中其他列得到,可以采用计算列功能实现,以减少前端代码编写工作量,但计算逻辑不应过于复杂。
键
主键索引命名规则
英文名称:PK_表英文名称
第8页(共19页)
主键设计规则
不要以变化趋势不规则的列作为主键,比如性别。
聚集索引
聚集索引不一定是主键,尤其不能建立在无意义的自增列上。
由于每个表只能建立一个聚集索引,请慎重使用。
外键索引命名规则
英文名称:FK_外部键列英文名称
视图
命名规则
中文名称:v_视图描述
英文名称:v_对应中文名称的英文单词缩写(每个单词的首字母大写)
注释
用中文说明该视图的用途、该视图的基表以及是否可以通过该视图修改其基表。
列命名规则
中文名称:基表的中文列名称
英文名称:直接引用基表的列名称
第10页(共19页)
设计规则
不要使用SELECT * 语法建立视图,以避免基表结构发生变化时,使用该视图不能得到期望的数据。生成视图的SQL Query必须要有WHERE子句,以限制视图中的数据量。
只能在当前数据库中创建视图。
强烈不推荐在视图之上再建立视图。
定义视图的查询不可以包含ORDER BY、COMPUTE或 COMPUTE BY子句或INTO关键字。
不能创建临时视图,也不能在临时表上创建视图。
可以考虑利用视图索引提高性能。
索引
非键索引命名规则
英文名称: [IX | UIX]_列英文名称 或 [IX | UIX]_MultiColumn[序号]
IX :索引列不是键,或者是复合索引。
UIX:唯一索引。
索引设计原则
在考虑是否为一个列创建索引时,应考虑被索引的列是否以及如何用于查询中。
返回大结果集(与源表数据相比)的查询不会使用非聚簇索引。
一个表如果建有大量索引会影响 INSERT、UPDATE 和 DELETE 语句的性能,因为在表中的数据更改时,所有索引都须进行适当的调整。另一方面,对于不需要修改数据的查询(SELECT 语句),大量索引有助于提高性能,因为 SQL Server 有更多的索引可供选择,以便确定以最快速度访问数据的最佳方法。
第10页(共19页)
在查询经常用到的所有列上创建非聚集索引。比如:
日期列。
在FOREIGN KEY列上建立索引。
在Order By的列上建立索引。
在范围查询的列上建立索引。
在精确匹配查询的列上建立索引。
覆盖查询可以提高性能。覆盖查询是指查询中所有指定的列都包含在同一个索引中。创建覆盖一个查询的索引可以提高性能,因为该查询的所有数据都包含在索引自身当中;检索数据时只需引用表的索引页,不必引用数据页,因而减少了 I/O 总量。尽管给索引添加列以覆盖查询可以提高性能,但在索引中额外维护更多的列会增加更新和存储成本。
对聚集索引使用整型键。另外,在唯一列、非空列创建聚集索引可以获得性能收益。
对小型表进行索引可能不会产生优化效果,因为SQL Server在遍历索引以搜索数据时,花费的时间可能会比简单的表扫描还长。
在基数集很小的列上一般不创建索引,比如性别。
填充因子会影响数据表的更新性能,因此对于更新频繁的数据表请选择一个恰当的填充因子大小,一般情况下选择 80 即可满足大多数需求。
参照
参照命名规则
英文名称:FK_外键表英文名称_ref_主键表英文名称
第11页(共19页)
参照的使用限制
只建立必须的参照,因为过多的参照会增加数据维护的复杂性、使数据更新的时间更长。
Default
命名规则
英文名称:default_default的值
触发器
触发器命名规则
英文名称:TR [B | A][ I | U | D ]_表英文名称
B :Instead O