不會資料庫命名的看過來啦!

不會資料庫命名的看過來啦!

背景及目的

資料庫中各類對象的命名必須能夠簡單、清晰地體現對象的正確含義,目的在於方便與他人的溝通。為提高命名的規範性,實現統一的命名標準,我們特制定本規範。

1、通用規則

1.1 所有的命名中,只能使用英文字母、數字、下劃線,且單詞之間必須以下劃線作為分隔符。如:customer_name

1.2 命名以英文單片語成,不允許使用漢語拼音。

1.3 命名中不允許出現ORACLE資料庫中的關鍵字(Reserved Word)。

如:user、remark等單詞不允許使用。Oracle關鍵字可從v$reserved_words中查詢。

1.4 為避免出現大小寫敏感問題,禁止使用雙引號將對象引用。

如,不允許定義這樣的帶雙引號的欄位名:"user"

1.5 不超過30位的對象命名不用進行縮寫。對於名稱超過30位的,可對其中的個別單詞縮寫。單詞縮寫必須能夠完整表達原有英文全稱的含義。縮寫規則如下:

  • 縮寫原則:
  • 包含四個或四個以下字元的單詞,可以不必縮寫;
  • 所有的縮寫必須唯一,不能有多義;
  • 一個單詞的縮寫必須以該單詞的首字母開頭;
  • 縮寫中不能包含數字或特殊字元;
  • 縮寫應當從命名右側的單詞開始,自右向左地進行縮寫,直到滿足所需的長度為止。
  • 縮寫方法:(按照下述步驟逐一來縮寫)
  • 查看公司現有的單詞縮寫列表(見下),看看是否已存在該單詞縮寫;
  • 不管該單詞的首字母是母音還是輔音,都以它作為縮寫的首字母;
  • 如果該單詞中有兩個連續的相同輔音字母,則只取其一;
  • 如果該單詞以兩個連續的相同母音字母結尾,則這兩個母音字母都保留;
  • 然後去掉單詞中剩下的其他母音字母;
  • 如果單詞中包含"CK"這樣的字母組合,則去掉字母C,保留字母K。
  • 舉例1:單詞Doorbell
  • 在現有單詞縮寫列表中沒有Doorbell的縮寫;
  • 首字母d需要保留,並作為縮寫的首字母;
  • 兩個連續的輔音字母l,去掉其中一個,只保留一個。得到doorbel;
  • 這個單詞沒有以連續的母音字母結尾;
  • 其他的母音字母都去掉。得到drbl;
  • 這個單詞沒有包含"ck"字母組合。

最終Doorbell這個單詞的縮寫就是drbl。

  • 舉例2:單詞Entitlement
  • 在現有單詞縮寫列表中沒有Entitlement的縮寫;
  • 首字母e保留(雖然它是一個母音字母);
  • 這個單詞沒有連續的兩個輔音字母;
  • 這個單詞沒有以連續的母音字母結尾;
  • 其他的母音字母都去掉。得到enttlmnt。
  • 這個而單詞沒有包含"ck"字母組合。

最終Entitlement這個單詞的縮寫就是enttlmnt。

  • 舉例3:單詞Grantee
  • 在現有單詞縮寫列表中沒有Grantee的縮寫;
  • 首字母g保留;
  • 這個單詞沒有兩個連續的輔音字母;
  • 結尾的兩個連續的相同母音字母ee都保留。得到grantee;
  • 去掉剩下的母音字母。得到grntee;
  • 這個單詞沒有包含"ck"字母組合。

最終Grantee這個單詞的縮寫就是grntee。

2. DB 命名規範

2.1 DB SID以所屬系統來命名,長度不能超過6位,如果超過6位,需要進行縮寫。

3. Table 命名規範

3.1 表的命名需要能明確表達實體數據對象的業務意義。可使用系統簡稱或者功能模塊。

3.2 同一個系統或模塊中,表的命名以相同的2-3個字元開頭。對於基表,統一以BSE開頭。例如:同屬於新契約模塊的表,可以都以nbs_開頭。

3.3 禁止在命名中使用通用的前後綴,如tbl,db等。

3.4 英文單詞不要用複數形式,且只能使用名詞,不能使用動詞。

因為名詞分為可數名詞與不可數名詞,對於不可數名詞是沒有複數形式的。

例如:可數名詞box不能寫為boxes;不可數名詞data就只能寫成data。

3.5 同一個系統或模塊中,有業務關係的一組表名的前綴也要相同,以避免衝突。

例如:保單與批單都有狀態這個欄位,為了區分不同類型的狀態,對於保單狀態的基表我們可以與保單模塊的表的前綴相同,命名為policy_status;對於批單狀態的基表我們可以與批單模塊的表的前綴相同,命名為pos_status。

4. Column 命名規則

4.1 欄位名需能明確表達該欄位數據的業務意義,且只能使用名詞,不能使用動詞。

欄位的命名應能使不熟悉這個系統的人能大概理解這個欄位數據的業務含義。

在定義一個欄位的命名時,可以參考下述的方法來命名:

每個欄位名稱可以由四類術語拼接而成:對象類術語(object class terms)、屬性術語(property terms)、陳述性術語(representation terms),以及陳述性術語修飾詞(representationterm modifiers)。

如下圖的形式:

例如:我們描述一個叫做"費用預算的月度合計金額"的對象。我們可以將該對象命名為Cost Budget MonthlyTotal Amount。

其中Cost Budget就是對象類術語,它描述了這個對象所屬的一個抽象實體類"費用預算";Total就是屬性術語,它描述了"費用預算"這個對象所具有的一個屬性--合計值;Amount就是陳述性術語,它是一個名詞,它描述了"費用預算"這個對象的一個子類—金額;Monthly就是陳述性術語修飾詞,它是一個形容詞,它描述了是月度費用,而不是年度費用。

這樣我們就很好地定義"費用預算的月度合計金額"這個對象的命名,然後我們再根據長度限制等對其進行適當的縮寫即可。

4.2 對於不同含義的欄位,應盡量避免使用相同的名字。

如果是有外鍵關係的欄位或者是在不同表中表示同樣含義的欄位,則需使用同一個欄位名。但一些特別的情況下例外,如:

1) 存在自關聯關係的欄位;

2) 同一個表中有兩個或者兩個以上的欄位關聯到另一個表的同一個欄位。

4.3 Date 類型的欄位, 需要以"date_"作為前綴或者"_date"做為後綴。Boolean類型的欄位,需要以"is_"作為前綴。

4.4 主鍵欄位的命名不能包含任何業務含義。命名規則為:"id_""表名"。

5. 視圖命名規範

5.1 本地視圖命名方式為:"視圖名" "_VW",其中視圖名命名規則與表命名規則一樣。

敏感數據屏蔽視圖的命名方式為:"視圖名" "_PV" 其中視圖名命名規則與表命名規則一樣。遠程視圖的命名方式為:"視圖名" "_RV", 其中視圖名命名規則與表命名規則一樣。

6. 約束命名規範

6.1 所有約束必須有約束名,非空約束除外。

約束按如下規則命名:

主鍵約束:"PK_""表名"

外鍵約束:"FK_""子表名_" "子表欄位名"

唯一約束:"UK_""表名_" "欄位名"

值檢查約束:"CK_""表名_" "欄位名"

7. Index命名規範

7.1 索引的命名格式為:"IX_" "欄位名或欄位名組合"。

8. 物化視圖命名規範

8.1 物化視圖必須以"_MV"結尾。格式為:"表名_" 功能描述"_MV"。

根據實際需要,物化視圖命名中的功能描述部分可以省略。

例如:CAL_MONTH_SALES_SUM_MV

9. 分區表命名規範

9.1 分區表和欄位的命名規範與普通表命名規範相同,分區索引的命名規範與普通索引的命名規範相同。

9.2 必須為表分區命名。

表分區的命名格式為:"表名_" 分區特徵 "_pt"

索引分區的命名格式為:"索引名_" 分區特徵 "_pi"

例如:在表policy_base_info上按created_date欄位來分區,則分區名稱可以為policy_base_info_2001_pt、policy_base_info_2002_pt等;

在表endorse_info上按department_code欄位來分區,則分區名稱可以為endorse_info_sz_pt、endorse_info_sh_pt等;

例如:在表policy_base_info上將索引pbi_created_date進行分區,其分區名稱可以為:pbi_created_date_2001_pi、pbi_created_date_2002_pi等。

10. Context命名規範

10.1 Context的命名規範與普通表命名規範相同。

11. Package命名規範

11.1 Package的命名規範與普通表命名規範相同。

12. Sequence命名規範

12.1 Sequence的命名規範與普通表命名規範相同。

13. Synonym命名規範

13.1 同義詞名稱必須與其指向的對象名稱同名。

例如:TLOANDATA用戶下有一表l_test_table,則其同義詞也應命名為l_test_table。

14. Trigger命名規範

14.1 For each row行級的trigger命名為: "建trigger的表名_""後綴",

statement語句級的trigger命名為: "建trigger的表名_" "s" "後綴"。

可選的後綴如下表:

歡迎關注公眾號:創保網IT技術開發匯

weixin.qq.com/r/3ihpcXX (二維碼自動識別)

推薦閱讀:

Python徒手實現識別手寫數字—簡易圖片資料庫
HBase 資料庫學習筆記
企名片-6.13日國內外融資事件清單(42筆)
"資料庫" vs. "數據倉庫": 區別與聯繫
資料庫原理

TAG:MySQL | 資料庫 | MongoDB |