- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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、 注意临时表和表变量的用法
在复杂系统中,临时表和表变量很难避免,关于临时表和表变量的用法,需要注意:
如果语句很复杂,连接太多,可以考虑用临时表和表变量分步完成;
如果需要多次用到一个大表的同一部分数
您可能关注的文档
最近下载
- 2025年首次曝光171页初中语文学霸手写笔记(可打印).docx VIP
- 排水球墨铸铁管道工程技术规程.pdf
- 模板中文软件版Project2010-详细教程.pptx VIP
- 云南曲靖钢铁集团双友钢铁有限公司钢铁转型升级一体化项目项目环境影响报告书.pdf VIP
- 模板中文软件版project2010详细教程x.pdf VIP
- 小学信息技术五年级SCRATCH教案全集.doc VIP
- 2025年上海市汽车园区智能网联汽车测试道路建设可行性研究报告.docx
- 2023年10月自考03291人际关系学试题及答案含评分标准.docx VIP
- 三一EBZ200悬臂式掘进机使用说明书.pdf VIP
- 《 卷烟工厂能源管理绩效评价方法》编制说明.docx VIP
文档评论(0)