歡迎光臨
每天分享高質量文章

說說那些程式員應該遵守的資料庫規範

來自: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、建立組合索引的同時要把區分度較高的放在前面,這樣能夠更加有效的過濾資料。

 

以上都是自己開發過程中遵守的,並且感覺很高效的資料庫規範,簡單整理下,沉澱下來,希望能幫助到這個公眾號的讀者。

    已同步到看一看
    贊(0)

    分享創造快樂