1、 表設計類數據庫
強制類規範函數
1. 建立表的存儲引擎必須是InnoDB。設計
2. 每一個表必須顯式的指定一個主鍵。日誌
3. 不容許使用聯合主鍵。對象
4. 不容許使用外鍵。排序
5. 不容許存在和主鍵重複的索引。索引
6. 自增加字段必須是主鍵或惟一索引。圖片
7. 不容許在數據庫中存儲諸如圖片,影像之類的二進制數據。it
8. 不容許使用TEXT類型字段table
9. 建表時不容許顯式的指定除了utf8以外的其餘字符集。
10. 對於全部聲明爲NOT NULL的字段,必須顯式指定默認值。
11. 必須包含時間戳字段DataChange_LastTime,定義默認值爲CURRENT_TIMESTAMP和on update CURRENT_TIMESTAMP,並添加索引。
12.不要使用系統或者常見的名稱做爲表名 如order
建議類規範
1. 建議使用自增加字段做爲主鍵。
2. 對較長的字符類型,若是須要索引,則創建前綴索引。
3. 不建議在數據庫存放日誌。
4. 建議將字段都定義爲not null。
5. 選用能知足需求的最小類型。
6. 避免使用保留字命名DB對象。
7. 對錶和字段都添加備註說明。
2、 SQL類
強制類規範
1. 禁止使用子查詢。
2. 禁止使用select *,必須指定須要的字段。
3. update/delete只能單表操做,不容許多表關聯,不容許用子查詢,且必定要帶where條件。
4. insert語句要顯式指定插入的列名,且不容許使用insert .... select的形式。
5. 不容許使用存儲過程、存儲函數、觸發器和視圖。
6. 單條查詢語句中,不容許出現多於一次的join。
7. 不要在where後的篩選字段上作運算。
建議類規範
1. 儘可能不要在數據庫裏作運算。
2. 儘可能不要作‘%’前綴模糊查詢,如 like '%name'。
3. 不要使用大偏移量的limit分頁。
4. 鏈接MySQL不要設置成autocommit=0。
5. 批量insert語句最好採用bulk insert的方法,如insert into table(xxx) values (xxx),(xxx)。
6. update/delete儘可能根據主鍵進行操做。
7. 儘可能減小count()的使用,尤爲是用來頻繁獲取全表記錄數。
8. 使用group by時,如無排序的需求,建議加order by null。
9. Join中使用的關聯字段使用統一數據類型。