數倉命名規範
1.概述
資料模型是資料管理的分析工具和交流的有力手段;同時,還能夠很好地保證資料的一致性,是實現商務智慧(Business Intelligence)的重要基礎。因此建立、管理一個企業級的資料模型,應該遵循標準的命名和設計規範。
2.資料倉庫命名規範
2.1.命名規範
2.1.1.表屬性規範
2.1.1.1.表名
2.1.1.1.1.ODS層表名
字首為ODS_應用系統名(縮寫)_資料表名 。資料表名稱必須以有特徵含義的單詞或縮寫組成,中間可以用“_”分割,例如:ODS_FUN_CUSTOMERINFO。表名稱不能用雙引號包含,表名長度不超過30個字元。如果ODS設計採用貼源設計,資料表名應與源系統一致。
l系統和應用名規則如下:
n核心 COR
n對公信貸 CLN
n個貸 PLN
n基金 FUN
n票據 TIC
n理財 FIN
n報表 RPT
n……
n如有新系統,按規則新增
2.1.1.1.2.DW事實表表名
字首為DW_主題名(縮寫)_功能描述 。資料表名稱必須以有特徵含義的單詞或縮寫組成,中間可以用“_”分割,例如:DW_ORD_DETAIL。表名稱不能用雙引號包含,表名長度不超過30個字元。
l主題名規則如下:
n訂單 ORD
n營銷活動 MKC
n貸款 LN
n網銀 NET
n客戶 CUS
n……
n如有新主題,按規則新增
l資料表名規則如下:
n基礎表 _BA
n日彙總表 _D
n月彙總表 _M
n歷史累計 _H
n全量載入 _A
n增量載入 _I
2.1.1.1.3.APP應用層表名
字首為APP_主題名(縮寫)_功能描述。資料表名稱必須以有特徵含義的單詞或縮寫組成,中間可以用“_”分割,例如: APP_RPT_DEALER_GOODS。表名稱不能用雙引號包含,表名長度不超過30個字元。
l主題名規則如下:
n報表 RPT
l資料表名規則如下:
參考DW層表名稱規範
2.1.1.1.4.DW/DM維度表表名
字首為D_。資料表名稱必須以有特徵含義的單詞或縮寫組成,中間可以用“_”分割,例如:D_ACCOUNT、D_PUB_DATE。表名稱不能用雙引號包含,表名長度不超過30個字元。
l資料表名規則如下:
n日期維度 D_PUB_DATE
n城市 D_CITY
2.1.1.1.5.元資料表名
字首為M_應用名(縮寫)_功能描述 。資料表名稱必須以有特徵含義的單詞或縮寫組成,中間可以用“_”分割,例如:M_ETL_TASK。表名稱不能用雙引號包含,表名長度不超過30個字元。
l應用名規則如下:
nETL ETL
n報表 RPT
nOLAP分析 OLP
n源系統 SRC
n資料庫 DB
n軟硬體 SHW
n……
n如有新應用,按規則新增
2.1.1.2.表分割槽名
字首為p 。分割槽名必須有特定含義的單詞或字串。
例如 :tbl_pstn_detail 的分割槽p2004100101表示該分割槽儲存 2004100101時段的資料。
2.1.1.3.欄位名
欄位名稱必須用字母開頭,採用有特徵含義的單詞或縮寫,不能用雙引號包含。
2.1.1.4.欄位排列
每個表中的欄位排列也應該遵從相應的規則進行擺放:
- 同類屬性儘量靠攏擺放
例如:“協議”實體中有一組“日期”屬性,包括“開戶日期”、“銷戶日期”、“簽署日期”、“起息日期”、“到期日期”等,可以排列在一起、
- 相關屬性儘量靠攏擺放
例如:“幣種”、“金額”常常一起使用,應排列在一起;
- 重要的和常用的屬性靠前
- 和源系統非常接近的表(特別是一對一的情況),和源系統的屬性順序一致
2.1.1.5.主鍵名
字首為PK_。主鍵名稱應是 字首+表名+構成的欄位名。如果複合主鍵的構成欄位較多,則只包含第一個欄位。表名可以去掉字首。
2.1.1.6.外來鍵名
字首為FK_。外來鍵名稱應是 字首+ 外來鍵表名 + 主鍵表名 + 外來鍵表構成的欄位名。表名可以去掉字首。
2.1.2.索引
2.1.2.1.普通索引
字首為IDX_。索引名稱應是 字首+表名+構成的欄位名。如果複合索引的構成欄位較多,則只包含第一個欄位,並新增序號。表名可以去掉字首。
2.1.2.2.主鍵索引
字首為IDX_PK_。索引名稱應是 字首+表名+構成的主鍵欄位名,在建立表時候用using index指定主鍵索引屬性。
2.1.2.3.唯一索引
字首為IDX_UK_。索引名稱應是 字首+表名+構成的欄位名。
2.1.2.4.外來鍵索引
字首為IDX_FK_。索引名稱應是 字首+表名+構成的外來鍵欄位名。
2.1.2.5.函式索引
字首為IDX_func_。索引名稱應是 字首+表名+構成的特徵表達字元。
2.1.2.6.簇索引
字首為IDX_clu_。索引名稱應是 字首+表名+構成的簇欄位。
2.1.3.檢視
字首為V_。按業務操作命名檢視。
2.1.4.物化檢視
字首為MV_。按業務操作命名實體化檢視。
2.1.5.儲存過程
字首為SP_ 。按業務操作命名儲存過程。
2.1.6.觸發器
字首為Trig_ 。觸發器名應是 字首 + 表名 + 觸發器名。
2.1.7.函式
字首為Func_ 。按業務操作命名函式。
2.1.8.資料包
字首為Pkg_ 。按業務操作集合命名資料包。
2.1.9.序列
字首為Seq_ 。按業務屬性命名。
2.1.10.普通變數
字首為Var_ 。 存放字元、數字、日期型變數。
2.1.11.遊標變數
字首為Cur_ 。存放遊標記錄集。
2.1.12.記錄型變數
字首為Rec_ 。 存放記錄型資料。
2.1.13.表型別變數
字首為Tab_ 。 存放表型別資料。
2.1.14.資料庫鏈接
字首為dbl_ 。 表示分散式資料庫外部連結關係。
2.2.命名
2.2.1.語言
命名應該使用英文單詞,避免使用拼音,特別不應該使用拼音簡寫。命名不允許使用中文或者特殊字元。
英文單詞使用用物件本身意義相對或相近的單詞。選擇最簡單或最通用的單詞。不能使用毫不相干的單詞來命名。
當一個單詞不能表達物件含義時,用片語組合,如果組合太長時,採用用簡或縮寫,縮寫要基本能表達原單詞的意義。
當出現物件名重名時,是不同型別物件時,加型別字首或字尾以示區別。
2.2.2.大小寫
名稱一律小寫,以方便不同資料庫移植,以及避免程式呼叫問題。
2.2.3.單詞分隔
命名的各單詞之間可以使用下劃線進行分隔。
2.2.4.保留字
命名不允許使用SQL保留字。
2.2.5.命名長度
表名、欄位名、檢視名長度應限制在20個字元內(含字首)。
2.2.6.欄位名稱
同一個欄位名在一個數據庫中只能代表一個意思。比如telephone在一個表中代表“電話號碼”的意思,在另外一個表中就不能代表“手機號碼”的意思。
不同的表用於相同內容的欄位應該採用同樣的名稱,欄位型別定義。
例如:
行為名稱 |
行為英文名稱 |
英文縮寫 |
計數 |
Count |
cnt |
金額 |
Amount |
amt |
微信 |
Weixin |
Wx |
成功 |
success |
succ |
支付 |
Pay |
pay |
地址 |
Address |
addr |
訂單 |
Order |
ord |
渠道 |
Channel |
chl |
完成 |
Finish |
Fin |
2.3.資料型別
2.3.1.字元型
固定長度的字串型別採用char,長度不固定的字串型別採用varchar。避免在長度不固定的情況下采用char型別。如果在資料遷移等出現以上情況,則必須使用trim()函式截去字串後的空格。
2.3.2.數字型
數字型欄位儘量採用number型別,要注意精度。
2.3.3.日期和時間
2.3.3.1.系統時間
由資料庫產生的系統時間首選資料庫的日期型,如DATE型別。
2.3.3.2.外部時間
由資料匯入或外部應用程式產生的日期時間型別採用varchar型別,資料格式採用:YYYYMMDDHH24MISS。
2.3.4.大欄位
如無特別需要,避免使用大欄位(blob,clob,long,text,image等)。
2.3.5.唯一鍵
對於數字型唯一鍵值,儘可能用自增產生。