数据库设计编码规范.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL Serve数据库设计规范 一、数据库命名规范: 对象前缀命名:前缀命名一般用小写 表的前缀:业务模块组名前缀 数据列的前缀:一般采用列的数据类型做前缀 存储过程前缀:udp ,系统存储过程(sp) 自定义函数前缀:udf(User define function) 视图前缀:udv(User Define View)表示用户自定义视图 自定义规则前缀:udr(User Define rule)用户自定义规则 自定义约束前缀:uck(User Checker)用户自定义约束 索引前缀:idx(Index)表示索引 主键前缀:pk(primary keys)表示主键 数据列的前缀示例: 编号 1 2 3 4 5 6 7 数据类型 char varchar int smallint datetime money numeric 前缀 c vc i si dt m n 编号 8 9 10 11 12 13 数据类型 decimal float bit binary image text 前缀 d f b b img tx 二、数据库设计规范: 1、每个表中都可以考虑添加的的几个有用的字段 RecoredID,记录唯一编号,不建议采用业务数据作为记录的唯一编号 CreationDate,在SQL Server 下默认为GETDATE() RecordCreator,在SQL Server下默认为NOT NULL DEFAULT USER RecordVersion,记录的版本标记;有助于准确说明记录中出现null 数据或者丢失数据的原因 2、数据类型: 字符类型 一般不建议采用char而采用varchar数据类型,除非当这列数据的长度特别固定 时可以考虑用char。 数值类型 如果表示金额货币建议用money型数据, 如果表示科学记数建议用numeric数据类型 记录标识 一般采用int类型标识唯一一行记录。 自增 or 非自增 3、索引: 所有的表都应该有一个主键索引,这对提高数据库的性能很有帮助 根据使用频率决定哪些字段需要建立索引,选择经常作为连接条件、筛选条件、聚合查询、排序的字段作为索引的候选字段。 把经常一起出现的字段组合在一起,组成组合索引,组合索引的字段顺序与主键一样,也需要把最常用的字段放在前面,把重复率低的字段放在前面。 一个表不要加太多索引,因为索引影响插入和更新的速度。 4、保证数据的一致性和完整性: 主外键关联 SQL SERVER的主键同时是一个唯一索引 外键是最高效的一致性维护方法,数据库的一致性要求,依次可以用外键CHECK 约束、规则约束、触发器、客户端程序,一般认为,离数据越近的方法效率越高。 谨慎使用级联删除和级联更新 5、建立约束实现数据有效性检测 A、可以为某一列特别重要的值建立好约束。 例如:需要凭数据库里面的SaleKind列数据判定销售类别, 0值为门店销售,1为网上销售。系统只有这两种销售渠道,就应该为它建立约束,它的值只能在0和1之间。即SaleKind0 and SaleKind3 B、设置默认值 适当的设置默认值。 4、视图 数据的安全性还可以用视图来控制。 视图可以把用户关心的那部分数据显示给用户,而把无关的数据隐藏起来。 5、安全性: 操作数据库不建议用SA用户,因为SA用户权限过大。具体的应用应该创建相应的数据库操作用户,并只赋给它指定数据库操作的权限! 6、编码 所有程序员要有性能意识,也就是在实现功能同时有考虑性能的思想,数据库是能进行集合运算的工具,我们应该尽量的利用这个工具,所谓集合运算实际是批量运算,就是尽量减少在客户端进行大数据量的循环操作,而用SQL语句或者存储过程代替。 A、只返回需要的数据。 横向来看,不要写SELECT *的语句,而是选择你需要的字段。 纵向来看,合理写WHERE子句,不要写没有WHERE的SQL语句。 注意SELECT INTO后的WHERE子句,因为SELECT INTO把数据插入到临时表,这个过程会锁定一些系统表,如果这个WHERE子句返回的数据过多或者速度太慢,会造成系统表长期锁定,诸塞其他进程。 对于聚合查询,可以用HAVING子句进一步限定返回的行。 B、 注意临时表和表变量的用法 在复杂系统中,临时表和表变量很难避免,关于临时表和表变量的用法,需要注意: 如果语句很复杂,连接太多,可以考虑用临时表和表变量分步完成; 如果需要多次用到一个大表的同一部分数

文档评论(0)

lxm + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档