小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

事務(wù)型數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn)

 Jcstone 2012-05-17

事務(wù)型數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn)

2009-08-12 16:53  來(lái)源:    我要評(píng)論(0)
  • 摘要:本文從各個(gè)角度總結(jié)了數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn),且主要是針對(duì)事務(wù)型數(shù)據(jù)庫(kù)的。筆者總結(jié)的十分精細(xì),希望能給大家?guī)?lái)幫助。
  • 標(biāo)簽:數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn)

以下是針對(duì)事務(wù)型數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn):

1.數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn)之是否使用聯(lián)合主鍵?

個(gè)人傾向于少采用聯(lián)合主鍵。因?yàn)檫@樣會(huì)降低索引的效率,聯(lián)合主鍵一般都要用到至少一個(gè)業(yè)務(wù)字段,往往是字符串型的,而且理論上多字段的索引比單字段的索引要慢些??瓷先ニ坪跻膊荒敲辞逅?。

在實(shí)際的設(shè)計(jì)中,我盡量避免使用聯(lián)合主鍵,有些時(shí)候“不得不”使用聯(lián)合主鍵。

2.數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn)之PK采用無(wú)意義的字段(邏輯主鍵)還是有意義的字段(業(yè)務(wù)主鍵)?

個(gè)人傾向于“邏輯主鍵”,理由是這樣設(shè)計(jì)出的數(shù)據(jù)庫(kù)模型結(jié)構(gòu)清晰、關(guān)系脈絡(luò)清楚,往往更符合“第三范式”(雖然不是故意的,呵呵)。而且更容易避開(kāi)“聯(lián)合主鍵”,而且可以使用索引效率高的字段類型,比如int、long、number。缺點(diǎn)是用無(wú)意義的字段建立表間的關(guān)系,使跨表查詢?cè)龆啵氏陆怠#軣o(wú)處不在,前面剛說(shuō)完可以提高效率,這里馬上又降低效率)。“業(yè)務(wù)主鍵”可以提升查詢編碼的簡(jiǎn)潔度和效率。

個(gè)人使用實(shí)際狀況,總體來(lái)說(shuō)“邏輯主鍵”比“業(yè)務(wù)主鍵”執(zhí)行效率低,但不會(huì)低到無(wú)法滿足需求。采用“邏輯主鍵”比采用“業(yè)務(wù)主鍵”更利于數(shù)據(jù)庫(kù)模型的結(jié)構(gòu)、關(guān)系清晰,也更便于維護(hù)。

對(duì)于分析型數(shù)據(jù)庫(kù),如數(shù)據(jù)倉(cāng)庫(kù),千萬(wàn)不要這樣做。

3.數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn)不要使用多對(duì)多關(guān)系?

個(gè)人傾向于少使用多對(duì)多關(guān)系。這個(gè)問(wèn)題其實(shí)不是數(shù)據(jù)庫(kù)設(shè)計(jì)的問(wèn)題了,在數(shù)據(jù)庫(kù)設(shè)計(jì)中,多對(duì)多關(guān)系也僅僅存在于概念模型(E-R)階段,物理模型不在有多對(duì)多關(guān)系,實(shí)際數(shù)據(jù)庫(kù)中也不會(huì)有“多對(duì)多”關(guān)系。這是使用ORM時(shí)的問(wèn)題,比如使用Hibernate,多對(duì)多關(guān)系有時(shí)會(huì)使編碼看起來(lái)靈活一些,代價(jià)是效率的明顯降低。

個(gè)人實(shí)際使用中,設(shè)計(jì)時(shí)基本不考慮多對(duì)多關(guān)系,但編碼時(shí)總會(huì)有小組成員使用一些多對(duì)多關(guān)系,自己建立多對(duì)多的ORM,使自己編碼方便些,用在數(shù)據(jù)量小的地方,影響不大。大數(shù)據(jù)量,則“禁止使用”。

4.數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn)之為每個(gè)表增加一個(gè)state字段?

我習(xí)慣在設(shè)計(jì)時(shí)給每個(gè)表設(shè)一個(gè)state字段,取值0或1,默認(rèn)值為1,具體業(yè)務(wù)意義或操作上的意義可以自定義??梢宰鳛橐粋€(gè)狀態(tài)控制字段,如查詢、更新、刪除條件,單據(jù)是否有效(業(yè)務(wù)單據(jù)對(duì)應(yīng)的表會(huì)有業(yè)務(wù)意義上的“有/無(wú)效”或“狀態(tài)”字段,這種情況下,我還是會(huì)再加一個(gè)state字段),甚至僅僅是控制一條數(shù)據(jù)是否“有效”(有效的意義你自己定)。在數(shù)據(jù)遷移(如轉(zhuǎn)入分析用的數(shù)據(jù)庫(kù))時(shí)也可能會(huì)發(fā)揮作用。

5.數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn)之為每個(gè)表設(shè)置一些備用字段?

沒(méi)辦法,我總是設(shè)計(jì)不出“完美”的數(shù)據(jù)表,給每個(gè)表加幾個(gè)備用字段(我一般用字符串型,隨你)可以應(yīng)付“不時(shí)之需”,尤其是需要長(zhǎng)期維護(hù)的、業(yè)務(wù)可能有臨時(shí)性變動(dòng)的系統(tǒng)。

6.數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn)之盡量不要在一個(gè)表中存入其關(guān)聯(lián)表的字段?

建議不存!這樣做確實(shí)可以提高查詢效率,但在一個(gè)有很多表,并且關(guān)聯(lián)表多的情況下,很難保持?jǐn)?shù)據(jù)的一致性!數(shù)據(jù)庫(kù)結(jié)構(gòu)也比較糟糕。而且不存,也不會(huì)使效率十分低下。

7.數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn)之不要去直接修改數(shù)據(jù)庫(kù)?

個(gè)人認(rèn)為這點(diǎn)很重要,當(dāng)需要修改時(shí),應(yīng)該先去修改模型,然后同步物理數(shù)據(jù)庫(kù),尤其是團(tuán)隊(duì)開(kāi)發(fā),否則要多做更多的事情來(lái)搞定,也可能會(huì)引入更多的錯(cuò)誤。

以上就是對(duì)事務(wù)型數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(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)遵守用戶 評(píng)論公約

    類似文章 更多