|
本文主要說(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),希望能幫助到讀者們。 |
|
|