資源描述:
《MYSQL數(shù)據(jù)庫(kù)命名及設(shè)計(jì)規(guī)范》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、MYSQL數(shù)據(jù)庫(kù)命名及設(shè)計(jì)規(guī)范1.設(shè)計(jì)原則1)標(biāo)準(zhǔn)化和規(guī)范化數(shù)據(jù)的標(biāo)準(zhǔn)化有助于消除數(shù)據(jù)庫(kù)中的數(shù)據(jù)冗余。標(biāo)準(zhǔn)化有好幾種形式,但ThirdNormalForm(3NF)通常被認(rèn)為在性能、擴(kuò)展性和數(shù)據(jù)完整性方面達(dá)到了最好平衡。簡(jiǎn)單來(lái)說(shuō),遵守3NF標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)的表設(shè)計(jì)原則是:“OneFactinOnePlace”即某個(gè)表只包括其本身基本的屬性,當(dāng)不是它們本身所具有的屬性時(shí)需進(jìn)行分解。表之間的關(guān)系通過(guò)外鍵相連接。它具有以下特點(diǎn):有一組表專門(mén)存放通過(guò)鍵連接起來(lái)的關(guān)聯(lián)數(shù)據(jù)。舉例:某個(gè)存放客戶及其有關(guān)定單的3NF數(shù)據(jù)庫(kù)就可能有兩
2、個(gè)表:Customer和Order。Order表不包含定單關(guān)聯(lián)客戶的任何信息,但表內(nèi)會(huì)存放一個(gè)鍵值,該鍵指向Customer表里包含該客戶信息的那一行。事實(shí)上,為了效率的緣故,對(duì)表不進(jìn)行標(biāo)準(zhǔn)化有時(shí)也是必要的。2)數(shù)據(jù)驅(qū)動(dòng)采用數(shù)據(jù)驅(qū)動(dòng)而非硬編碼的方式,許多策略變更和維護(hù)都會(huì)方便得多,大大增強(qiáng)系統(tǒng)的靈活性和擴(kuò)展性。舉例,假如用戶界面要訪問(wèn)外部數(shù)據(jù)源(文件、XML文檔、其他數(shù)據(jù)庫(kù)等),不妨把相應(yīng)的連接和路徑信息存儲(chǔ)在用戶界面支持表里。還有,如果用戶界面執(zhí)行工作流之類的任務(wù)(發(fā)送郵件、打印信箋、修改記錄狀態(tài)等),那么產(chǎn)生
3、工作流的數(shù)據(jù)也可以存放在數(shù)據(jù)庫(kù)里。角色權(quán)限管理也可以通過(guò)數(shù)據(jù)驅(qū)動(dòng)來(lái)完成。事實(shí)上,如果過(guò)程是數(shù)據(jù)驅(qū)動(dòng)的,你就可以把相當(dāng)大的責(zé)任推給用戶,由用戶來(lái)維護(hù)自己的工作流過(guò)程。3)考慮各種變化在設(shè)計(jì)數(shù)據(jù)庫(kù)的時(shí)候考慮到哪些數(shù)據(jù)字段將來(lái)可能會(huì)發(fā)生變更。舉例,姓氏就是如此(注意是西方人的姓氏,比如女性結(jié)婚后從夫姓等)。所以,在建立系統(tǒng)存儲(chǔ)客戶信息時(shí),在單獨(dú)的一個(gè)數(shù)據(jù)表里存儲(chǔ)姓氏字段,而且還附加起始日和終止日等字段,這樣就可以跟蹤這一數(shù)據(jù)條目的變化。2.數(shù)據(jù)庫(kù)涉及字符規(guī)范采用26個(gè)英文字母(區(qū)分大小寫(xiě))和0-9這十個(gè)自然數(shù),加上下劃
4、線'_'組成,共63個(gè)字符.不能出現(xiàn)其他字符(注釋除外).注意事項(xiàng):1)以上命名都不得超過(guò)30個(gè)字符的系統(tǒng)限制.變量名的長(zhǎng)度限制為29(不包括標(biāo)識(shí)字符@).2)數(shù)據(jù)對(duì)象、變量的命名都采用英文字符,禁止使用中文命名.絕對(duì)不要在對(duì)象名的字符之間留空格.3)小心保留詞,要保證你的字段名沒(méi)有和保留詞、數(shù)據(jù)庫(kù)系統(tǒng)或者常用訪問(wèn)方法沖突5)保持字段名和類型的一致性,在命名字段并為其指定數(shù)據(jù)類型的時(shí)候一定要保證一致性.假如數(shù)據(jù)類型在一個(gè)表里是整數(shù),那在另一個(gè)表里可就別變成字符型了.3.數(shù)據(jù)庫(kù)命名規(guī)范數(shù)據(jù)庫(kù),數(shù)據(jù)表一律使用前綴正式
5、數(shù)據(jù)庫(kù)名使用小寫(xiě)英文以及下劃線組成,盡量說(shuō)明是那個(gè)應(yīng)用或者系統(tǒng)在使用的.比如:web_19floor_netweb_car備份數(shù)據(jù)庫(kù)名使用正式庫(kù)名加上備份時(shí)間組成,如:web_19floor_net_20070403web_car_200704034.數(shù)據(jù)庫(kù)表命名規(guī)范數(shù)據(jù)表名使用小寫(xiě)英文以及下劃線組成,盡量說(shuō)明是那個(gè)應(yīng)用或者系統(tǒng)在使用的.相關(guān)應(yīng)用的數(shù)據(jù)表使用同一前綴,如論壇的表使用cdb_前綴,博客的數(shù)據(jù)表使用supe_前綴,前綴名稱一般不超過(guò)5字比如:web_userweb_groupsupe_userspac
6、e備份數(shù)據(jù)表名使用正式表名加上備份時(shí)間組成,如:web_user_20070403web_group_20070403supe_userspace_200704035.字段命名規(guī)范字段名稱使用單詞組合完成,首字母小寫(xiě),后面單詞的首字母大寫(xiě),最好是帶表名前綴.如web_user表的字段:userIduserNameuserPassword表與表之間的相關(guān)聯(lián)字段要用統(tǒng)一名稱,如web_user表里面的userId和web_group表里面的userId相對(duì)應(yīng)6.字段類型規(guī)范規(guī)則:用盡量少的存儲(chǔ)空間來(lái)存數(shù)一個(gè)字段的數(shù)據(jù)
7、.比如能用int的就不用char或者varchar能用tinyint的就不用int能用varchar(20)的就不用varchar(255)時(shí)間戳字段盡量用int型,如created:表示從'1970-01-0108:00:00'開(kāi)始的int秒數(shù),采用英文單詞的過(guò)去式;gmtCreated:表示datetime類型的時(shí)間,即形如'1980-01-0100:00:00'的時(shí)間串,Java中對(duì)應(yīng)的類型為T(mén)imestamp7.數(shù)據(jù)庫(kù)設(shè)計(jì)文檔規(guī)范所有數(shù)據(jù)庫(kù)設(shè)計(jì)要寫(xiě)成文檔,文檔以模塊化形式表達(dá).大致格式如下:/******
8、*********************數(shù)據(jù)庫(kù)名稱:xtata_test數(shù)據(jù)庫(kù)描述:測(cè)試數(shù)據(jù)庫(kù)版本:v0.1設(shè)計(jì)人:許立強(qiáng)設(shè)計(jì)時(shí)間:2008-5-13*/字段類型(長(zhǎng)度)是否為空其他信息字段描述testIdInt(11)否主動(dòng)增加測(cè)試的ID8.索引使用原則:1)邏輯主鍵使用唯一的成組索引,對(duì)系統(tǒng)鍵(作為存儲(chǔ)過(guò)程)采用唯一的非成組索引,對(duì)任何外鍵列采用非成組索引.考慮數(shù)據(jù)