表名統一使用t_開頭,字型全部使用小寫,多單詞間使用下劃線「_」分隔,不超過32個字元。表名加上中文注釋!
字段規則為『駝峰命名法』,應該和entity欄位對應,不超過32個字元,禁止使用無關單詞、漢語拼音!字段必須加上中文注釋!
必須建主鍵,若無特殊說明,id通常為自增主鍵。
統一使用inndb儲存引擎。
字符集使用utf8mb4,它是utf8的超集。
禁止使用儲存過程、檢視、觸發器、udf(即自定義函式)等(此條僅適用於後台程式,dba等維護統計與後台程式無關的酌情)。
不要儲存大檔案或者,存url或使用nas什麼的多好。
單例項表數目不多於500個。
單表列小於30個。
禁止使用外來鍵,外來鍵會影響效能,只需要在程式控制就行(隨著資料的增長,插入一條資料都需要做驗證導致程式越來越慢)。
欄位應盡量滿足not null並提供預設值,禁止使用非索引列作為檢索條件進行update、delete等修改資料操作(inndb的鎖鎖了什麼)。
禁止使用text、blob型別,會浪費更多的磁碟和記憶體空間,非必要的大量的大字段查詢會淘汰掉熱資料,導致記憶體命中率急劇降低,影響資料庫效能。
禁止使用小數儲存貨幣
,貨幣使用整數
字段長度盡量取小,如手機號varchar(20)足夠滿足區號或國家號,或者乾脆varchar(11)
不要用列舉型別,使用tinyint,列舉會增加ddl操作,況且列舉本來儲存的tinyint
單錶索引不超過5個,太多增加插入資料重排的效能消耗,實際上已經達不到有效的過濾資料的效果。
在更新頻繁,區分度不高的字段上建索引是沒有意義的,頻繁更新索引會嚴重降低效能
組合索引將區分度高的字段放在最左邊,能更加有意義的過濾資料
禁止使用隱式轉換,例如select id from user where age=』22』,會導致全表掃瞄
禁止在where條件字段使用函式表示式,例如select id from user where to_char(createdate)<』2016-10-01』,應修改為select id from user where createdate禁止使用負向查詢,以及使用%開頭的模糊查詢,負向查詢not、!= 、<> 、!< 、!>、not in、not like等,會導致全表掃瞄
禁止大表使用join,使用子查詢,會產生臨時表,消耗較多的記憶體與cpu,極大影響資料庫效能
應該用in條件代替or條件(in的二分查詢優化)
【推薦】如果有 order by 的場景,請注意利用索引的有序性。order by 最後的字段是組合索引的一部分,並且放在索引組合順序的最後,避免出現 file_sort 的情況,影響查詢效能。正例:where a=? and b=? order by c; 索引:a_b_c
資料庫設計規範
使用明確 統一的標明和列名,例如 school,schoolcourse,courceid。資料表名使用單數而不是複數,例如 studentcourse,而不是studentcourses。資料表名不要使用空格。資料表名不要使用不必要的字首或者字尾,例如使用school,而不是tblschool,或...
資料庫設計規範
csm簡寫會方便很多 就不要用member id,一致性方便大家理解 system.currenttimemillis 進行儲存text查詢是會產生臨時磁碟檔案,效能差進行擷取儲存型別 占用位元組 範圍tinyint 1 128 127 smallint 2 32768 32767 mediumin...
資料庫設計規範
1 基本需求 某學校設計學生教學管理系統。學生實體包括學號 姓名 性別 生日 民族 籍貫 簡歷 登記照,每名學生選擇乙個主修專業,專業包括專業編號和名稱,乙個專業可以屬於 乙個學院,乙個學院可以有若干個專業。學院資訊要儲存學院號 學院名 院長。教學管理還要管理課程表和學生成績。課程表包括課程號 課程...