access数据库拆分的用途_聊聊数据库设计一些经验 条条都是干货
生活随笔
收集整理的這篇文章主要介紹了
access数据库拆分的用途_聊聊数据库设计一些经验 条条都是干货
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
無論什么web編程,還是應用開發,都離不開數據庫,數據庫是數據存儲的中心,缺了數據,編程就無從談起。
有些項目團隊有專門的DB工程師,來負責數據庫的設計與優化,有些項目沒有專門的DB人員,是由開發人員一同設計了,今天聊一聊數據庫設計中一些經驗與原則(以MySql為例)。
數據庫設計文檔,這個一定得有,得詳細記錄每個表是干什么的,每個字段的類型、名稱、長度及備注說明。
設計原則
- 單表字段數量盡可能控制在50個以內,如果比較多,考慮拆分表。比如交易表存儲的字段比較多,可以拆分為tb_trade,tb_trade_status 一個代表交易表,一個代表交易狀態表。
- 按常規存儲與經常更新存儲拆分表,比如用戶表可以拆分為tb_user,tb_user_data,一個保存用戶常規表,這里面數據一般不會變動更新,一個是更新比較頻繁表單獨保存。
- 盡可能不使用text類型,如果非用不可,也不經常有,建議拆表,把text字段的單獨建一張表。
- 如果有自定義字段表,建議拆表,把自定義字段表單獨建一張表。
- 字段類型用盡量小的存儲空間來存一個字段的數據;能用int,就不用varchar,能用varchar(40)就不用varchar(255)。比如IP地址等。
- 字段類型固定長度的最好使用char,比如城市編碼,郵編等等。
- 字段類型能使用tinyint就不用smallint,int,如果業務上不出現負數,就限制不允許負數,這樣可以把最大值擴大一倍。
- 字段可以設置默認值就設置一個默認值,能不允許為空就不能為空。
- 字段枚舉值之間預留一些值便于后續擴展,比如交易狀態表0代表關閉,5代表待付款,10代表已付款,15代表已經發貨,20代表已經收貨等。#說明#這樣做的好處是便于后續擴展,萬一后續業務需求,多出一個狀態值,可以很容易的定義。
- 每個表創建一個遞增主鍵id索引(原因可以查查innodb的索引原理就明白了)。
- 如果有業務單號字段,在單號上創建unique索引。
- 合理使用索引,不是越多越好。
- 每個表保留created_at,updated_at,分別保留創建時間,最后更新時間#說明#為后續的API接口開發預留,因為后續接口是需要抓取增量數據的,全是依靠updated_at來完成的。
- 數據一經產生,不能刪除,可以考慮用一個字段標識是否刪除,比如is_deleted#說明#一則為了數據完整性,后續可查。再則如果有API接口,數據刪除后,第三方系統只能傻傻的認為數據還存在,就不可能保證數據一致性了。
- 盡可能的滿足數據庫范式要求,但適當冗余保存一些字段也是可以的。#說明#適當保存一些冗余方便后續的查詢,再者有些數據具有及時性,只代表數據產生那一刻的數據,比如交易明細中商品就是明顯的代表。
- 不要使用存儲過程,如果是mssql可以使用,但要注意存儲過程的編寫方法,后續會寫到。
- 合理使用事務,把一些條件及判斷,盡可能在事務開始之前完成,避免事務占用時間過長導致堵塞。
數據庫命名原則
數據庫命名
- 采用英文字母、下劃線、數字;
- 命名要簡潔易懂,不要過長。如user_db,weixin_db,trade_db,當然也可以直接為user,weixin,trade等等;
- 除非是一些分庫或備份庫,可以加0-9的自然數,如user_db_202012,除此之外,不要使用數字#說明#數字一般代表的是序號,日期等,便于理解,除此之外,沒有什么意義,加上了有些畫蛇添足的味道。
表名命名
- 采用26個英文字母(區分大小寫)、0-9數字、下劃線"_"組成;
- 命名簡潔易懂,多個單詞之間用下劃線分隔,如user_log#說明#不建議使用駝峰法,如userLog,因為有些數據庫是區分大小寫的,userlog,userLog代表不同的表,如果在開發中不小心把userLog寫成了userlog就會出現異常,沒必要給項目挖坑。更不建議直接使用userlog,這種寫法不便于讀。
- 建議系統表使用統一前綴,比如tb_user_log,tb_trade等#說明#使用前綴的好處是,一則查看的時候會自動排序,把相同的一類排在一塊,再者一看就知道是系統表,不能輕易動,后續在使用過程中,可能會出現一些臨時表,測試表等,這些表在用完后是需要刪除的,也許在使用后暫時忘記了處理,回關一看就知道是什么用途。
- 相同業務類型的使用統一前綴,比如tb_user,tb_user_data,tb_user_log等等#說明#這樣做的好處是便于查看。
字段命名
- 采用26個英文字母、下劃線、0-9自然數(如不需要盡量不用)
- 命名簡潔易懂,多個單詞之間用下劃線分隔;#說明#不建議使用駝峰法,比如fName,原因上述已經說明了。
- 不要使用關鍵字沖突字段,比如sum,distinct等等,有些項目在字段名上統一加上了前綴f_,比如f_name,f_mobile等,其實這樣做的目的就是防止與關鍵字沖突了,可以根據個人喜好是否統一加前綴。
總結
以上是生活随笔為你收集整理的access数据库拆分的用途_聊聊数据库设计一些经验 条条都是干货的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 监控系统或者网站服务器的报警及复位,机房
- 下一篇: map分组后取前10个_人口净流入排名前