Java開發(fā) 數(shù)據(jù)庫建表規(guī)約

2021-04-28 16:17 更新

\1. 【強制】表達是與否概念的字段,必須使用 is_xxx 的方式命名,數(shù)據(jù)類型是 unsigned tinyint

(1 表示是,0 表示否)。

說明:任何字段如果為非負數(shù),必須是 unsigned。

注意:POJO 類中的任何布爾類型的變量,都不要加 is 前綴,所以,需要在<resultMap>設(shè)置從 is_xxx 到

Xxx 的映射關(guān)系。數(shù)據(jù)庫表示是與否的值,使用 tinyint 類型,堅持 is_xxx 的命名方式是為了明確其取值含義與取值范圍。

正例:表達邏輯刪除的字段名 is_deleted,1 表示刪除,0 表示未刪除。

\2. 【強制】表名、字段名必須使用小寫字母或數(shù)字,禁止出現(xiàn)數(shù)字開頭,禁止兩個下劃線中間只出現(xiàn)數(shù)字。數(shù)據(jù)庫字段名的修改代價很大,因為無法進行預(yù)發(fā)布,所以字段名稱需要慎重考慮。

說明:MySQL 在 Windows 下不區(qū)分大小寫,但在 Linux 下默認是區(qū)分大小寫。因此,數(shù)據(jù)庫名、表名、字段名,都不允許出現(xiàn)任何大寫字母,避免節(jié)外生枝。

正例:aliyun_admin,rdc_config,level3_name

反例:AliyunAdmin,rdcConfig,level_3_name

\3. 【強制】表名不使用復(fù)數(shù)名詞。

說明:表名應(yīng)該僅僅表示表里面的實體內(nèi)容,不應(yīng)該表示實體數(shù)量,對應(yīng)于 DO 類名也是單數(shù)形式,符合表達習(xí)慣。

\4. 【強制】禁用保留字,如 desc、range、match、delayed 等,請參考 MySQL 官方保留字。

\5. 【強制】主鍵索引名為 pk_字段名;唯一索引名為 uk_字段名;普通索引名則為 idx_字段名。

說明:pk 即 primary key;uk 即 unique key;idx_ 即 index 的簡稱。

\6. 【強制】小數(shù)類型為 decimal,禁止使用 float 和 double。

說明:在存儲的時候,float 和 double 都存在精度損失的問題,很可能在比較值的時候,得到不正確的結(jié)果。如果存儲的數(shù)據(jù)范圍超過 decimal 的范圍,建議將數(shù)據(jù)拆成整數(shù)和小數(shù)并分開存儲。

\7. 【強制】如果存儲的字符串長度幾乎相等,使用 char 定長字符串類型。

\8. 【強制】varchar 是可變長字符串,不預(yù)先分配存儲空間,長度不要超過 5000,如果存儲長度大于此值,定義字段類型為 text,獨立出來一張表,用主鍵來對應(yīng),避免影響其它字段索引效率。

\9. 【強制】表必備三字段:id, create_time, update_time。

說明:其中 id 必為主鍵,類型為 bigint unsigned、單表時自增、步長為 1。create_time, update_time 的類型均為 datetime 類型,前者現(xiàn)在時表示主動式創(chuàng)建,后者過去分詞表示被動式更新。

10.【推薦】表的命名最好是遵循“業(yè)務(wù)名稱_表的作用”。

正例:alipay_task / force_project / trade_config

11.【推薦】庫名與應(yīng)用名稱盡量一致。

12.【推薦】如果修改字段含義或?qū)ψ侄伪硎镜臓顟B(tài)追加時,需要及時更新字段注釋。

13.【推薦】字段允許適當冗余,以提高查詢性能,但必須考慮數(shù)據(jù)一致。冗余字段應(yīng)遵循:

1) 不是頻繁修改的字段。

2) 不是唯一索引的字段。

3) 不是 varchar 超長字段,更不能是 text 字段。

正例:各業(yè)務(wù)線經(jīng)常冗余存儲商品名稱,避免查詢時需要調(diào)用 IC 服務(wù)獲取。

14.【推薦】單表行數(shù)超過 500 萬行或者單表容量超過 2GB,才推薦進行分庫分表。

說明:如果預(yù)計三年后的數(shù)據(jù)量根本達不到這個級別,請不要在創(chuàng)建表時就分庫分表。

15.【參考】合適的字符存儲長度,不但節(jié)約數(shù)據(jù)庫表空間、節(jié)約索引存儲,更重要的是提升檢索速度。

正例:無符號值可以避免誤存負數(shù),且擴大了表示范圍。

對象 年齡區(qū)間 類型 字節(jié) 表示范圍
150 歲之內(nèi) tinyint unsigned 1 無符號值:0 到 255
數(shù)百歲 smallint unsigned 2 無符號值:0 到 65535
恐龍化石 數(shù)千萬年 int unsigned 4 無符號值:0 到約 43 億
太陽 約 50 億年 bigint unsigned 8 無符號值:0 到約 10 的 19 次方
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號