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