來自:java技術情報局(微訊號:zhenlongla0824)
本文主要說下關於資料庫方面的規範,希望能夠幫助到大家。
1、首先是工具,我們用的是 Mysql資料庫,工具是Workbench,這個工具是專門為Mysql設計的資料庫建模工具,你可以用它進行設計和建立新的資料庫圖示,在windows上面我們大多用的是PowerDesiger,在mac上用workbench目前來看還是挺好用的,無論是建立資料庫檔案,ER圖,資料庫的遷移都還是很貼心的。
2、資料庫字符集UTF-8,統一字符集,也就避免了麻煩的亂碼轉碼問題,UTF-8幾乎是好多工具的通用碼,特殊的列使用擴充套件字符集。
3、每個檔案都有一個script檔案,這個script檔案裡面有的應該是這個專案的資料庫設計ER圖,還有該專案資料庫初始的sql陳述句,任何有關於該專案的資料庫更改,都應該首先更改該script檔案,並且標註日期,確保該script檔案是正確的據庫設計,因為我們在上線的時候要給運維上傳的sql陳述句就是從這個ER圖匯出來的。
4、相關聯的業務資料表的名字要使用相同的字首,確保一個業務的多個表在大量表中處於相鄰位置。這點覺得還是很貼心的。
5、資料經常變化的放到一張表;資料不變化的放到一張表;資料不經常變化的一張表。
6、儲存引擎必須使用InnoDB,InnoDB支援事務、行級鎖、併發效能更好。
7、不可使用儲存過程、檢視、觸發器,高併發大資料的網際網路業務,如果併發量太大,使用這些會把資料庫拖垮,把業務邏輯放到服務層具備更好的擴充套件性,需求有所變化的時候也更好修改,而不用去修改繁瑣的sql陳述句,並且能夠輕易簡單的 實現增加機器就增加效能,資料庫的專長在於儲存和索引。專業的事情就讓專業的人來做。
8、禁止使用Blob和Clob型別的欄位,可以使用單獨的庫、單獨的表來儲存大文字的資料,這樣做的話,當運維想要處理、備份資料的時候,這樣的表可以針對性的最佳化,不用在意一些別的因素。
9、表名使用下劃線分隔,id主鍵統一命名為id BIGINT(20),資料寫入時可以提高插入效能。
10、每個表中必須包含欄位createTime欄位,建立時間,確保未來預設排序。
11、外來鍵禁止關聯。外來鍵會導致表和表之間的耦合,update和delete都會涉及到相關聯的表,十分影響sql效能,還有可能會造成死鎖。
12、儲存時間相關的資料,要使用時間戳的格式,因為在未來可能會涉及到時區的問題,而時間戳可以完全避免該問題;儲存貨幣相關的資料,要儲存最小貨幣的數量,避免有小數點,因為可能會引起資料精度問題,導致資料不準確。
13、索引命名定義規則,其中一定要包括表名+列名,來確保該索引在整個資料庫中是唯一的。
14、建立組合索引的同時要把區分度較高的放在前面,這樣能夠更加有效的過濾資料。
以上都是自己開發過程中遵守的,並且感覺很高效的資料庫規範,簡單整理下,沉澱下來,希望能幫助到這個公眾號的讀者。
朋友會在“發現-看一看”看到你“在看”的內容