數(shù)據(jù)庫規(guī)范參考

一.數(shù)據(jù)庫對象范圍限定
1.表
2.約束[主鍵/外鍵]
3.索引
4.標(biāo)量函數(shù)
5.存儲過程
6.視圖(對外)

二.數(shù)據(jù)庫對象命名總規(guī)范
1.數(shù)據(jù)庫所有元素只能使用字母,數(shù)字和下劃線命名.不允許使用中文.且需自解釋.不能使用中文首字母.
2.命名中的英文單詞以大寫首字母開頭,主體部分為連續(xù)的英文單詞,如果英文名稱過長,可以使用英文簡稱.

三.表
1.命名
T_[功能類]_[表名稱]
功能類.譬如Dict;Treat;Pat
T_Dict_InsuranceType
2.字段
1.字段名無下劃線.譬如UserName
2.以表名稱+Id為編號.譬如UserId,PatId
3.特例:由于底層框架強(qiáng)制約定.
主鍵列名 GUID
院區(qū) Hos_ID
創(chuàng)建時(shí)間 CreateDate
3.字段類型
無法設(shè)置長度類型(BIT,TINYINT,SMALLINT,INT,BIGINT;DATETIME)
滿足存儲且長度最小的類型
可設(shè)置長度類型(CHAR,VARCHAR)
滿足存儲且長度最小的長度,冗余不超過10
不允許列類型為text,ntext,image.
字段全部不能為空,NOT NULL.特例:樹父級Id,空外鍵引用.
每個(gè)表名,字段都有對應(yīng)的說明.

四.約束
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

六.標(biāo)量函數(shù)
FN_[功能類]_[函數(shù)名稱]
Common,Pat,Treat,Public

七.存儲過程
SP_[功能類]_[存儲過程名]

八.數(shù)據(jù)庫腳本規(guī)范
1.命名規(guī)范
DbName_Version_yyyyMMdd_HHmm_作者_(dá)簡要說明.sql
2.腳本頭使用USE,指定使用的數(shù)據(jù)庫.
3.腳本可以重復(fù)執(zhí)行,防御式編程.
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

標(biāo)量函數(shù)

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.創(chuàng)建存儲過程模板.

-- =============================================
-- 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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容