上一篇簡單的說了下,本身公司的接口規範和上線規範,此次說下關於數據庫方面的規範,但願可以幫助到你們。sql
一、首先是工具,咱們用的是 Mysql數據庫,工具是Workbench,這個工具是專門爲Mysql設計的數據庫建模工具,你能夠用它進行設計和建立新的數據庫圖示,在windows上面咱們大多用的是PowerDesiger,在mac上用workbench目前來看仍是挺好用的,不管是創建數據庫文檔,ER圖,數據庫的遷移都仍是很貼心的。數據庫
二、數據庫字符集UTF-8,統一字符集,也就避免了麻煩的亂碼轉碼問題,UTF-8幾乎是好多工具的通用碼,特殊的列使用擴展字符集。windows
三、每一個文件都有一個script文件,這個script文件裏面有的應該是這個項目的數據庫設計ER圖,還有該項目數據庫初始的sql語句,任何有關於該項目的數據庫更改,都應該首先更改該script文件,而且標註日期,確保該script文件是正確的據庫設計,由於咱們在上線的時候要給運維上傳的sql語句就是從這個ER圖導出來的。併發
四、相關聯的業務數據表的名字要使用相同的前綴,確保一個業務的多個表在大量表中處於相鄰位置。這點以爲仍是很貼心的。運維
五、數據常常變化的放到一張表;數據不變化的放到一張表;數據不常常變化的一張表。數據庫設計
六、存儲引擎必須使用InnoDB,InnoDB支持事務、行級鎖、併發性能更好。高併發
七、不可以使用存儲過程、視圖、觸發器,高併發大數據的互聯網業務,若是併發量太大,使用這些會把數據庫拖垮,把業務邏輯放到服務層具有更好的擴展性,需求有所變化的時候也更好修改,而不用去修改繁瑣的sql語句,而且可以輕易簡單的 實現增長機器就增長性能,數據庫的專長在於存儲和索引。專業的事情就讓專業的人來作。工具
八、禁止使用Blob和Clob類型的字段,可使用單獨的庫、單獨的表來存儲大文本的數據,這樣作的話,當運維想要處理、備份數據的時候,這樣的表能夠針對性的優化,不用在乎一些別的因素。性能
九、表名使用下劃線分隔,id主鍵統一命名爲id BIGINT(20),數據寫入時能夠提升插入性能。大數據
十、每一個表中必須包含字段createTime字段,建立時間,確保將來默認排序。
十一、外鍵禁止關聯。外鍵會致使表和表之間的耦合,update和delete都會涉及到相關聯的表,十分影響sql性能,還有可能會形成死鎖。
十二、保存時間相關的數據,要使用時間戳的格式,由於在將來可能會涉及到時區的問題,而時間戳能夠徹底避免該問題;保存貨幣相關的數據,要保存最小貨幣的數量,避免有小數點,由於可能會引發數據精度問題,致使數據不許確。
1三、索引命名定義規則,其中必定要包括表名+列名,來確保該索引在整個數據庫中是惟一的。
1四、創建組合索引的同時要把區分度較高的放在前面,這樣可以更加有效的過濾數據。
以上都是本身開發過程當中遵照的,而且感受很高效的數據庫規範,簡單整理下,沉澱下來,但願能幫助到這個公衆號的讀者。
這樣的分享會一直持續,你的關注,轉發和好看是對我最大的支持,感謝。
關注公衆號,最新文章會第一時間出如今那裏哦!