3 回答

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
多個(gè)表以下列方式/案例提供幫助:
(a)如果不同的人要開發(fā)涉及不同表的應(yīng)用程序,則將它們拆分是有意義的。
(b)如果您想為不同的人賦予不同的權(quán)限,以進(jìn)行數(shù)據(jù)收集的不同部分,則拆分它們可能更為方便。(當(dāng)然,您可以查看定義視圖并對其進(jìn)行適當(dāng)授權(quán))。
(c)為了將數(shù)據(jù)移動(dòng)到不同的地方,尤其是在開發(fā)過程中,使用表來減小文件大小可能是有意義的。
(d)在基于單個(gè)實(shí)體的特定數(shù)據(jù)收集開發(fā)應(yīng)用程序時(shí),較小的占地面積可能會(huì)給您帶來舒適感。
(e)這是一種可能性:您認(rèn)為作為單個(gè)值的數(shù)據(jù)將來可能會(huì)變成真正的多個(gè)值。例如,信用額度到目前為止是單個(gè)值字段。但是明天,您可能會(huì)決定將值更改為(日期從,日期到,信用值)。拆分表現(xiàn)在可能會(huì)派上用場。
我的投票將是針對多個(gè)表-數(shù)據(jù)已適當(dāng)拆分。

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
合并表稱為非規(guī)范化。
可能會(huì)(或可能不會(huì))使某些查詢(使很多JOIN
s)更快地運(yùn)行,而以創(chuàng)建維護(hù)地獄為代價(jià)。
MySQL
只能使用JOIN
方法,即NESTED LOOPS
。
這意味著對于驅(qū)動(dòng)表中的每個(gè)記錄,MySQL
在循環(huán)中在驅(qū)動(dòng)表中找到匹配的記錄。
查找記錄是相當(dāng)昂貴的操作,可能需要花費(fèi)純記錄掃描數(shù)十倍的時(shí)間。
將所有記錄移到一個(gè)表中將幫助您擺脫此操作,但是表本身會(huì)變大,并且表掃描需要更長的時(shí)間。
如果其他表中有很多記錄,則表掃描的增加可能會(huì)增加按順序掃描記錄的好處。
另一方面,可以保證維護(hù)。

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
他們都是1:1的關(guān)系嗎?我的意思是,如果某個(gè)用戶可以屬于不同的用戶級別,或者如果用戶興趣在用戶興趣表中表示為多個(gè)記錄,那么合并這些表將立即成為問題。
關(guān)于以前關(guān)于規(guī)范化的答案,必須說數(shù)據(jù)庫規(guī)范化規(guī)則完全忽略了性能,而只是在看什么是整潔的數(shù)據(jù)庫設(shè)計(jì)。這通常是您想要實(shí)現(xiàn)的目標(biāo),但是有時(shí)在追求性能方面積極地規(guī)范化是有意義的。
總而言之,我要說的問題歸結(jié)為表中有多少個(gè)字段,以及它們被訪問的頻率。如果用戶活動(dòng)通常不是很有趣,那么出于性能和維護(hù)的原因,始終將其保留在同一記錄上可能會(huì)很麻煩。如果經(jīng)常訪問某些數(shù)據(jù)(例如設(shè)置),但僅包含太多字段,則合并表可能也不方便。如果僅對性能提高感興趣,則可以考慮其他方法,例如將設(shè)置分開,但將其保存在自己的會(huì)話變量中,這樣就不必經(jīng)常查詢數(shù)據(jù)庫。
添加回答
舉報(bào)