电竞比分网-中国电竞赛事及体育赛事平台

分享

說(shuō)說(shuō)那些程序員應(yīng)該遵守的數(shù)據(jù)庫(kù)規(guī)范

 weiwarm 2019-02-28

本文主要說(shuō)下關(guān)于數(shù)據(jù)庫(kù)方面的規(guī)范,希望能夠幫助到大家。

1、首先是工具,我們用的是 Mysql數(shù)據(jù)庫(kù),工具是Workbench,這個(gè)工具是專(zhuān)門(mén)為Mysql設(shè)計(jì)的數(shù)據(jù)庫(kù)建模工具,你可以用它進(jìn)行設(shè)計(jì)和創(chuàng)建新的數(shù)據(jù)庫(kù)圖示,在windows上面我們大多用的是PowerDesiger,在mac上用workbench目前來(lái)看還是挺好用的,無(wú)論是建立數(shù)據(jù)庫(kù)文檔,ER圖,數(shù)據(jù)庫(kù)的遷移都還是很貼心的。

2、數(shù)據(jù)庫(kù)字符集UTF-8,統(tǒng)一字符集,也就避免了麻煩的亂碼轉(zhuǎn)碼問(wèn)題,UTF-8幾乎是好多工具的通用碼,特殊的列使用擴(kuò)展字符集。

3、每個(gè)文件都有一個(gè)script文件,這個(gè)script文件里面有的應(yīng)該是這個(gè)項(xiàng)目的數(shù)據(jù)庫(kù)設(shè)計(jì)ER圖,還有該項(xiàng)目數(shù)據(jù)庫(kù)初始的sql語(yǔ)句,任何有關(guān)于該項(xiàng)目的數(shù)據(jù)庫(kù)更改,都應(yīng)該首先更改該script文件,并且標(biāo)注日期,確保該script文件是正確的據(jù)庫(kù)設(shè)計(jì),因?yàn)槲覀冊(cè)谏暇€(xiàn)的時(shí)候要給運(yùn)維上傳的sql語(yǔ)句就是從這個(gè)ER圖導(dǎo)出來(lái)的。

4、相關(guān)聯(lián)的業(yè)務(wù)數(shù)據(jù)表的名字要使用相同的前綴,確保一個(gè)業(yè)務(wù)的多個(gè)表在大量表中處于相鄰位置。這點(diǎn)覺(jué)得還是很貼心的。

5、數(shù)據(jù)經(jīng)常變化的放到一張表;數(shù)據(jù)不變化的放到一張表;數(shù)據(jù)不經(jīng)常變化的一張表。

6、存儲(chǔ)引擎必須使用InnoDB,InnoDB支持事務(wù)、行級(jí)鎖、并發(fā)性能更好。

7、不可使用存儲(chǔ)過(guò)程、視圖、觸發(fā)器,高并發(fā)大數(shù)據(jù)的互聯(lián)網(wǎng)業(yè)務(wù),如果并發(fā)量太大,使用這些會(huì)把數(shù)據(jù)庫(kù)拖垮,把業(yè)務(wù)邏輯放到服務(wù)層具備更好的擴(kuò)展性,需求有所變化的時(shí)候也更好修改,而不用去修改繁瑣的sql語(yǔ)句,并且能夠輕易簡(jiǎn)單的 實(shí)現(xiàn)增加機(jī)器就增加性能,數(shù)據(jù)庫(kù)的專(zhuān)長(zhǎng)在于存儲(chǔ)和索引。專(zhuān)業(yè)的事情就讓專(zhuān)業(yè)的人來(lái)做。

8、禁止使用Blob和Clob類(lèi)型的字段,可以使用單獨(dú)的庫(kù)、單獨(dú)的表來(lái)存儲(chǔ)大文本的數(shù)據(jù),這樣做的話(huà),當(dāng)運(yùn)維想要處理、備份數(shù)據(jù)的時(shí)候,這樣的表可以針對(duì)性的優(yōu)化,不用在意一些別的因素。

9、表名使用下劃線(xiàn)分隔,id主鍵統(tǒng)一命名為id BIGINT(20),數(shù)據(jù)寫(xiě)入時(shí)可以提高插入性能。

10、每個(gè)表中必須包含字段createTime字段,創(chuàng)建時(shí)間,確保未來(lái)默認(rèn)排序。

11、外鍵禁止關(guān)聯(lián)。外鍵會(huì)導(dǎo)致表和表之間的耦合,update和delete都會(huì)涉及到相關(guān)聯(lián)的表,十分影響sql性能,還有可能會(huì)造成死鎖。

12、保存時(shí)間相關(guān)的數(shù)據(jù),要使用時(shí)間戳的格式,因?yàn)樵谖磥?lái)可能會(huì)涉及到時(shí)區(qū)的問(wèn)題,而時(shí)間戳可以完全避免該問(wèn)題;保存貨幣相關(guān)的數(shù)據(jù),要保存最小貨幣的數(shù)量,避免有小數(shù)點(diǎn),因?yàn)榭赡軙?huì)引起數(shù)據(jù)精度問(wèn)題,導(dǎo)致數(shù)據(jù)不準(zhǔn)確。

13、索引命名定義規(guī)則,其中一定要包括表名+列名,來(lái)確保該索引在整個(gè)數(shù)據(jù)庫(kù)中是唯一的。

14、建立組合索引的同時(shí)要把區(qū)分度較高的放在前面,這樣能夠更加有效的過(guò)濾數(shù)據(jù)。

以上都是自己開(kāi)發(fā)過(guò)程中遵守的,并且感覺(jué)很高效的數(shù)據(jù)庫(kù)規(guī)范,簡(jiǎn)單整理下,沉淀下來(lái),希望能幫助到讀者們。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多