美文网首页
数据库规范参考

数据库规范参考

作者: Aweber | 来源:发表于2018-09-14 10:04 被阅读0次

一.数据库对象范围限定
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

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

相关文章

网友评论

      本文标题:数据库规范参考

      本文链接:https://www.haomeiwen.com/subject/kiwngftx.html