Transact-SQL编程规范

上传人:鲁** 文档编号:488377680 上传时间:2022-11-06 格式:DOC 页数:25 大小:89.01KB
返回 下载 相关 举报
Transact-SQL编程规范_第1页
第1页 / 共25页
Transact-SQL编程规范_第2页
第2页 / 共25页
Transact-SQL编程规范_第3页
第3页 / 共25页
Transact-SQL编程规范_第4页
第4页 / 共25页
Transact-SQL编程规范_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《Transact-SQL编程规范》由会员分享,可在线阅读,更多相关《Transact-SQL编程规范(25页珍藏版)》请在金锄头文库上搜索。

1、Transact-SQL编程规范文档信息项目编号通用文档编号项目名称通用标题Transact-SQL编码规范类别规范文档当前阶段规划阶段摘要当前版本V1.0日期2009-12-10作者文档拥有者送交人员文件Trqnsact-SQL编码规范.doc修改历史日期版本作者修改内容评审号更改请求号目录2. 命名规范61.1. 对象命名61.1.1. 数据库61.1.2. 关系型数据库61.1.3. 数据架构71.1.4. 数据表71.1.5. 数据视图81.1.6. 数据列81.1.7. 存储过程81.1.8. 函数91.1.9. 用户定义数据类型91.1.10. DML触发器91.1.11. DDL

2、触发器101.1.12. 主键、外键关系和索引111.2. 参数命名121.2.1. 数据列参数121.2.2. 非数据列参数121.3. 常用字段命名133. SQL编写133.1. 大小写133.2. 使用“;”133.3. 存储格式143.4. 类型选择143.5. 默认值153.6. 字段长度153.7. 使用“”153.8. 语句缩进153.9. 语句换行153.10. 语句分割163.11. 使用“*”163.12. 表名别名163.13. 类型转换163.14. 数值比较173.15. 排序173.16. Unicode字符串173.17. BEGIN.END 块183.18.

3、TRY块183.19. TOP子句193.20. TRANSACTION编写193.21. 存储过程214. 代码注释214.1. 代码头部注释214.2. TRANSACTION注释225. 附录1:命名规则225.1. Pascal 大小写225.2. Camel 大小写225.3. 匈牙利命名法226. 附录2:参考资料236.1. Microsoft SQL Server 2005 联机丛书236.2. SQL Server 2005示例数据库236.3. 编写可移植的 Transact-SQL 代码236.4. T-SQL 编码标准231. 基本原则以大小写敏感编写SQL语句。尽量使

4、用Unicode 数据类型。优先使用连接代替子查询或嵌套查询。尽量使用参数化SQL查询代替语句拼接SQL查询。禁止使用拼音+英语的方式来命名SQL对象或变量。在基于上次版本发布的同一数据库上,脚本可反复多次批运行而不出现任何错误。所有的视图、存储过程、函数、触发器均按先DROP以前的,再CREATE新的方式编写所有的表,只能判断当表不存在时才建立,绝不能当表存在时DROP表,再重新建立,这样会导致数据丢失,这是最严重的错误!所有的字段,只能判断当字段不存在时才建立,绝不能当字段存在时DROP字段,再重新建立,这样会导致数据丢失,这是最严重的错误!如果要修改某字段的类型,应先判断该字段是否存在,

5、如已存在则ALTER该字段,否则ADD该字段 2. 命名规范在一般情况下,采用Pascal样式或Camel样式命名数据库对象,使在开发基于数据库应用程序的时候通过ORM工具生成的数据访问代码(比如C#)更好的符合命名规范。另外,关系型数据库同Xml结合得越来越紧密,规范的命名很有必要。在实际数据库开发过程中,如果需求方已经提供数据库设计方案,以提供的方案为准;在原有数据库上进行升级开发时,在可行的情况下可适当做出设计调整以符合编程规范。1.1. 对象命名1.1.1. 数据库第一种方式,采用Pascal样式命名,命名格式为项目英文名称。示例:AdventureWorks第二种方式,采用Pasca

6、l样式命名,命名格式为项目英文名称 + Db。示例:AdventureWorksDb BizTalkRuleEngineDb建议采用第一种方式。1.1.2. 关系型数据库采用Pascal样式命名,命名格式为项目英文名称 + DW。示例:AdventureWorksDW1.1.3. 数据架构除SQL Server 系统定义的数据架构外,新建架构采用Pascal样式命名,命名格式为架构名。示例:HumanResources Production对数据库对象 Table,View,Procedure,Function等使用数据架构进行归类。在SQL Server 2000中dbo为默认架构。1.1.

7、4. 数据表命名格式为类别_表名,类别采用大写(通用缩写),表名采用Pascal样式命名。例如:SYS_Dept 表明的是系统基本模块下的单位信息表SYS_DeptWork表明的是系统基本模块下的单位工作信息表SYS表示系统基本信息Dept表示单位的单词,D大写Work表示工作的单词,W大写表名以英文单数命名,主要是参考SQL Server 2005示例数据库,个人理解为更好的使用ORM工具生成符合编程规范的代码(比如C#)。典型的例子,使用Product ,而不是Products。1.1.5. 数据视图视图名称采用Pascal样式命名,命名格式为v + 视图名称。示例:vEmployee v

8、SalesPerson1.1.6. 数据列列名称命名采用英文单词或缩写,英文单词只来自于具体业务定义,尽量表达清楚含义。采用Pascal样式命名,命名格式为列名称。示例:AddressID PostalCode尽量避免使用拼音命名,如果不可避免,对于比较短的列名,采用拼音全写,如果拼音列名比较复杂,可以采用首个字用全拼,其它字用首字母大写表示。示例:宁波 Ningbo经营方式 JingYFS避免使用SQL系统中自带的关键字,如果出现了关键字,请在关键字前加一个独立的能代表改字段意思的小写字母区分。例如:是否有用 Active 第一个字母大写 名字的单词是Name,但SQL中Name是关键字,你

9、可以前加一个小写s或是后加一个s来区分关键字,但这规定一定在系统中要统一State 状态的单词在系统中是关键字,由于我要把state这个单词的属性设置为整型,所以你可以把state前加一个小写的i来区分关键字所以综合上述: sName和Names,iState,Statei都是合法的。1.1.7. 存储过程建议采用Pascal样式命名,命名格式为PRC_存储过程名称。示例:PRC_GetUser PRC_AddUser备注:在SQL Server 2005示例数据库中使用Camel样式命名。1.1.8. 函数自定义函数采用Pascal样式命名,命名格式为FNC_ 函数名,系统函数使用全部大写。

10、示例:SELECT FNC_IsNull(LastName,Unknown last name);GETDATE()1.1.9. 用户定义数据类型采用Pascal样式命名,命名格式为自定义数据类型名称。示例:Flag NameStyle1.1.10. DML触发器DML 触发器是当数据库服务器中发生数据操作语言 (DML) 事件时要执行的操作。DML 事件包括对表或视图发出的 UPDATE、INSERT 或 DELETE 语句。根据事件不同命名规则使用前缀进行区分,格式为 TRI_U|I|D_表名|视图名示例:TRI_U_Employee 另外一种方式为,AFTER 触发器:TRI_表名_后面

11、插入加I,修改加U,删除加D。INSTEAD OF 触发器: TRI_表名或视图名_OF后面插入加I,修改加U,删除加D1.1.11. DDL触发器响应各种数据定义语言 (DDL) 事件而激发。这些事件主要与以关键字 CREATE、ALTER 和 DROP 开头的 Transact-SQL 语句对应。执行 DDL 式操作的系统存储过程也可以激发 DDL 触发器。采用Camel样式命名,命名单词能够描述DDL触发器功能。示例:CREATE TRIGGER safety ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS PRINT You must disabl

12、e Trigger safety to drop or alter tables! ROLLBACK ;另外一种方式为添加dll前缀,示例:CREATE TRIGGER ddlDatabaseTriggerLog ON DATABASE FOR DDL_DATABASE_LEVEL_EVENTS AS1.1.12. 主键、外键关系和索引主键: PK_表名称_主键;如果是组合主键,使用PK_表名_主键1_主键2。示例:PK_Store_CustomerID PK_StoreContact_CustomerID_ContactID外键关系:FK_从表名称_主表名称_外键列名称。示例:FK_Stor

13、eContact_Store_CustomerID聚集索引:PK_表名称_主键;如果是组合主键,使用PK_表名_主键1_主键2。示例:PK_Store_CustomerID PK_StoreContact_CustomerID_ContactID唯一非聚集索引:AK_表名称_列名称。示例:AK_Store_rowguid不唯一非聚集索引:PK_表名称_列名称。示例:IX_Store_SalesPersonID主 XML索引:PXML_表名称_Xml类型列名称。示例:PXML_Store_Demographics备注:以上命名参考Sql Server 2005示例数据库,一般只需设计器自动生成,不需要额外修改。1.2. 参数命名1.2.1. 数据列参数命名格式为 + 列名称。示例:EmployeeID在列名不符合Pascal样式时(早期遗留系统),例如使用全部大写的列名称,或使用“_”进行连接的字段名称,参数名称定义使用 + 列名称。1.2.2. 非数据列参数在参数无法跟列名称进行关联时,使用能够反映该参数功能的英文单词或单词组合, 采用Pascal样式命名。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号