1. 程式人生 > >資料庫命名規範--通用

資料庫命名規範--通用

1.1 基本命名原則

以下基本原則適用於所有資料庫物件命名,如無特別說明則為強制規範。
Ø規範:遵循行業規範
當有相關國家/行業強制性資料結構標準規範存在時,用於儲存某業務資料的業務表在表名命名上原則上應該遵從標準規定,其表中相關欄位的中文名稱(即資料項名稱)若標準規範上有規定的應遵循規定。此外,若標準規範上對資料項的型別、長度有規定的,原則上也應當遵循或保證能直接相容儲存和訪問。
Ø規範:字母全部大寫原則
所有資料庫物件命名字母全部大寫。Oracle對大小寫不敏感,但是有些資料庫對大小寫敏感,統一大寫有助於在多個數據庫間移植
Ø規範:字元範圍原則
只能使用英文字母、下劃線、數字進行命名,首位字元必須是英文字母。
Ø規範:分段命名原則

命名中多個單詞間採用下劃線分隔,以便閱讀同時方便某些工具對資料庫物件的對映。如XXX_XXX_XXX,但不限於三段式
Ø規範:勿用保留詞
資料庫物件命名不能直接使用資料庫保留關鍵字,但分段中可以使用。如USER不能用於表名、列名等,但是USER_NAME可以用於列名,USER_INFO也可以用於表名。詳細保留關鍵字請參見最後第6.1節,保留字。
Ø規範:簡單命名原則
命名儘可能簡單,避免太長的命名,儘量使用縮寫形式,但是縮寫也要能夠表達命名的含義。資料庫物件命名總長度不得超過30位元組,以免超過資料庫命名長度限制(Oracle有30的限制,Mysql為64,SQL SERVER也是64)。建議每個單詞分段長度不要超過6位。
Ø建議:富有含義原則

資料庫物件命名通常用能表示其內容或者含義的英文單詞或其縮寫表示也可用其中文名稱各字詞的拼音首寫字母或者拼音簡寫方式表示。數字應儘量避免使用。
此外在公安行業,對於業務表上表示業務屬性的欄位名(即欄位英文名)的命名,業內普遍預設的規範通常是以其中文名稱的每個漢字拼音首字母組成。考慮行業習慣和通常思路建議用:建議用於表示使用者業務應用屬性的資料項欄位名採用中文拼音首字母命名,對於其它純粹用於應用系統內部使用的則儘量使用英文單詞進行命名。另外,當按中文名稱拼音首字母組合出來後出現與其它欄位名重名時,則將最後命名的這個資料項的最後一個漢字用其完整拼音字母代替。
Ø建議:同義性原則
對於同一含義儘量使用相同的單詞命名,不管使用英文單詞、英文縮寫還是拼音首字母,以免引起誤解。如TELEPNHOE的A表中表示固定電話號碼,在B表中就不應該用於表示行動電話號碼。儘量避免同一單詞表示多種含義的情況。
Ø建議:命名方式一致原則

在一個系統、一個專案中儘量採用一致的命名方式,都採用英文單詞或者拼音首字母。尤其要避免在一個物件命名中同時採用英文單詞和拼音首字母。如確實需要在一個專案中採用兩種命名方式,考慮系統功能設計相關表(開發)使用英文單詞命名,業務相關的表(實施)使用拼音首字母。
Ø建議:擴充套件性原則
各系統或者專案在遵循本規範的基礎上可以根據需要制定更明確的規範細則,以滿足專案管理需要。如對模組進行統一命名,然後用於表名的字首。建議每個系統在啟動開發時建立資料字典,管理命名中使用的英文單詞、英文單詞縮寫、拼音首字母縮寫等,對用於命名的單詞進行統一管理。

1.2 命名字首規範

Ø規範:以下物件命名採用固定字首進行命名,字首表示資料庫物件的型別,字首程式碼規範如下:

1.3 表和列Tables and Table Columns

1.3.1 表
Ø規範:表的命名以T_開頭
說明:公司一直以來對資訊程式碼表特殊規範以BM_(表碼)或者DM_(程式碼)開頭,考慮歷史特殊情況資訊程式碼類表命名方式可以沿用歷史習慣。表碼錶的規範名稱為資訊程式碼表,因此資訊程式碼表以後將統一使用DM_開頭。
Ø規範:表名採用多段式命名,各單詞間用下劃線分隔;
Ø規範:表名只允許用英文字母、下劃線、數字進行命名,不允許用中文或者其他符號;
Ø規範:表名全部字母大寫;
Ø規範:根據歷史習慣各系統常用表類字首作如下約定


Ø建議:表名也用於相關索引、分割槽、分割槽表空間、約束、主鍵等命名,因此為了避免相關物件命名長度超過限制,建議表名長度不要超過20。
Ø建議:表的命名方式建議採用T_MOUDLE_ENTITY方式。MOUDLE表示資料庫物件所屬的系統、模組名或者主題分類。ENTITY表示目的表代表的實體名稱。MOUDLE 只能由一個單片語成,ENTITY可以根據需要有多個單片語成。
Ø建議:命名時應儘可能地使名稱能夠清晰準確表達物件的內容,儘可能使用能代表其含義的英文單詞、英文單詞縮寫,特殊情況也可採用拼音首字母

示例:T_UserInfo、USER_INFO、UserInfo、T_使用者資訊、TB_USER_INFO、TBL_USER_INFO、T$USER$INFO、等都是違反本規範的,正確命名為T_USER_INFO。