亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1863 | 回復(fù): 0
打印 上一主題 下一主題

你們數(shù)據(jù)庫(kù)使用外鍵嗎 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-03-07 07:42 |只看該作者 |倒序?yàn)g覽
轉(zhuǎn)自 http://www.javaeye.com/topic/920511

今天看天乙社區(qū)的程序,發(fā)現(xiàn)一個(gè)外鍵都沒(méi)有啊,太狠了。上網(wǎng)看了一些資料,稍微整理了一下。

這個(gè)帖子很牛:

http://www.itpub.net/viewthread. ... p;extra=&page=1



我的觀點(diǎn)是,外鍵在初始階段能加的都加上,只有迫不得已的時(shí)候才disable或drop掉。遇到性能瓶頸的時(shí)候,盡量采用其它方式調(diào)優(yōu),而不要輕易犧牲掉外鍵。有外鍵約束的時(shí)候,寫程序的確會(huì)有約束,但從直覺(jué)上說(shuō)這種約束一定程度上揭示了設(shè)計(jì)或?qū)崿F(xiàn)上不合理的地方。帶著外鍵寫出來(lái)的應(yīng)用更傾向于嚴(yán)謹(jǐn)。產(chǎn)品上線之前如果確實(shí)需要通過(guò)犧牲外鍵達(dá)到性能上的優(yōu)化,再撿相對(duì)不重要的外鍵廢棄掉,同時(shí)要把這個(gè)document下來(lái),下次遇到數(shù)據(jù)不一致問(wèn)題的時(shí)候,是個(gè)線索。兩點(diǎn)說(shuō)明:1. 我們?cè)谧龅囊粋(gè)項(xiàng)目確實(shí)是小項(xiàng)目。  2. 我得承認(rèn)我最近三年開(kāi)發(fā)都不用關(guān)系型數(shù)據(jù)庫(kù),貌似 no sql那么nb的key-value pair存數(shù)據(jù),其實(shí)這三年在持久層上很多糾結(jié)。如果我說(shuō)的不對(duì),請(qǐng)指正!



下面引用一些有見(jiàn)地的想法:

× 支持外鍵的:

1. 你的程序再嚴(yán)謹(jǐn)也有可能出現(xiàn)BUG;你自己判斷不如交給數(shù)據(jù)庫(kù)判斷,它做得又快又好。
    大多數(shù)人的程序沒(méi)有考慮并發(fā)問(wèn)題。一旦考慮了就得手工加鎖,效率很低。
    數(shù)據(jù)可能繞過(guò)你的應(yīng)用程序進(jìn)入數(shù)據(jù)庫(kù)。
2. 性能問(wèn)題:難道你自己做就沒(méi)有開(kāi)銷?
    一個(gè)外鍵判斷分?jǐn)偟绞聞?wù)級(jí)別,開(kāi)銷可以忽略,用戶完全沒(méi)有察覺(jué)。
    如果是批量導(dǎo)入數(shù)據(jù),可以先暫時(shí)屏蔽外鍵,事后用NOVALIDATE選項(xiàng)快速恢復(fù),前提是你的數(shù)據(jù)是干凈的。

  

也有人提到了如果100張表可能需要建立300個(gè)約束,導(dǎo)致性能太差。
我要說(shuō)的仍然是,是否這300個(gè)外鍵約束都是業(yè)務(wù)必須的,如果是,沒(méi)有辦法這就是必須要加的,如果不是,那么大可不必在所有的地方都增加外鍵。
如果在程序中僅對(duì)其中的5、6張表的10來(lái)個(gè)外鍵約束進(jìn)行判斷,然后和數(shù)據(jù)庫(kù)中的300個(gè)外鍵去比較,并評(píng)價(jià)Oracle的外鍵性能太差,恐怕是有失公允的。

  

× 反對(duì)外鍵的:

的確外鍵在大系統(tǒng)中用的很少,在開(kāi)發(fā)初級(jí),設(shè)計(jì)數(shù)據(jù)庫(kù)的時(shí)候一般會(huì)加入外鍵,以保證系統(tǒng)設(shè)計(jì)的完整性和業(yè)務(wù)需求的完整性,也便于開(kāi)發(fā)人員了解業(yè)務(wù)規(guī)則,在程序中加以控制,很多大系統(tǒng)在系統(tǒng)穩(wěn)定后,會(huì)逐步將外鍵去掉,以保證性能,將太多的功能強(qiáng)加于數(shù)據(jù)庫(kù),雖然說(shuō)數(shù)據(jù)庫(kù)很強(qiáng)大,但是畢竟很多人不信任數(shù)據(jù)庫(kù)的能強(qiáng)大到什么都能干的地步。所以在一個(gè)大系統(tǒng)中外鍵見(jiàn)的少也不足為奇,小系統(tǒng)就無(wú)所謂了,用不用外鍵取決于設(shè)計(jì)人員,這樣的系統(tǒng)也隨處可見(jiàn)。





另引用一篇:

引自http://blog.csdn.net/neusoft_lkz/archive/2009/07/21/4366668.aspx

數(shù)據(jù)庫(kù)設(shè)計(jì)是否需要外鍵。這里有兩個(gè)問(wèn)題:一個(gè)是如何保證數(shù)據(jù)庫(kù)數(shù)據(jù)的完整性和一致性;二是第一條對(duì)性能的影響。
正方觀點(diǎn):
1,由數(shù)據(jù)庫(kù)自身保證數(shù)據(jù)一致性,完整性,更可靠,因?yàn)槌绦蚝茈y100%保證數(shù)據(jù)的完整性,而用外鍵即使在數(shù)據(jù)庫(kù)服務(wù)器當(dāng)機(jī)或者出現(xiàn)其他問(wèn)題的時(shí)候,也能夠最大限度的保證數(shù)據(jù)的一致性和完整性。
eg:數(shù)據(jù)庫(kù)和應(yīng)用是一對(duì)多的關(guān)系,A應(yīng)用會(huì)維護(hù)他那部分?jǐn)?shù)據(jù)的完整性,系統(tǒng)一變大時(shí),增加了B應(yīng)用,A和B兩個(gè)應(yīng)用也許是不同的開(kāi)發(fā)團(tuán)隊(duì)來(lái)做的。他們?nèi)绾螀f(xié)調(diào)保證數(shù)據(jù)的完整性,而且一年以后如果又增加了C應(yīng)用呢?
2,有主外鍵的數(shù)據(jù)庫(kù)設(shè)計(jì)可以增加ER圖的可讀性,這點(diǎn)在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)非常重要。
3,外鍵在一定程度上說(shuō)明的業(yè)務(wù)邏輯,會(huì)使設(shè)計(jì)周到具體全面。
反方觀點(diǎn):
1,可以用觸發(fā)器或應(yīng)用程序保證數(shù)據(jù)的完整性
2,過(guò)分強(qiáng)調(diào)或者說(shuō)使用主鍵/外鍵會(huì)平添開(kāi)發(fā)難度,導(dǎo)致表過(guò)多等問(wèn)題
3,不用外鍵時(shí)數(shù)據(jù)管理簡(jiǎn)單,操作方便,性能高(導(dǎo)入導(dǎo)出等操作,在insert,   update,   delete   數(shù)據(jù)的時(shí)候更快)
eg:在海量的數(shù)據(jù)庫(kù)中想都不要去想外鍵,試想,一個(gè)程序每天要insert數(shù)百萬(wàn)條記錄,當(dāng)存在外鍵約束的時(shí)候,每次要去掃描此記錄是否合格,一般還不止一個(gè)字段有外鍵,這樣掃描的數(shù)量是成級(jí)數(shù)的增長(zhǎng)!我的一個(gè)程序入庫(kù)在3個(gè)小時(shí)做完,如果加上外鍵,需要28個(gè)小時(shí)!  

結(jié)論:
1,在大型系統(tǒng)中(性能要求不高,安全要求高),使用外鍵;在大型系統(tǒng)中(性能要求高,安全自己控制),不用外鍵;小系統(tǒng)隨便,最好用外鍵。
2,用外鍵要適當(dāng),不能過(guò)分追求
3,不用外鍵而用程序控制數(shù)據(jù)一致性和完整性時(shí),應(yīng)該寫一層來(lái)保證,然后個(gè)個(gè)應(yīng)用通過(guò)這個(gè)層來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP