欢迎来到天天文库
浏览记录
ID:20510976
大小:75.00 KB
页数:14页
时间:2018-10-12
《数据库设计编码规范》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、SQLServe数据库设计规范一、数据库命名规范:v对象前缀命名:前缀命名一般用小写v表的前缀:业务模块组名前缀v数据列的前缀:一般采用列的数据类型做前缀v存储过程前缀:udp,系统存储过程(sp)v自定义函数前缀:udf(Userdefinefunction)v视图前缀:udv(UserDefineView)表示用户自定义视图v自定义规则前缀:udr(UserDefinerule)用户自定义规则v自定义约束前缀:uck(UserChecker)用户自定义约束v索引前缀:idx(Index)表示索引
2、v主键前缀:pk(primarykeys)表示主键数据列的前缀示例:编号1234567数据类型charvarcharintsmallintdatetimemoneynumeric前缀cvcisidtmn编号8910111213数据类型decimalfloatbitbinaryimagetext前缀dfbbimgtx二、数据库设计规范:1、每个表中都可以考虑添加的的几个有用的字段RecoredID,记录唯一编号,不建议采用业务数据作为记录的唯一编号CreationDate,在SQLServer下默认为
3、GETDATE()RecordCreator,在SQLServer下默认为NOTNULLDEFAULTUSERRecordVersion,记录的版本标记;有助于准确说明记录中出现null数据或者丢失数据的原因2、数据类型:字符类型一般不建议采用char而采用varchar数据类型,除非当这列数据的长度特别固定时可以考虑用char。数值类型如果表示金额货币建议用money型数据,如果表示科学记数建议用numeric数据类型14记录标识一般采用int类型标识唯一一行记录。自增or非自增3、索引:所有的表
4、都应该有一个主键索引,这对提高数据库的性能很有帮助根据使用频率决定哪些字段需要建立索引,选择经常作为连接条件、筛选条件、聚合查询、排序的字段作为索引的候选字段。把经常一起出现的字段组合在一起,组成组合索引,组合索引的字段顺序与主键一样,也需要把最常用的字段放在前面,把重复率低的字段放在前面。一个表不要加太多索引,因为索引影响插入和更新的速度。4、保证数据的一致性和完整性:主外键关联SQLSERVER的主键同时是一个唯一索引外键是最高效的一致性维护方法,数据库的一致性要求,依次可以用外键CHECK约束
5、、规则约束、触发器、客户端程序,一般认为,离数据越近的方法效率越高。谨慎使用级联删除和级联更新5、建立约束实现数据有效性检测A、可以为某一列特别重要的值建立好约束。例如:需要凭数据库里面的SaleKind列数据判定销售类别,0值为门店销售,1为网上销售。系统只有这两种销售渠道,就应该为它建立约束,它的值只能在0和1之间。即SaleKind>0andSaleKind<3B、设置默认值适当的设置默认值。4、视图数据的安全性还可以用视图来控制。视图可以把用户关心的那部分数据显示给用户,而把无关的数据隐藏起
6、来。5、安全性:操作数据库不建议用SA用户,因为SA用户权限过大。具体的应用应该创建相应的数据库操作用户,并只赋给它指定数据库操作的权限!6、编码所有程序员要有性能意识,也就是在实现功能同时有考虑性能的思想,数据库是能进行集合运算的工具,我们应该尽量的利用这个工具,所谓集合运算实际是批量运算,就是尽量减少在客户端进行大数据量的循环操作,而用SQL语句或者存储过程代替。A、只返回需要的数据。横向来看,不要写SELECT*的语句,而是选择你需要的字段。纵向来看,合理写WHERE子句,不要写没有WHERE
7、的SQL语句。14注意SELECTINTO后的WHERE子句,因为SELECTINTO把数据插入到临时表,这个过程会锁定一些系统表,如果这个WHERE子句返回的数据过多或者速度太慢,会造成系统表长期锁定,诸塞其他进程。对于聚合查询,可以用HAVING子句进一步限定返回的行。B、注意临时表和表变量的用法在复杂系统中,临时表和表变量很难避免,关于临时表和表变量的用法,需要注意:如果语句很复杂,连接太多,可以考虑用临时表和表变量分步完成;如果需要多次用到一个大表的同一部分数据,考虑用临时表和表变量暂存这部
8、分数据;如果需要综合多个表的数据,形成一个结果,可以考虑用临时表和表变量分步汇总这多个表的数据;其他情况下,应该控制临时表和表变量的使用;关于临时表和表变量的选择,很多说法是表变量在内存,速度快,应该首选表变量,但是在实际使用中发现,这个选择主要考虑需要放在临时表的数据量,在数据量较多的情况下,临时表的速度反而更快。关于临时表产生使用SELECTINTO和CREATETABLE+INSERTINTO的选择,我们做过测试,一般情况下,SELECTINTO会比CREATE
此文档下载收益归作者所有