MSSQL数据库规范参考

一.数据库对象范围限定
1.表
2.约束[主键/外键]
3.索引
4.标量函数
5.存储过程
6.视图(对外)

二.数据库对象命名总规范
1.数据库所有元素只能使用字母,数字和下划线命名.不允许使用中文.且需自解释.不能使用中文首字母.
2.命名中的英文单词以大写首字母开头,主体部分为连续的英文单词,如果英文名称过长,可以使用英文简称.

三.表
1.命名
T_[功能类]_[表名称]
功能类.譬如Dict;Treat;Pat
T_Dict_InsuranceType
2.字段
1.字段名无下划线.譬如UserName
2.以表名称+Id为编号.譬如UserId,PatId
3.特例:由于底层框架强制约定.
主键列名 GUID
院区 Hos_ID
创建时间 CreateDate
3.字段类型
无法设置长度类型(BIT,TINYINT,SMALLINT,INT,BIGINT;DATETIME)
满足存储且长度最小的类型
可设置长度类型(CHAR,VARCHAR)
满足存储且长度最小的长度,冗余不超过10
不允许列类型为text,ntext,image.
字段全部不能为空,NOT NULL.特例:树父级Id,空外键引用.
每个表名,字段都有对应的说明.

四.约束
PK_[CL/NC]UQ[表名]主键列
PK_CL_UQ_T_User_UserId
FK
[从表名][主表名][外键列]
CL:clustered;
NC:nonclustered

五.索引
IDX_[CL/NC][UQ][表名称][列名称]
IDX_NC_T_User_UserName_UserType

六.标量函数
FN_[功能类]_[函数名称]
Common,Pat,Treat,Public

七.存储过程
SP_[功能类]_[存储过程名]

八.数据库脚本规范
1.命名规范
DbName_Version_yyyyMMdd_HHmm_作者_简要说明.sql
2.脚本头使用USE,指定使用的数据库.
3.脚本可以重复执行,防御式编程.
4.对象判断SQL(不存在)

IF OBJECT_ID('DBO.TABLENAME','U') IS NULL

IF COL_LENGTH('DBO.TABLENAME','COLUMNAME') IS NULL

主键

IF OBJECT_ID('PK_CL_T_EQ_DEPRECIATION','PK') IS NULL

外键

IF OBJECT_ID('FK_T_EQ_DEPRECIATION_UserId','F') IS NULL

标量函数

IF OBJECT_ID('DBO.FN_FNNAME','FN') IS NULL

存储过程

IF OBJECT_ID('DBO.SP_SPNAME','P') IS NULL

索引

IF NOT EXISTS(SELECT 1 FROM SYS.INDEXES WHERE NAME = 'INDEXNAME')

5.表字段添加方法

IF COL_LENGTH('DBO.TableName','ColumnName') IS NULL
 BEGIN 
	--添加字段和约束,防止生成随机约束后面不好处理
    ALTER TABLE TableName ADD ColumnName Type NOT NULL CONSTRAINT DF_TableName_ColumnName DEFAULT 0;
    EXECUTE sp_addextendedproperty   N'MS_Description','Description',  N'user',   N'dbo',   N'table',   N'TableName',  N'column','ColumnName'
END
GO
--删除约束
IF OBJECT_ID('DF_TableName_ColumnName','D') IS NOT NULL
    ALTER TABLE TableName DROP CONSTRAINT DF_TableName_ColumnName;
GO
--添加默认值
ALTER TABLE TableName ADD DEFAULT 1 FOR ColumnName ;
GO

6.创建存储过程模板.

-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName> 
    -- Add the parameters for the stored procedure here
    <@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>, 
    <@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>
END
GO
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值