一、MySQL數據庫命名規范
-
數據庫所有表前綴均使用項目名稱首字母縮寫;
-
數據庫所有對象名稱均使用小寫字母,並且單詞之間通過下划線分開;
-
數據庫臨時表必須以 pro_tmp_ 為前綴並且以日期 _20190917 為后綴,備份表必須以 pro_bac_ 為前綴並以時間戳為后綴;(pro為項目名稱首字母縮寫);
-
數據庫所有存儲相同數據的列名和列類型必須保持一致。
二、MySQL數據庫基本設計規范
-
若無特殊說明,建表時一律采用Innodb存儲引擎;
選擇合適的引擎可以提高數據庫性能,如InnoDB和MyISAM,InnoDB和MyISAM是許多人在使用MySQL時最常用的兩個表類型,這兩個表類型各有優劣,視具體應用而定;基本的差別為:MyISAM類型不支持事務處理等高級處理,而InnoDB類型支持;MyISAM類型的表強調的是性能,其執行數度比InnoDB類型更快,但是不提供事務支持,而InnoDB提供事務支持以及外部鍵等高級數據庫功能;因此,其支持事務處理、支持外鍵、支持崩潰修復能力和並發控制是我們建表時首選的存儲引擎。
-
數據庫和表的字符集統一使用UTF8;
數據庫和表的字符集統一使用utf8,若是有字段需要存儲emoji表情之類的,則將表或字段設置成utf8mb4;因為,utf8號稱萬國碼,其無需轉碼、無亂碼風險且節省空間,而utf8mb4又向下兼容utf8。
-
設計數據庫時所有表和字段必須添加注釋;
-
單個表的數據量大小控制在500萬以內;
-
使用MySQL分區表需謹慎;
-
盡量滿足冷熱數據分離,減小表等寬度;
-
建立預留字段需謹慎;
-
數據庫中禁止存儲圖片、文件等大的二進制數據。
三、MySQL數據庫字段設計規范
-
優先選擇符合存儲需要的最小的數據類型;
-
避免使用TEXT、BLOB數據類型;
-
避免使用ENUM枚舉類型;
-
使用TIMESTAMP(4字節)或DATETIME(8字節)類型存儲時間;
-
財務相關的金額類數據必須使用decimal 類型。
四、MySQL索引設計規范
-
每張表的索引數量不超過5個;
-
每個Innodb 表必須有一個主鍵;
-
盡量避免使用外鍵約束。
五、MySQL數據庫SQL開發規范
-
在明顯不會有重復值時使用UNION ALL 而不是UNION;
1)UNION 會把兩個結果集的所有數據放到臨時表中后再進行去重操作;
2)UNION ALL 不會再對結果集進行去重操作;
-
把復雜、較長的SQL 拆分為為多個小SQL 執行。