數據庫表字段命名規范


摘要:當前研發工作中經常出現因數據庫表、數據庫表字段格式不規則而影響開發進度的問題,在后續開發使用原來數據庫表時,也會因為數據庫表的可讀性不夠高,表字段規則不統一,造成數據查詢,數據使用效率低的問題,所以有必要整理出一套合適的數據庫表字段命名規范來解決優化這些問題。

本文是一篇包含了數據庫命名、數據庫表命名、數據庫表字段命名及SQL語言編碼的規范文檔,針對研發中易產生的問題和常見錯誤做了一個整理和修改,為日后涉及到數據庫相關的研發工作做好准備。

一、數據庫命名規范

   采用26個英文字母(區分大小寫)和0-9的自然數(經常不需要)加上下划線'_'組成,命名簡潔明確,多個單詞用下划線'_'分隔,一個項目一個數據庫,多個項目慎用同一個數據庫

二、數據庫表命名規范

2.1數據表命名規范

(1)采用26個英文字母(區分大小寫)和0-9的自然數(經常不需要)加上下划線'_'組成,命名簡潔明確,多個單詞用下划線'_'分隔

(2)全部小寫命名,禁止出現大寫

(3)禁止使用數據庫關鍵字,如:name,time ,datetime,password等

(4)表名稱不應該取得太長(一般不超過三個英文單詞)

(5)表的名稱一般使用名詞或者動賓短語

(6)用單數形式表示名稱,例如,使用 employee,而不是 employees

   明細表的名稱為:主表的名稱+字符dtl(detail縮寫)

   例如:采購定單的名稱為:po_order,則采購定單的明細表為:po_orderdtl 

(7)表必須填寫描述信息(使用SQL語句建表時)

 

2.2命名規范

① 模塊_+ 功能點  示例:alllive_log   alllive_category

② 功能點  示例:live   message

③ 通用表  示例:all_user

 

2.3待優化命名示例

①冗余:

錯誤示例:yy_alllive_video_recomment    yy_alllive_open_close_log

說明:去除項目名,簡化表名長度,去”yy_”

 

②相同類別表命名存在差異,管理性差

錯誤示例:yy_all_live_category    yy_alllive_comment_user

說明:去除項目名,統一命名規則,均為”yy_alllive_”開頭即可

 

③命名格式存在差異

錯誤示例:yy_showfriend    yy_user_getpoints    yy_live_program_get

說明:去除項目名,統一命名規則,動賓短語分離動賓邏輯順序統一

 

三、數據庫字段命名規范

3.1字段命名規范

(1)采用26個英文字母(區分大小寫)和0-9的自然數(經常不需要)加上下划線'_'組成,命名簡潔明確,多個單詞用下划線'_'分隔

(2)全部小寫命名,禁止出現大寫

(3)字段必須填寫描述信息

(4)禁止使用數據庫關鍵字,如:name,time ,datetime password 等

(5)字段名稱一般采用名詞或動賓短語

(6)采用字段的名稱必須是易於理解,一般不超過三個英文單詞

(7)在命名表的列時,不要重復表的名稱

例如,在名employe的表中避免使用名為employee_lastname的字段

(8)不要在列的名稱中包含數據類型

(9)字段命名使用完整名稱,禁止縮寫

 

3.2命名規范

①名詞  示例:user_id    user_name    sex

②動賓短語  示例:is_friend   is_good

 

3.3待優化命名示例

①大小寫規則不統一

錯誤示例:user_id    houseID

說明:使用統一規則,修改為”user_id”,”house_id”

 

②加下划線規則不統一

錯誤示例:username    userid    isfriend    isgood

說明:使用下划線進行分類,提升可性,方便管理,修改為”user_name”,”user_id”,”is_friend”,”is_good”

 

③字段表示不明確

錯誤示例:uid    pid

說明:使用完整名稱,提高可讀性,修改為”user_id”,”person_id”

 

3.4字段類型規范

(1)所有字段在設計時,除以下數據類型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary 、varbinary外,必須有默認值,字符型的默認值為一個空字符值串’’,數值型的默認值為數值0,邏輯型的默認值為數值0

(2)系統中所有邏輯型中數值0表示為“假”,數值1表示為“真”,datetime、smalldatetime類型的字段沒有默認值,必須為NULL

(3)用盡量少的存儲空間來存儲一個字段的數據

使用int就不要使用varchar、char,

用varchar(16)就不要使varchar(256)

IP地址使用int類型

固定長度的類型最好使用char,例如:郵編(postcode)

能使用tinyint就不要使用smallint,int

最好給每個字段一個默認值,最好不能為null

(4)用合適的字段類型節約空間

字符轉化為數字(能轉化的最好轉化,同樣節約空間、提高查詢性能)

避免使用NULL字段(NULL字段很難查詢優化、NULL字段的索引需要額外空間、NULL字段的復合索引無效)

少用text類型(盡量使用varchar代替text字段)

 

3.5數據庫中每個字段的規范描述 

   (1)盡量遵守第三范式的標准(3NF) 

     表內的每一個值只能被表達一次 

     表內的每一行都應當被唯一的標示 

     表內不應該存儲依賴於其他鍵的非鍵信息

(2)如果字段事實上是與其它表的關鍵字相關聯而未設計為外鍵引用,需建索引

(3)如果字段與其它表的字段相關聯,需建索引

(4)如果字段需做模糊查詢之外的條件查詢,需建索引

(5)除了主關鍵字允許建立簇索引外,其它字段所建索引必須為非簇索引

 

四、SQL語言編碼規范 

4.1大小寫規范 

(1)所有關鍵字必須大寫,如:INSERT、UPDATE、DELETE、SELECT及其子句,IF……ELSE、CASE、DECLARE等

(2)所有函數及其參數中除用戶變量以外的部分必須大寫

(3)在定義變量時用到的數據類型必須小寫

 

4.2注釋 

注釋可以包含在批處理中,在觸發器、存儲過程中包含描述性注釋將大大增加文本的可讀性和可維護性,本規范建議: 

(1)注釋以英文為主,實際應用中,發現以中文注釋的SQL語句版本在英文環境中不可用,為避免后續版本執行過程中發生某些異常錯誤,建議使用英文注釋

(2)注釋盡可能詳細、全面創建每一數據對象前,應具體描述該對象的功能和用途,傳入參數的含義應該有所說明,如果取值范圍確定,也應該一並說明,取值有特定含義的變量(如boolean類型變量),應給出每個值的含義

(3)注釋語法:單行注釋、多行注釋 

單行注釋:注釋前有兩個連字符(--)對變量、條件子句可以采用該類注釋

多行注釋:符號之間的內容為注釋內容,對某項完整的操作建議使用該類注釋

(4)注釋簡潔,同時應描述清晰

(5)函數注釋: 

編寫函數文本--如觸發器、存儲過程以及其他數據對象--時,必須為每個函數增加適當注釋,該注釋以多行注釋為主,主要結構如下: 

CREATE PROCEDURE sp_xxx 

學習時的痛苦是暫時的 未學到的痛苦是終生的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM