1、庫名與應用名稱盡量一致
2、表名、字段名必須使用小寫字母或數字,禁止出現數字開頭,
3、表名不使用復數名詞
4、表的命名最好是加上“業務名稱_表的作用”。如,edu_teacher
5、表必備三字段:id, gmt_create, gmt_modified
說明:
其中 id 必為主鍵,類型為 bigint unsigned、單表時自增、步長為 1。
(如果使用分庫分表集群部署,則id類型為verchar,非自增,業務中使用分布式id生成器)
gmt_create, gmt_modified 的類型均為 datetime 類型,前者現在時表示主動創建,后者過去分詞表示被 動更新。
6、單表行數超過 500 萬行或者單表容量超過 2GB,才推薦進行分庫分表。 說明:如果預計三年后的數據量根本達不到這個級別,請不要在創建表時就分庫分表。
7、表達是與否概念的字段,必須使用 is_xxx 的方式命名,數據類型是 unsigned tinyint (1 表示是,0 表示否)。
說明:任何字段如果為非負數,必須是 unsigned。
注意:POJO 類中的任何布爾類型的變量,都不要加 is 前綴。數據庫表示是與否的值,使用 tinyint 類型,堅持 is_xxx 的 命名方式是為了明確其取值含義與取值范圍。
正例:表達邏輯刪除的字段名 is_deleted,1 表示刪除,0 表示未刪除。
8、小數類型為 decimal,禁止使用 float 和 double。 說明:float 和 double 在存儲的時候,存在精度損失的問題,很可能在值的比較時,得到不 正確的結果。如果存儲的數據范圍超過 decimal 的范圍,建議將數據拆成整數和小數分開存儲。
9、如果存儲的字符串長度幾乎相等,使用 char 定長字符串類型。
10、varchar 是可變長字符串,不預先分配存儲空間,長度不要超過 5000,如果存儲長度大於此值,定義字段類型為 text,獨立出來一張表,用主鍵來對應,避免影響其它字段索 引效率。
11、唯一索引名為 uk_字段名;普通索引名則為 idx_字段名。
說明:uk_ 即 unique key;idx_ 即 index 的簡稱
12、不得使用外鍵與級聯,一切外鍵概念必須在應用層解決。外鍵與級聯更新適用於單機低並發,不適合分布式、高並發集群;級聯更新是強阻塞,存在數據庫更新風暴的風險;外鍵影響數據庫的插入速度。