编码规范SQL Server.docx
- 文档编号:8692669
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:14
- 大小:21.22KB
编码规范SQL Server.docx
《编码规范SQL Server.docx》由会员分享,可在线阅读,更多相关《编码规范SQL Server.docx(14页珍藏版)》请在冰豆网上搜索。
编码规范SQLServer
密级:
内部公开
文档编号:
NTT_SD_SSBMGF
版本号:
V1.0
编码规范_SQLServer
惠州市新中新电子技术开发有限公司
编制:
生效日期:
审核:
批准:
---------------------------------------------------------------------
惠州市新中新电子技术开发有限公司对本文件资料享受著作权及其它专属权利,未经书面许可,不得将该等文件资料(其全部或任何部分)披露予任何第三方,或进行修改后使用。
文件更改摘要:
日期
版本号
修订说明
修订人
审核人
批准人
2008-06-28
V0.1
创建
2008-08-22
V1.0
正式版本
目录
1前言1
1.1目的1
1.2术语1
1.3参考文献1
2逻辑对象的命名规范1
2.1数据库命名1
2.2数据库文件及目录1
2.3表1
2.4字段/域2
2.5索引2
2.6视图3
2.7存储过程3
2.8触发器3
2.9函数3
3可编程性编码规范3
3.1可编程性统一规范3
3.1.1外部参数3
3.1.2内部参数4
3.1.3代码编写格式规范4
3.2存储过程5
3.2.1存储过程格式:
5
3.2.2存储过程标头备注5
3.2.3返回值6
3.3函数6
3.3.1函数格式6
3.3.2函数标头备注6
3.4触发器7
3.4.1触发器格式7
3.4.2触发器标头备注7
4数据库编程技巧8
前言
目的
为了统一公司软件开发的设计过程中关于数据库SQLSEREVR设计时的命名规范和具体工作时的编程规范,便于交流和维护,特此收集、整理公司已经积累的技术资料、参考国家规范和标准、修订和编制了本编程规范。
术语
暂无。
参考文献
版本说明和修改历史
逻辑对象的命名规范
数据库命名
数据库的命名要求使用与数据库意义相关联的拼音首字母且以“XY”打头,例如:
客户资料数据库的命名可以是XYKhzl。
数据库文件及目录
数据库文件存放路径:
d:
\xydata
数据库主数据文件命名:
DBName_Data_XX.mdf,文件组名称:
PRIMARY
数据库事务日志文件命名:
DBName_log_XX.ldf
数据库文件组命名:
主文件组PRIMARY,次文件组DBName_FileGroup_XX
其中:
DBName为数据库实际名称
XX为从00开始的数字编号
表
表的命名以业务品种为第一前缀,加下划线(_),业务模块为第二个前缀,其后紧接与表意义相关联的汉语拼音首字母,加下划线(_),存储性质为后缀
业务品种
说明
存储性质
说明
后缀
说明
SA
深圳A股
JY
交易
LS
历史表类
SB
深圳B股
RL
认领
NULL
无头帐
HA
上海A股
JK
接口类(清算数据源)
NOTNULL
无头帐已认领
HB
上海B股
XT
系统类(系统维护使用)
ST
特别转让系统
CW
财务系统接口
ZJ
资金清算
YH
银行系统接口
QS
清算结果类(预处理结果用于股份清算)
ZJ
资金清算类(预处理结果用于资金清算)
除系统管理库中表的命名可不用业务品种为第一前缀外,其他库中必须使用第一前缀。
第二前缀业务模块和后缀存储性质可根据需要使用。
如存储性质是业务处理的,可使用业务模块前缀区分业务模块。
示例:
HB_JK_BC1ST_RL_GFYE
关联表的关联域使用相同的命名方法,使各表之间关联关系显而易见。
字段/域
字段的命名必须字段意义相关联的汉语拼音首字母。
例如:
ZQDM:
证券代码。
●交易所接口表字段与DBF表一致
●采用字段字典——统一公用字段的定义,见附表1
●数值型字段定义长度以numeric(19,3)为限
●varchar型用于非关键字段(如:
地址、营业部全程等备注型字段)
索引
针对数据库表中一个或多个字段建立的索引的命名规范可以如以下格式所定:
IDX_TableName_ColumnName1_ColumnName2_…
上面格式中:
●IDX是必需具备的,表示该对象为索引。
●TableName是数据库表的名称或名称简写。
●ColumnName1是数据库表中(第一个)索引字段的名称或名称简写
●ColumnName2是数据库表中(第二个)索引字段的名称或名称简写
●其他,有几个字段,就可以进行几个字段的名称或名称简写的追加
●下划线“_”可以考虑保留或删除
●索引名的总长必需符合数据库的规定
视图
视图的命名必须以VW(View缩写)开头,加下划线(_),紧接与视图用途相关联的汉语拼音首字母。
例如:
VW_gfcx。
存储过程
存储过程的命名必须符合P_调用分类_功能分类_详细名称格式,其中P表示是存储过程,详细名称是与存储过程意义相关联的汉语拼音首字母,
按调用者分类:
总部——ZB
营业部——YB
公用类——GY
内部用——NB
按功能分类:
查询类:
CX
数据维护类:
WH
业务处理类:
YW
例:
P_ZB_YW_GFQS
存储过程的详细规范参见《SQLServer存储过程编写规范》
触发器
触发器的命名以Tr_开头,其他参考存储过程命名
函数
函数的命名以Fun_开头,其他参考存储过程命名
可编程性编码规范
可编程性统一规范
外部参数
变量取名请遵守命名规范,对使用频繁、关键变量,为了便于阅读和修改,请在定义时加上注释标明其含义。
为了便于阅读和调试,尽量少用单字母变量,禁止使用诸如i、l等作为变量名,同时注意小写字母l和数字1之间的区别使用。
参数命名约定:
@a+变量类型+’_’+名称,变量类型和名称用小写。
变量类型
前缀
Integer
@ai_
Smallinteger
@asi_
Tinyint
@ati_
Varchar
@avc_
Char
@ac_
Numeric
@an_
Datetime
@adt
Smalldatetime
@asdt
内部参数
内部变量命名约定:
@+变量类型+’_’+名称,变量类型和名称用小写。
变量类型
前缀
Integer
@i_
Smallinteger
@si_
Tinyint
@ti_
Varchar
@vc_
Char
@c_
Numeric
@n_
Datetime
@dt
Smalldatetime
@sdt
代码编写格式规范
1)一般设置TAB=4,并将TAB自动转换为空格;
2)每行最大限度为80个字符
3)单行注释采用--,多行注释采用/*注释内容*/的形式。
4)多个Begin…End语句嵌套时采用如下方式
BEGIN/*1*/
…
BEGIN/*1.1*/
…
BEGIN/*1.1.1*/
…
END/*1.1.1*/
BEGIN/*1.1.2*/
…
END/*1.1.2*/
END/*1.1*/END/*1*/
其中1表示第一级嵌套,1.1表示第二级嵌套,1.1.1表示第三级嵌套,1.1.2表示第三级的第二个嵌套…,一般不要超过三级嵌套。
存储过程
存储过程格式:
use
go
ifexist…
dropPROCEDURE
go
set
set
CREATEPROCEDURE
[[(]@parameter_namedatatype[OUTPUT]
[,@parameter_namedatatype[OUTPUT]]..[]]
AS
Begin
SQL_statements
End
Go
Set
Set
存储过程标头备注
过程前应有文字说明,说明本过程是做什么的;调用者是谁;返回值的含义;参数的含义;输入数据库;输出数据库;每一步操作前有文字说明,说明该操作达到的目的。
格式为:
/******************************************************************
概要说明:
中文名称:
用途:
数据库:
语法信息:
输入参数:
输出参数:
调用举例:
外部联系:
上级调用:
下级调用:
输入表:
输出表:
功能修订:
简要说明:
修订记录:
<修订日期><修订人>:
修改内容简要说明
〈续简要说明>
<修订日期><修订人>:
修改内容简要说明
〈续简要说明>
******************************************************************/
返回值
1)使用输出参数返回过程执行的相关信息。
2)过程结束前应调用return返回代码,作为存储过程的执行状态。
函数
函数格式
use
go
ifexist…
dropFUNCTION
go
createfunctiondbo.Function_Name()
returns
as
begin
end
函数标头备注
函数前应有文字说明,说明本函数是做什么的;调用者是谁;返回值的含义;参数的含义;输入数据库;输出数据库;每一步操作前有文字说明,说明该操作达到的目的。
格式为:
/******************************************************************
概要说明:
中文名称:
用途:
数据库:
语法信息:
输入参数:
输出参数:
调用举例:
外部联系:
上级调用:
下级调用:
输入:
输出:
功能修订:
简要说明:
修订记录:
<修订日期><修订人>:
修改内容简要说明
〈续简要说明>
<修订日期><修订人>:
修改内容简要说明
〈续简要说明>
******************************************************************/
触发器
触发器格式
IFEXISTS(SELECTnameFROMsysobjects
WHEREname=N'
ANDtype='TR')
DROPTRIGGER
GO
CREATETRIGGER
ON
INSTEADOFINSERT
AS
BEGIN
RAISERROR(50009,16,10)
END
GO
触发器标头备注
触发器前应有文字说明,说明本触发器是做什么的、作用表是哪些、触发器类型等,每一步操作前应有文字说明,说明该操作达到的目的。
格式为:
/**********************************************/
/*触发器名称:
*/
/*用途:
*/
/*作者:
*/
/*时间:
*/
/*数据库:
*/
/*作用表名:
*/
/*触发器类型:
*/
/*版本说明:
*/
/**********************************************/
修订说明宜采用如下格式:
/*<修订日期><修订人>:
修改内容简要说明
〈续简要说明>*/
/*<修订日期><修订人>:
修改内容简要说明
〈续简要说明>*/
数据库编程技巧
子查询与联结查询之比较
子查询与联结查询一般能互相替换,只不过子查询的效率较低,但是可读性比较好;而联接查询效率较高,可读性差,但有一种情况不能使用联接查询,即比较之间涉及到聚合函数,如使用avg,sum等函数时,只能使用子查询。
例:
_____________________________________________________________
selecttitles.title,titles.price
fromtitlesJOINsalesONsales.title_id=titles.title_id
wheresales.qty>(selectavg(qty)fromsales)
_____________________________________________________________
大数据表联结查询技巧
大数据表间的联结查询通过一个SQL查询完成的效率较低,且联结条件和查询条件多间可读性比较差;可由一个或两个大数据表按最大过滤条件生成一个临时表(#。
。
。
),然后由此临时表联结生成,示具体情况甚至可一层层往下过滤--联结--过滤—联结,最终生成所须的结果集
聚类索引和非聚类索引之比较
返回范围内的数据
返回如姓名范围或日期范围的订货量,一般使用聚类索引。
因为聚类索引已经包含了经过分类排序的数据,聚类索引只需找到要检索的所有数据中的开头和结尾数据。
列中有一个或极少的不同值
一般不使用任何索引。
例:
_____________________________________________________________
select*fromFewUniquesWITH(Index(0))whereStatus=‘Inactive’
——StatusI/Ofromtablescanaccess(commentwasAdded),Scancount1,logicalreads45,physicalreads0
select*fromFewUniquesWITH(Index(inFewUniquesStatus))whereStatus=‘Inactive’
——StatusI/Ofromtablescanaccess(commentwasAdded),Scancount1,logicalreads5018,physicalreads0
小数目的不同值
一般采用聚类索引
_____________________________________________________________
select*fromFewUniquesWITH(Index(0))whereStatus=‘Inactive’
——StatusI/Ofromtablescanaccess(commentwasAdded),Scancount1,logicalreads16,physicalreads0
createclusteredindexicFewUniquesStatusonFewUniques(Status)GO
select*fromFewUniquesWITH(Index(inFewUniquesStatus))whereStatus=‘Inactive’
——StatusI/Ofromtablescanaccess(commentwasAdded),Scancount1,logicalreads3,physicalreads0
大数目的不同值和更新索引列数据
当不同值的数目增加并达到表中行的数目时,一般选择使用非聚类索引。
返回行数量较少以及频繁更新的列
一般使用非聚类索引。
复合索引的优缺点
在大多数情况下都使用相同的条件列组合应考虑建一复合索引
在大多数情况下都使用不同的条件列组合则建多个单一索引或多个小的复合索引
不单独进行搜索的列决不首先排列在索引中
事务封装使用
事务封装的程序段和执行时间尽量短
动态光标使用
尽量少用光标循环,在大多数条件下可转换成联结查询
存储过程的设置选项使用
存储过程开头尽量加上SETNOCOUNTON,减少不必要的“受作用行”等信息返回到客户端,不然ADO查询会出错,同时减少网络流量;
在返回结果集的SQL语句前使用SETROWCOUNT20000,防止出现无条件查询时太大的数据集返回到客户端.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编码规范SQL Server 编码 规范 SQL