2016-04-28 57 views
1

TL; DR:如果您有30個不同的值都指向相同的對象ID,並且您需要全部檢索它們,但是如果此數據位於單獨的行中或全部位於同一行(多列)中,它會有什麼區別?如果我需要請求來自那一行的所有數據,列數是否重要?


小背景:

的WordPress有這個很搞笑的數據庫設置(IMO):

  • 文章有自己的表和所有重要的數據是在縱「佈局「(如第一個代碼塊)
  • 您可能想要添加的所有其他相關數據都有單獨的表格,就像第二個代碼

我想我明白他們在做什麼 - 博主或主題建設者不想惹DB。


這是我第一次從頭到尾項目,我不是數據庫專家。所以我認爲最好從我的老朋友WordPress做起。我使用Node.js服務器,GraphQL和MariaDB數據庫。

項目每個帖子需要大量的數據(個人,無法正常化),我最終會遇到這樣一種情況,即在郵政表中有20萬行,在其他情況下有30多倍,這就產生了一個問題:

爲什麼不把所有的30個值放在列而不是行中?

我看過幾個小時的技術教程和閱讀博客,但我仍然不是100%確定它是如何工作的:如果我在一個請求中需要下面的所有數據,我應該選擇哪個「設計」?是WordPress錯誤&他們只是爲了方便用戶(第二個有很多重複鍵)這麼做?

我不太在乎存儲,我關心超快速讀取和快速寫入。


------------------------------------------------------------------- 
id | post id | color | shape | weight | length | width 
------------------------------------------------------------------- 
1  55  blue  sqare  50  110  110 

------------------------------------- 
id | post_id | key | value 
------------------------------------- 
1  55  color  blue 
2  55  shape  sqare 
3  55  weight  50 
4  55  length  110 
5  55  width  110 

回答

1

WordPress的這樣做,作爲其產品的發展,促進少數據庫更改。想象一下這種情況:如果他們必須創建一個新列以對應一個新屬性,那麼對於用戶而言,在每次更改時都難以促進所需的數據庫更改。事實上,大多數動態數據庫,在像Wordpress這樣的CMS中都有這個概念,以便於進行簡單的更改。其他類型的系統也是這樣做的。

+0

我明白,我沒有試圖攻擊某人或某事。但我的問題是:我應該選擇哪條路線?對於查詢的速度,WP是否會受到損害? – Solo

+0

您應該選擇更適合您目標的方法。我的意思是,如果您預見未來您的解決方案不會在新屬性方面增長,請使用列。現在,如果你看到複雜性增加,那麼動態屬性表可能是最好的方法。 –

+0

因此,爲了給OP一個建議他的情況,使數據庫具體,因爲你有完全的控制,並把所有相關的領域在一行。 –

相關問題