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
我明白,我沒有試圖攻擊某人或某事。但我的問題是:我應該選擇哪條路線?對於查詢的速度,WP是否會受到損害? – Solo
您應該選擇更適合您目標的方法。我的意思是,如果您預見未來您的解決方案不會在新屬性方面增長,請使用列。現在,如果你看到複雜性增加,那麼動態屬性表可能是最好的方法。 –
因此,爲了給OP一個建議他的情況,使數據庫具體,因爲你有完全的控制,並把所有相關的領域在一行。 –