编码规范SQL Server文档格式.docx

上传人:b****6 文档编号:18805037 上传时间:2023-01-01 格式:DOCX 页数:14 大小:21.29KB
下载 相关 举报
编码规范SQL Server文档格式.docx_第1页
第1页 / 共14页
编码规范SQL Server文档格式.docx_第2页
第2页 / 共14页
编码规范SQL Server文档格式.docx_第3页
第3页 / 共14页
编码规范SQL Server文档格式.docx_第4页
第4页 / 共14页
编码规范SQL Server文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

编码规范SQL Server文档格式.docx

《编码规范SQL Server文档格式.docx》由会员分享,可在线阅读,更多相关《编码规范SQL Server文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

编码规范SQL Server文档格式.docx

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

1前言

1.1目的

为了统一公司软件开发的设计过程中关于数据库SQLSEREVR设计时的命名规范和具体工作时的编程规范,便于交流和维护,特此收集、整理公司已经积累的技术资料、参考国家规范和标准、修订和编制了本编程规范。

1.2术语

暂无。

1.3参考文献

版本说明和修改历史

2逻辑对象的命名规范

2.1数据库命名

数据库的命名要求使用与数据库意义相关联的拼音首字母且以“XY”打头,例如:

客户资料数据库的命名可以是XYKhzl。

2.2数据库文件及目录

数据库文件存放路径:

d:

\xydata

数据库主数据文件命名:

DBName_Data_XX.mdf,文件组名称:

PRIMARY

数据库事务日志文件命名:

DBName_log_XX.ldf

数据库文件组命名:

主文件组PRIMARY,次文件组DBName_FileGroup_XX

其中:

DBName为数据库实际名称

XX为从00开始的数字编号

2.3表

表的命名以业务品种为第一前缀,加下划线(_),业务模块为第二个前缀,其后紧接与表意义相关联的汉语拼音首字母,加下划线(_),存储性质为后缀

业务品种

说明

存储性质

后缀

SA

深圳A股

JY

交易

LS

历史表类

SB

深圳B股

RL

认领

NULL

无头帐

HA

上海A股

JK

接口类(清算数据源)

NOTNULL

无头帐已认领

HB

上海B股

XT

系统类(系统维护使用)

ST

特别转让系统

CW

财务系统接口

ZJ

资金清算

YH

银行系统接口

QS

清算结果类(预处理结果用于股份清算)

资金清算类(预处理结果用于资金清算)

除系统管理库中表的命名可不用业务品种为第一前缀外,其他库中必须使用第一前缀。

第二前缀业务模块和后缀存储性质可根据需要使用。

如存储性质是业务处理的,可使用业务模块前缀区分业务模块。

示例:

HB_JK_BC1ST_RL_GFYE

关联表的关联域使用相同的命名方法,使各表之间关联关系显而易见。

2.4字段/域

字段的命名必须字段意义相关联的汉语拼音首字母。

例如:

ZQDM:

证券代码。

●交易所接口表字段与DBF表一致

●采用字段字典——统一公用字段的定义,见附表1

●数值型字段定义长度以numeric(19,3)为限

●varchar型用于非关键字段(如:

地址、营业部全程等备注型字段)

2.5索引

针对数据库表中一个或多个字段建立的索引的命名规范可以如以下格式所定:

IDX_TableName_ColumnName1_ColumnName2_…

上面格式中:

●IDX是必需具备的,表示该对象为索引。

●TableName是数据库表的名称或名称简写。

●ColumnName1是数据库表中(第一个)索引字段的名称或名称简写

●ColumnName2是数据库表中(第二个)索引字段的名称或名称简写

●其他,有几个字段,就可以进行几个字段的名称或名称简写的追加

●下划线“_”可以考虑保留或删除

●索引名的总长必需符合数据库的规定

2.6视图

视图的命名必须以VW(View缩写)开头,加下划线(_),紧接与视图用途相关联的汉语拼音首字母。

VW_gfcx。

2.7存储过程

存储过程的命名必须符合P_调用分类_功能分类_详细名称格式,其中P表示是存储过程,详细名称是与存储过程意义相关联的汉语拼音首字母,

按调用者分类:

总部——ZB

营业部——YB

公用类——GY

内部用——NB

按功能分类:

查询类:

CX

数据维护类:

WH

业务处理类:

YW

例:

P_ZB_YW_GFQS

存储过程的详细规范参见《SQLServer存储过程编写规范》

2.8触发器

触发器的命名以Tr_开头,其他参考存储过程命名

2.9函数

函数的命名以Fun_开头,其他参考存储过程命名

3可编程性编码规范

3.1可编程性统一规范

3.1.1外部参数

变量取名请遵守命名规范,对使用频繁、关键变量,为了便于阅读和修改,请在定义时加上注释标明其含义。

为了便于阅读和调试,尽量少用单字母变量,禁止使用诸如i、l等作为变量名,同时注意小写字母l和数字1之间的区别使用。

参数命名约定:

@a+变量类型+’_’+名称,变量类型和名称用小写。

变量类型

前缀

Integer

@ai_

Smallinteger

@asi_

Tinyint

@ati_

Varchar

@avc_

Char

@ac_

Numeric

@an_

Datetime

@adt

Smalldatetime

@asdt

3.1.2内部参数

内部变量命名约定:

@+变量类型+’_’+名称,变量类型和名称用小写。

@i_

@si_

@ti_

@vc_

@c_

@n_

@dt

@sdt

3.1.3代码编写格式规范

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表示第三级的第二个嵌套…,一般不要超过三级嵌套。

3.2存储过程

存储过程格式:

use<

databasename>

go

ifexist…

dropPROCEDURE<

usename>

.<

procedure_name>

set

CREATEPROCEDURE<

[[(]@parameter_namedatatype[OUTPUT]

[,@parameter_namedatatype[OUTPUT]]..[]]

AS

Begin

SQL_statements

End

Go

Set

3.2.1存储过程标头备注

过程前应有文字说明,说明本过程是做什么的;

调用者是谁;

返回值的含义;

参数的含义;

输入数据库;

输出数据库;

每一步操作前有文字说明,说明该操作达到的目的。

格式为:

/******************************************************************

概要说明:

中文名称:

用途:

数据库:

语法信息:

输入参数:

输出参数:

调用举例:

外部联系:

上级调用:

下级调用:

输入表:

输出表:

功能修订:

简要说明:

修订记录:

<

修订日期>

修订人>

:

修改内容简要说明

〈续简要说明>

<

******************************************************************/

3.2.2返回值

1)使用输出参数返回过程执行的相关信息。

2)过程结束前应调用return返回代码,作为存储过程的执行状态。

3.3函数

3.3.1函数格式

go

dropFUNCTION<

function_name>

createfunctiondbo.Function_Name()

returns<

function_data_type,,int>

as

begin

function_body,,RETURN>

end

3.3.2函数标头备注

函数前应有文字说明,说明本函数是做什么的;

输入:

输出:

3.4触发器

3.4.1触发器格式

IFEXISTS(SELECTnameFROMsysobjects

WHEREname=N'

trigger_name,sysname,trig_test>

'

ANDtype='

TR'

DROPTRIGGER<

GO

CREATETRIGGER<

ON<

table_or_view_name,sysname,pubs.dbo.sales>

INSTEADOFINSERT

AS

BEGIN

RAISERROR(50009,16,10)

END

3.4.2触发器标头备注

触发器前应有文字说明,说明本触发器是做什么的、作用表是哪些、触发器类型等,每一步操作前应有文字说明,说明该操作达到的目的。

/**********************************************/

/*触发器名称:

*/

/*用途:

*/

/*作者:

/*时间:

/*数据库:

/*作用表名:

*/

/*触发器类型:

/*版本说明:

修订说明宜采用如下格式:

/*<

*/

/*<

4数据库编程技巧

子查询与联结查询之比较

子查询与联结查询一般能互相替换,只不过子查询的效率较低,但是可读性比较好;

而联接查询效率较高,可读性差,但有一种情况不能使用联接查询,即比较之间涉及到聚合函数,如使用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

小数目的不同值

一般采用聚类索引

——StatusI/Ofromtablescanaccess(commentwasAdded),Scancount1,logicalreads16,physicalreads0

createclusteredindexicFewUniquesStatusonFewUniques(Status)GO

——StatusI/Ofromtablescanaccess(commentwasAdded),Scancount1,logicalreads3,physicalreads0

大数目的不同值和更新索引列数据

当不同值的数目增加并达到表中行的数目时,一般选择使用非聚类索引。

返回行数量较少以及频繁更新的列

一般使用非聚类索引。

复合索引的优缺点

在大多数情况下都使用相同的条件列组合应考虑建一复合索引

在大多数情况下都使用不同的条件列组合则建多个单一索引或多个小的复合索引

不单独进行搜索的列决不首先排列在索引中

事务封装使用

事务封装的程序段和执行时间尽量短

动态光标使用

尽量少用光标循环,在大多数条件下可转换成联结查询

存储过程的设置选项使用

存储过程开头尽量加上SETNOCOUNTON,减少不必要的“受作用行”等信息返回到客户端,不然ADO查询会出错,同时减少网络流量;

在返回结果集的SQL语句前使用SETROWCOUNT20000,防止出现无条件查询时太大的数据集返回到客户端.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小学作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1