數據庫設計規範

1.命名java

    數據庫命名以環境結尾(_dev);數據庫

    表命名:模塊字頭_表名,好比平臺模塊用戶表:p_user,函數

    字段命名:表內字段採用下劃線方式,下劃線方式支持數據庫對大小寫不敏感數據庫;命名避免java中的關鍵字和數據庫中關鍵字;性能

    數據庫名,表名,字段名所有用英文小寫;編碼

    索引命名以(IDX_)開頭;所有大寫;設計

    外鍵以(FK_)開頭,所有大寫;排序

 

2.字段類型建議:索引

    表時間用timestamp,若是是生日類日期用:datetime;utf-8

    主鍵儘可能用char(32),會比varchar節省不少性能,varchar是可變長度,每次須要計算長度再存儲;ci

    是否標識統一用(_flag),好比是否手機已註冊:mobile_flag(Integer),全部1表明是,0表明否 

    狀態標識統一用(_status),好比用戶狀態:user_status(Integer),1,2,4,6

    金錢統一用service_price(decimal(20,2)),保留兩位小數,以元爲價格單元

    每一個表基礎字段:del_flag(Integer)、create_time(timestamp)、update_time(timestamp),create_by(char(32)),update_by(char(32))

3.注意事項

    數據庫編碼不要用utf-8,要用utf8mb4,否則有些特殊編碼會存儲不進去;

    可能用於查詢條件的字段,在設計中儘可能避免NULL,NULL也一樣會佔用存儲;

    能用聯合主鍵作主鍵的,儘可能用聯合主鍵做爲主鍵;

    列類型儘可能定義成數值類型,且長度儘量短,如主鍵和外鍵,類型字段等等

    當一個表字段有兩個或以上text時,儘可能考慮創建輔表,輔表以主表主鍵共用;

    SELECT子句,禁止使用*

    count(1) 和count(*) 效率上沒有本質上的區別,但咱們仍推薦用count(1)

    若是應用邏輯容許,建議用用EXISTS替代IN

4.索引創建

    根據須要創建多列聯合索引

    多表鏈接的字段上須要創建索引

    where條件字段上須要創建索引

    排序字段上須要創建索引

    分組字段上須要創建索引

    Where條件上不要使用運算函數,以避免索引失效

相關文章
相關標籤/搜索