分段式的
1.1 基本命名原則
以下基本原則適用于所有數(shù)據(jù)庫(kù)對(duì)象命名嗡贺,如無(wú)特別說(shuō)明則為強(qiáng)制規(guī)范。
?規(guī)范:遵循行業(yè)規(guī)范
當(dāng)有相關(guān)國(guó)家/行業(yè)強(qiáng)制性數(shù)據(jù)結(jié)構(gòu)標(biāo)準(zhǔn)規(guī)范存在時(shí)鞍帝,用于存儲(chǔ)某業(yè)務(wù)數(shù)據(jù)的業(yè)務(wù)表在表名命名上原則上應(yīng)該遵從標(biāo)準(zhǔn)規(guī)定诫睬,其表中相關(guān)字段的中文名稱(即數(shù)據(jù)項(xiàng)名稱)若標(biāo)準(zhǔn)規(guī)范上有規(guī)定的應(yīng)遵循規(guī)定。此外帕涌,若標(biāo)準(zhǔn)規(guī)范上對(duì)數(shù)據(jù)項(xiàng)的類型摄凡、長(zhǎng)度有規(guī)定的续徽,原則上也應(yīng)當(dāng)遵循或保證能直接兼容保存和訪問(wèn)。
?規(guī)范:字母全部大寫原則
所有數(shù)據(jù)庫(kù)對(duì)象命名字母全部大寫亲澡。Oracle對(duì)大小寫不敏感钦扭,但是有些數(shù)據(jù)庫(kù)對(duì)大小寫敏感,統(tǒng)一大寫有助于在多個(gè)數(shù)據(jù)庫(kù)間移植床绪。
?規(guī)范:字符范圍原則
只能使用英文字母客情、下劃線、數(shù)字進(jìn)行命名癞己,首位字符必須是英文字母膀斋。
?規(guī)范:分段命名原則
命名中多個(gè)單詞間采用下劃線分隔,以便閱讀同時(shí)方便某些工具對(duì)數(shù)據(jù)庫(kù)對(duì)象的映射痹雅。如XXX_XXX_XXX仰担,但不限于三段式。
?規(guī)范:勿用保留詞
數(shù)據(jù)庫(kù)對(duì)象命名不能直接使用數(shù)據(jù)庫(kù)保留關(guān)鍵字绩社,但分段中可以使用摔蓝。如USER不能用于表名、列名等愉耙,但是USER_NAME可以用于列名贮尉,USER_INFO也可以用于表名。詳細(xì)保留關(guān)鍵字請(qǐng)參見(jiàn)最后第6.1節(jié)朴沿,保留字绘盟。
?規(guī)范:簡(jiǎn)單命名原則
命名盡可能簡(jiǎn)單,避免太長(zhǎng)的命名悯仙,盡量使用縮寫形式龄毡,但是縮寫也要能夠表達(dá)命名的含義。數(shù)據(jù)庫(kù)對(duì)象命名總長(zhǎng)度不得超過(guò)30字節(jié)锡垄,以免超過(guò)數(shù)據(jù)庫(kù)命名長(zhǎng)度限制(Oracle有30的限制沦零,Mysql為64,SQL SERVER也是64)货岭。建議每個(gè)單詞分段長(zhǎng)度不要超過(guò)6位路操。
?建議:富有含義原則
數(shù)據(jù)庫(kù)對(duì)象命名通常用能表示其內(nèi)容或者含義的英文單詞或其縮寫表示也可用其中文名稱各字詞的拼音首寫字母或者拼音簡(jiǎn)寫方式表示。數(shù)字應(yīng)盡量避免使用千贯。
此外在公安行業(yè)屯仗,對(duì)于業(yè)務(wù)表上表示業(yè)務(wù)屬性的字段名(即字段英文名)的命名,業(yè)內(nèi)普遍默認(rèn)的規(guī)范通常是以其中文名稱的每個(gè)漢字拼音首字母組成搔谴】啵考慮行業(yè)習(xí)慣和通常思路建議用:建議用于表示用戶業(yè)務(wù)應(yīng)用屬性的數(shù)據(jù)項(xiàng)字段名采用中文拼音首字母命名,對(duì)于其它純粹用于應(yīng)用系統(tǒng)內(nèi)部使用的則盡量使用英文單詞進(jìn)行命名。另外峰弹,當(dāng)按中文名稱拼音首字母組合出來(lái)后出現(xiàn)與其它字段名重名時(shí)店量,則將最后命名的這個(gè)數(shù)據(jù)項(xiàng)的最后一個(gè)漢字用其完整拼音字母代替。
?建議:同義性原則
對(duì)于同一含義盡量使用相同的單詞命名鞠呈,不管使用英文單詞融师、英文縮寫還是拼音首字母,以免引起誤解蚁吝。如TELEPNHOE的A表中表示固定電話號(hào)碼旱爆,在B表中就不應(yīng)該用于表示移動(dòng)電話號(hào)碼。盡量避免同一單詞表示多種含義的情況窘茁。
?建議:命名方式一致原則
在一個(gè)系統(tǒng)怀伦、一個(gè)項(xiàng)目中盡量采用一致的命名方式,都采用英文單詞或者拼音首字母庙曙。尤其要避免在一個(gè)對(duì)象命名中同時(shí)采用英文單詞和拼音首字母。如確實(shí)需要在一個(gè)項(xiàng)目中采用兩種命名方式浩淘,考慮系統(tǒng)功能設(shè)計(jì)相關(guān)表(開發(fā))使用英文單詞命名捌朴,業(yè)務(wù)相關(guān)的表(實(shí)施)使用拼音首字母。
?建議:擴(kuò)展性原則
各系統(tǒng)或者項(xiàng)目在遵循本規(guī)范的基礎(chǔ)上可以根據(jù)需要制定更明確的規(guī)范細(xì)則张抄,以滿足項(xiàng)目管理需要砂蔽。如對(duì)模塊進(jìn)行統(tǒng)一命名,然后用于表名的前綴署惯。建議每個(gè)系統(tǒng)在啟動(dòng)開發(fā)時(shí)建立數(shù)據(jù)字典左驾,管理命名中使用的英文單詞、英文單詞縮寫极谊、拼音首字母縮寫等诡右,對(duì)用于命名的單詞進(jìn)行統(tǒng)一管理。
1.2 命名前綴規(guī)范
?規(guī)范:以下對(duì)象命名采用固定前綴進(jìn)行命名轻猖,前綴表示數(shù)據(jù)庫(kù)對(duì)象的類型帆吻,前綴代碼規(guī)范如下:
1.3 表和列Tables and Table Columns
1.3.1 表
?規(guī)范:表的命名以T_開頭;
說(shuō)明:公司一直以來(lái)對(duì)信息代碼表特殊規(guī)范以BM_(表碼)或者DM_(代碼)開頭咙边,考慮歷史特殊情況信息代碼類表命名方式可以沿用歷史習(xí)慣猜煮。表碼表的規(guī)范名稱為信息代碼表,因此信息代碼表以后將統(tǒng)一使用DM_開頭败许。
?規(guī)范:表名采用多段式命名王带,各單詞間用下劃線分隔;
?規(guī)范:表名只允許用英文字母市殷、下劃線愕撰、數(shù)字進(jìn)行命名,不允許用中文或者其他符號(hào);
?規(guī)范:表名全部字母大寫盟戏;
?規(guī)范:根據(jù)歷史習(xí)慣各系統(tǒng)常用表類前綴作如下約定
?建議:表名也用于相關(guān)索引绪妹、分區(qū)、分區(qū)表空間柿究、約束邮旷、主鍵等命名,因此為了避免相關(guān)對(duì)象命名長(zhǎng)度超過(guò)限制蝇摸,建議表名長(zhǎng)度不要超過(guò)20婶肩。
?建議:表的命名方式建議采用T_MOUDLE_ENTITY方式。MOUDLE表示數(shù)據(jù)庫(kù)對(duì)象所屬的系統(tǒng)貌夕、模塊名或者主題分類律歼。ENTITY表示目的表代表的實(shí)體名稱。MOUDLE 只能由一個(gè)單詞組成啡专,ENTITY可以根據(jù)需要有多個(gè)單詞組成险毁。
?建議:命名時(shí)應(yīng)盡可能地使名稱能夠清晰準(zhǔn)確表達(dá)對(duì)象的內(nèi)容,盡可能使用能代表其含義的英文單詞们童、英文單詞縮寫畔况,特殊情況也可采用拼音首字母。
示例:T_UserInfo慧库、USER_INFO跷跪、UserInfo、T_用戶信息齐板、TB_USER_INFO吵瞻、TBL_USER_INFO、TINFO甘磨、等都是違反本規(guī)范的橡羞,正確命名為T_USER_INFO。
1.3.2 列
?規(guī)范:列名無(wú)需使用前綴济舆,如使用數(shù)據(jù)類型編碼作為前綴尉姨;
?規(guī)范:列名只允許用英文字母、下劃線吗冤、數(shù)字進(jìn)行命名又厉,不允許用中文或者其他符號(hào);
?規(guī)范:列名字母全部大寫椎瘟;
?規(guī)范:列名采用多段式命名時(shí)覆致,各單詞間用下劃線分隔;
?規(guī)范:列名不能直接使用數(shù)據(jù)庫(kù)保留字肺蔚;
?建議:列的命名應(yīng)盡可能地采用簡(jiǎn)潔明了的列名以準(zhǔn)確描述列的內(nèi)容含義, 根據(jù)需要可以一個(gè)單詞或者多個(gè)單詞進(jìn)行命名煌妈;
?建議:日期類型字段推薦以“_DATE”結(jié)尾的名字命名,時(shí)間類型的字段推薦以“_TIME”結(jié)尾的名字命名。
?建議:主鍵列命名為“ID”或者以 “_ID”為后綴進(jìn)行命名璧诵。對(duì)于需要在其他表中引用的主鍵字段以“_ID”后綴方式命名汰蜘,普通表主鍵無(wú)需加后綴。如基礎(chǔ)信息表的主鍵一般應(yīng)命名為“ENTITIE_ID”方式之宿,而通常業(yè)務(wù)數(shù)據(jù)明細(xì)表的主鍵則直接命名為“ID”族操。
示例:
1. 正確命名:USER_NAME、AUDIT_TIME比被、AUDIT_USER
2. 錯(cuò)誤命名:USERNAME色难、UserName、C_USER_NAME等缀、人員姓名枷莉,違反規(guī)范。
3. 錯(cuò)誤命名:COMMENT尺迂、AUDIT笤妙,違反保留字
1.4 視圖 Views
?規(guī)范:視圖的命名以VW_開頭
?規(guī)范:視圖其他命名規(guī)范與表名相同
?建議:視圖的列名一般與基表一致,但是根據(jù)需要可以與基表的列名不同噪裕。如接口視圖一般根據(jù)接口需求進(jìn)行命名蹲盘。
1.5 索引Indexes
?規(guī)范:普通索引名稱以IDX_為前綴,約束性索引命名參見(jiàn)約束章節(jié)說(shuō)明州疾。不區(qū)分B-TREE索引辜限,位圖索引皇拣、函數(shù)索引等類型严蓖。
?建議:?jiǎn)巫侄嗡饕拿绞綖椋篒DX_表名_字段名,表名無(wú)須前綴氧急,命名長(zhǎng)度太長(zhǎng)時(shí)表名和字段名可以考慮縮寫颗胡。
?建議:多字段聯(lián)合索引命名方式同單字段,考慮長(zhǎng)度限制吩坝,可以只列出主要字段名或者采用縮寫方式描述索引字段毒姨。
示例:
1. 錯(cuò)誤命名:IDX_USER_INFO,沒(méi)有給出字段名
2. 錯(cuò)誤命名:B_USER_INFO_DEPT_CODE钉寝,前綴錯(cuò)誤弧呐。
1.6 表空間 Tablespace
?規(guī)范:表空間名以TS_開頭
?建議:公用(非分區(qū)表專用)表空間命名規(guī)范為:TS_系統(tǒng)名類型名。類型分為:數(shù)據(jù)DATA,索引INDX嵌纲,也可以根據(jù)需要增加其他分類俘枫。系統(tǒng)名一般與系統(tǒng)主用戶名一致,如門戶系統(tǒng)為PORTAL逮走。
?建議:分區(qū)表專用表空間命名規(guī)范為:TS表名_分區(qū)編號(hào)鸠蚪。表名可以不用前綴,分區(qū)編號(hào)盡量使用能夠表示分區(qū)范圍的編號(hào)。如按年分區(qū)可以用2004表示2004年的分區(qū)茅信。
示例:
1. 正確命名:TS_PORTAL_DATA盾舌、TS_PORTAL_INDX分別表示門戶系統(tǒng)的數(shù)據(jù)表空間和索引表空間。
2. 錯(cuò)誤命名:PORTAL_DATA(無(wú)前綴)蘸鲸、TS_Portal_indx(大小寫)
1.7 分區(qū)Partitions
?建議:分區(qū)的命名規(guī)范為為PT_表名/索引名_Pn妖谴。其中,TNAME是指分區(qū)表或分區(qū)索引的名稱棚贾,n是用于區(qū)分不同分區(qū)的唯一識(shí)別標(biāo)志窖维。如果分區(qū)表是以年份的不同進(jìn)行分區(qū),則n為所代表的年份妙痹。
1.8 用戶铸史、模式 Scheme
?規(guī)范:數(shù)據(jù)庫(kù)用戶采用一個(gè)代表系統(tǒng)名稱含義的英文單詞或者拼音首字母進(jìn)行命名,無(wú)前綴怯伊。
?規(guī)范:不得使用數(shù)據(jù)庫(kù)自動(dòng)創(chuàng)建的用戶模式琳轿,如SYSTEM、SYS耿芹、ROOT等崭篡。
?建議:創(chuàng)建數(shù)據(jù)庫(kù)用戶時(shí)一般不要授予DBA權(quán)限。
1.9 完整性約束Integrity Constraints
1.9.1 主鍵Primary Keys
?建議:主鍵約束的命名格式為PK_表名吧秕,表名不帶前綴琉闪。如采用字段后加PRIMARY KEY方式添加主鍵則無(wú)需命名,由數(shù)據(jù)庫(kù)自動(dòng)命名砸彬。
示例:
1. 表T_SYS_MENU的主鍵約束命名為PK_SYS_MENU颠毙。
1.9.2 外鍵Foreign Keys
?建議:外鍵約束的命名格式為FK_表名字段名,表名不用前綴砂碉,字段名較長(zhǎng)時(shí)可以縮寫蛀蜜。
1.9.3 唯一關(guān)鍵字約束Unique Keys
建議:唯一關(guān)鍵字約束命名規(guī)范為UK表名,表名可以不帶前綴增蹭。一般情況不會(huì)出現(xiàn)一個(gè)表除了主鍵外還有多個(gè)唯一約束的情況滴某,確實(shí)需要時(shí)可以命名為UK_表名n,n為索引區(qū)分標(biāo)識(shí)可以是字段名或者序號(hào)滋迈。
1.9.4 其他約束Other Constraints
建議:CHECK約束的命名格式為CK表名_字段名霎奢,表名可以不帶前綴,名字太長(zhǎng)時(shí)表名和字段名可以根據(jù)需要縮寫饼灿。
1.10 同義詞Synonyms
建議:同義詞的目的是用于方便對(duì)其他用戶或者數(shù)據(jù)庫(kù)的對(duì)象的使用幕侠,因此同義詞在命名時(shí),一般與原數(shù)據(jù)對(duì)象名稱相同赔退,如需要前綴可采用SYN_橙依。
1.11 序列號(hào)Sequences
?規(guī)范:序列號(hào)的命名應(yīng)以SEQ_開頭
?規(guī)范:序列號(hào)命名格式為SEQ_主鍵列名或者SEQ_表名证舟。前者適用于主鍵列用有含義字母進(jìn)行命名的,后者適用于直接用ID命名主鍵的情況窗骑。表名可以不用前綴女责。
示例:
1. 正確命名:SEQ_ORDER_NO用于訂單表頭主鍵列ORDER_NO的序列號(hào),SEQ_ORDER_DETAIL用于訂單明細(xì)表主鍵列ID的序列號(hào)创译。
2. 錯(cuò)誤命名:SQ_ORDER_NO抵知、ORDER_NO、SEQ_order_no
1.12 包Packages
?規(guī)范:包的命名以PKG_開頭
?建議:包的命名格式PKG_MOUDLE软族,MOUDLE用代表模塊或者功能組的名字進(jìn)行命名刷喜。建議在有可能的情況下盡量使用包。
示例:
1. 正確命名:PKG_REPORT表示報(bào)表模塊的包名
2. 錯(cuò)誤命名:PK_REPORT立砸,PK_前綴用于主鍵掖疮。REPORT_PKG,應(yīng)使用前綴方式命名而不是后綴颗祝。Pkg_report浊闪,大小寫不符合規(guī)范。
1.13 函數(shù)Functions
?規(guī)范:函數(shù)命名以F_開頭
?建議:包中的函數(shù)的命名規(guī)范為F_NAME螺戳,NAME表示相應(yīng)的功能用途描述搁宾;所屬的模塊或者功能組已經(jīng)在函數(shù)所引用的包中指出。
? 建議:獨(dú)立的函數(shù)的命名規(guī)范為F_MODULE_ NAME倔幼,MOUDLE可用于指明所屬的模塊的名稱或者功能組盖腿。對(duì)于基本功能函數(shù),MOUDLE_可以不需要损同。
1.14 存儲(chǔ)過(guò)程Procedures
1. 規(guī)范:除了前綴改為“SP_”,其余與函數(shù)相同翩腐。
1.15 參數(shù)Parameters、變量Variables
2.規(guī)范:輸入函數(shù)命名規(guī)范為P_NAME
3.規(guī)范:普通類型變量命名規(guī)范為V_NAME揖庄,如數(shù)字栗菜、字符串欠雌、日期等蹄梢。CURSOR類型變量使用CUR_作為前綴。隱式游標(biāo)變量富俄、記錄類型變量以及對(duì)象類型變量按普通變量規(guī)范禁炒。
4.規(guī)范:輸出參數(shù)命名規(guī)范為O_NAME,輸出參數(shù)放在參數(shù)列表最后霍比。
5. 建議:命名規(guī)范中的NAME部分應(yīng)能清楚表示變量或者參數(shù)的含義幕袱,以提高代碼可讀性。避免使用V_1悠瞬、V_M们豌、P_1涯捻、P_N等無(wú)法表達(dá)具體含義的參數(shù)或者變量命名。
示例:
1\. 正確變量命名:
DECLARE
V_ORDER_DATE CHAR(8)望迎;--訂單日期
V_ORDER_NO NUMBER(16)障癌;--訂單號(hào)
CURSOR CUR_ORDER_LIST IS SELECT ……;
2\. 錯(cuò)誤變量命名:
DECLARE
ORDER_DATE CHAR(8);--沒(méi)有規(guī)定前綴
ORDER_NO NUMBER(16); --沒(méi)有規(guī)定前綴
v_order_detail_id number(16);--大小寫不規(guī)范
3\. 正確參數(shù)命名:
CREATE PROCEDURE P_NAME(
P_USER_ID VARCHAR2,--用戶編號(hào)
O_ORDER_COUNT OUT NUMBER—輸出訂單數(shù)
) AS ……
4\. 錯(cuò)誤參數(shù)命名:
CREATE PROCEDURE P_NAME(
USER_ID VARCHAR2,--前綴不規(guī)范
P_dept_code VARCHAR,--大小寫錯(cuò)誤
P_2 OUT NUMBER—前綴不規(guī)范辩尊,命名沒(méi)有含義
) AS ……
1.16 觸發(fā)器 Triggers
規(guī)范:觸發(fā)器的命名規(guī)范為:TRG_表名_觸發(fā)器類型涛浙。表名不帶前綴,觸發(fā)器的類型由觸發(fā)時(shí)機(jī)和觸發(fā)動(dòng)作組成:‘B’表示前觸發(fā)摄欲,‘A’表示后觸發(fā)轿亮,‘INSERT’‘UPDATE’‘DELETE’描述觸發(fā)動(dòng)作。
示例:
1.正確命名:針對(duì)業(yè)務(wù)系統(tǒng)繳費(fèi)表(前觸發(fā))的觸發(fā)器的命名為TRG_BS_CHARGE_BINSERT胸墙。
2.錯(cuò)誤命名:TRG_BS_CHARGE ,無(wú)規(guī)定后綴我注、BS_CHARGE_BINSERT,無(wú)規(guī)定前綴、TrgBsCharge,違法大小寫規(guī)定和分段命名原則迟隅;