Mysql資料庫設計基本規範
1.使用InnoDB引擎
支援事務、行級鎖、併發效能更好,具體的我在另一篇文章會詳細介紹InnoDB
和MyISAM
的區別
2.使用utf8或utf8mb4字符集
utf8
是萬國碼,無需轉碼,無亂碼風險,節省空間,但是如果業務需要支援emoji
和複雜漢字 如龑
(這是我大學同學名字中的字,每次報名找半天,上課老師不會讀)就需要使用utf8mb4
字符集,他是utf8
的超集,缺點就是不節省儲存空間。然而在硬體發達的今天這些都不是事了。
3.欄位加註釋
這一點不想說什麼,懂得都懂
4.不要再資料庫上使用儲存過程,事務和觸發器,event等
請讓資料庫做他擅長的事情儲存和索引
5.禁止存大檔案
直接儲存url就行了
6.命名要見名知意
命名要有意義,不得與關鍵字衝突,使用下劃線分割單詞,禁止用拼音。索引命名最好是索引型別加_
索引名稱。如unique_mobile
7.禁止使用null
null
這是個該死的玩意,如果你使用了你會後悔。他會廢掉mysql一個重要的功能---索引
8.儘量不要使用ENUM
ENUM
更加的節省空間效率那為什麼不用呢?比如文章的狀態,有草稿,稽核中,打回,已釋出4種,假設你使用ENUM
來儲存,他就4個值。突然有一天產品經理說要給文章稽核分一級稽核,二級稽核。那麼你除了程式要做相關修改外還要去資料庫去做調整。直接操作線上資料庫是一件很危險的事情,所以建議使用tinyint
代替ENUM
。當然如果你百分之百確定就只用那麼幾個可能你可以使用ENUM
,比如性別 最多三種狀態, 男 女 未知。
9.表名稱要有統一的字首
10.欄位拆分
不常用的欄位垂直拆分出去,大欄位垂直拆分出去。
11.儘可能少用text和blob
這樣的欄位型別能儲存的內容非常之大,如果可以,請用varchar代替,即使非用不可也請考慮tinytext,並且垂直拆分出去。
12.合理使用索引
索引固然能大大提高搜尋效率,但他同時給插入更新帶來了額外的消耗,索引索引不能隨意建立。