某大型互聯網公司mysql設計規范
總體原則:
I: 反第三范式-->第三范式僅僅是在大學里用的,出來后,不能隨便用;
II: 數據冗余 --> 一張表幾百萬甚至上千萬數據,你不搞數據冗余,以后數據量上來了,查詢肯定很慢。
具體原則:
1 字段設計:最短最小原則,夠用即可,可以用varchar(10)的,不要用varchar(20),能用smallint的,不要用int
2 字段類型:能用數字的,不要用varchar,數字類型的,查詢速度要優於字符串
3 字段數量:不要超過50個
4 字段命名:見名知意,簡單明了,駝峰表示,不要用大小寫,那是java語言的規范
5 常規表,應該都包含以下字段 create_user create_time update_user update_time
6 根據需要,設計is_delete字段,選擇進行邏輯刪除還是物理刪除。
7 sys_version,存在並發更新的表,可以添加該字段:
update table set col1 = value1,sys_version = sys_version + 1 where id = id and sys_version = sys_version
8 盡量不要有join查詢,如果確實需要join,join的數量,不能超過3個
9 不要設計物理外鍵
10 不要在sql語句上叫mysql進行隱士類型轉換
11 盡量不要在mysql的字段上進行函數運算,尤其是索引列.
12 百萬以上數據,再考慮建立索引,字符串類型要建立前置索引,索引數量,限制個5個以內。
13 不要用視圖,存儲過程
14 設置ts字段(timestamp),初始值為insert time,數據更新時為當時的更新時間