数据库团队开发标准
说明:本标准以T-SQL为标准举例,是团队实际应用中的简化框架版。由于详细标准原文不适合对外公布,请多多原谅!欢迎大家多提宝贵的意见与建议。作者:快乐一生(QQ:42166145)
1、 数据表脚本标准:
--======================================================
--类别——编号、表实义名称说明
--版本号:x.x.x.x 修订人:xxx
--修订日期:xxxx年xx月xx日
--修订原因:xxxxxx
--修订内容:xxxxxx
--相关影响:xxxxxx
--其它注释:xxxxxx
--======================================================
--[删除已有表]
IF EXISTS(SELECT name FROM sysobjects WHERE name=N’表逻辑名称’AND type=’U’)
DROP TABLE 表逻辑名称
GO
--[新建表定义]
CREATE TABLE 表逻辑名称
(--字段名 字段类型 字段约束, --字段注解,限范围字段要说明所表示含义
ID bigint identity(1,1) primary key, --编号,主键约束
KeyId varchar(32) default(‘’), --关键字标识
Status tinyint default(0) check(Status=0 or Status=1),--状态,0=接收,1=发送
……
CTime datetime default(getdate()) --创建日期时间
)
GO
2、 视图脚本标准:
--======================================================
--类别——编号、实义名称说明
--版本号:x.x.x.x 修订人:xxx
--修订日期:xxxx年xx月xx日
--修订原因:xxxxxx
--修订内容:xxxxxx
--相关影响:xxxxxx
--其它注释:xxxxxx
--======================================================
--[删除已有视图]
IF EXISTS(SELECT table_name FROM information_schema.views WHERE table_name=N’视图逻辑名称’)
DROP VIEW 视图逻辑名称
GO
--[新建视图定义]
CREATE VIEW 视图逻辑名称
AS
Select * from 表名
WITH CHECK OPTION --视图响应操作时是否检测值的完整性
GO
3、 存储过程脚本标准:
--======================================================
--过程类别——编号、过程实义名称说明
--版本号:x.x.x.x 修订人:xxx
--修订日期:xxxx年xx月xx日
--修订原因:xxxxxx
--修订内容:xxxxxx
--相关影响:xxxxxx
--其它注释:xxxxxx
--======================================================
--[删除已有过程方法]
IF EXISTS(SELECT name FROM sysobjects WHERE name=N’过程名称’AND type=’P’)
DROP PROCEDURE 过程名称
GO
--[新建过程代码定义]
CREATE PROCEDURE 过程名称
--[标准输入参数]
@inParam1 varchar(20)=’默认值’, --说明:参数@inParam1是varchar(20)类型,忽略=’默认值’
--[标准输出参数]
@outParam2 varchar(30) output --转出参数无默认值班,且必须有关键字output标识
AS
Select @outParam2=’Hello ’+@inParam1
GO
4、 扩展函数脚本标准:
--======================================================
--函数类别——编号、实义名称说明
--版本号:x.x.x.x 修订人:xxx
--修订日期:xxxx年xx月xx日
--修订原因:xxxxxx
--修订内容:xxxxxx
--相关影响:xxxxxx
--其它注释:xxxxxx
--======================================================
--[删除已有函数方法]
IF EXISTS(SELECT name FROM sysobjects WHERE name=N’函数名称’)
DROP FUNCTION 函数名称
GO
--[新建函数代码定义]
CREATE FUNCTION 函数名称
(--[输入参数]
@Param1 int=0, --参数说明:格式(参数名 类型=默认值),部分函数可无参数
@Param bit=0)
RETURNS table --返回值班类型:int、table、varchar(n)、bit、decimal、float
AS
--填写运算代码
--并返回table数据
RETURNS select 1 as Result
GO
5、 索引脚本标准:
--======================================================
--类别——编号、实义名称说明
--版本号:x.x.x.x 修订人:xxx
--修订日期:xxxx年xx月xx日
--修订原因:xxxxxx
--修订内容:xxxxxx
--相关影响:xxxxxx
--其它注释:xxxxxx
--======================================================
--[删除已有索引方法]
IF EXISTS(SELECT name FROM sysindexes WHERE name=N’索引名称’)
DROP INDEX 索引名称
GO
--[新建索引代码定义]
CREATE INDEX 索引名称
ON 表名称(列1 升序或降序,列2升序或降序[,……]) --排序: asc||desc
GO
6、 升级脚本标准:
--======================================================
--升级说明:XXXXXX
--升级条件:xxxxxx
--版 本 号:x.x.x.x 负责人:xxx
--修订日期:xxxx年xx月xx日
--修订原因:xxxxxx
--修订内容:xxxxxx
--其它注释:xxxxxx
--======================================================
--脚本详细代码
--[脚本规则]
A、初始化脚本:用来向表中插入基本动作的初始数据,一般50~100条记录应该加入go提交。
例:insert into 表(列1,列2…,列n) values(值1,值2…,值n)
注:内容有分类的,按分类提交亦可,不必受50条记录限制。
B、升级脚本:由多SQL版本或多数据平台及软件系统升级等原因修改的内容,
具体采用以下格式:
--xxxx年xx月xx日 xxxx升级原因:xxxxx,更新:xxxxx,条件:xxxxx
Update 表set 列=新值 where <更新条件>
Go
注:在设定更新条件前,一定要预看待更新的记录是否符合要求
Select * from 表 where <更新条件>
C、升级文件命名:
1、yyyy-MM-dd-内容-升级脚本.sql
2、内容-yyyy-MM-dd-升级脚本.sql
以上两种命名形式可据实际需要来定。(可附加版本号)
7、 版本修订规则
--======================================================
--版本号:x.x.x.x 修订人:xxx
--修订日期:xxxx年xx月xx日
--修订原因:xxxxxx
--修订内容:xxxxxx
--相关影响:xxxxxx
--其它注释:xxxxxx
--======================================================
A、每次修改脚本前,要先添加修改说明,才允许修改代码。
B、除“其它注释”项可不填写外,其它六项为必填内容。
C、xxxx表示实际内容,如果无内容要填写“无”。
D、不允许空项不填或删除项。
8、 初始数据规则:
A、 所有初始数据不允许直接填写到数据表中,必须采用Insert方法填加(保留脚本)。
B、 所有升级脚本中修改字段时,必须暂停数据访问,采用脚本命令修改,且修改前至改后要采用
Select 等相关方式验证效果。
C、所有数据库脚本升级,在执行脚本前必须备份当前数据库并暂停数据访问。
9、 名称定义规则:
A、常用大分类:s=系统,d=数据,log=日志,v=视图,p=存储过程,fn=函数,idx=索引
B、命名规则:大分类_小分类与对象名
C、表名、字段名、类型、约束定义(略)
其它规则与使用范围、方法暂略