我目前有一個數據庫,其中有兩個表稱爲文章和標籤。爲了讓文章分爲多個類別,我有多對多的關係。在性能方面有這樣的設計是錯誤的嗎?或者我應該刪除這兩個表之間的關係,並添加第三個表作爲橋樑(articlesTags)?數據庫設計中的多對多關係
6
A
回答
15
擁有多對多關係本身並沒有什麼錯誤,您只需要創建一個Junction Table(這聽起來就像您指的是articlesTags
)以促進這種關係。
1
4
關係模型中存在多對多的關係,它只是一個抽象的思維。 當你實現它會有一個articles_to_tags表,你將有:
fk_article(整數) fk_tag(整數)
2
有使用許多沒問題許多關係。它通常是必需的。
是的,無法使用第三個表創建多對多關係。
6
您將看到概念數據庫設計(N:N關係)與物理實現之間的區別。不管你如何模擬你的N:N關係,你都需要上述的連接表來使它工作。
將真實世界的關係模擬爲與真實世界接近的一般性陳述並沒有錯。清晰是國王。
當談到任何系統中的任何性能問題時,答案通常歸結爲「取決於」。
如果你的性能問題與WRITES相關,那麼高度的NORMALIZED結構是最好的,你會需要該Junction表。你最終會寫更少的數據,並且可以大幅度提高速度(儘管你可能會在創建插入之前先進行查找來消化這些優勢)。從各個標準化表中讀取也可以非常快。
如果您的問題與分析性閱讀有關,那麼DENORMALISED結構是最好的。如果表格很大並且索引展開,連接可能會非常耗費性能。你會犧牲很多空間來獲得很多時間。
一般來說,在決定解決方案之前,您需要查看自己的具體情況並權衡每種方法的優缺點。就個人而言,如果我稍後發現問題,我總是發現在初始階段專注於清晰度並重構性能會更好。
相關問題
- 1. 多對多關係數據庫設計
- 2. 如何設計對象數據庫中的多對多關係?
- 3. 數據庫設計採用多很多一對多的關係
- 4. Mysql數據庫設計中的多對多關係
- 5. 關係數據庫設計:兩個1對多的關係
- 6. 最佳MySQL數據庫設計多多對多關係
- 7. 多對多關係的數據庫設計
- 8. 如何區分設計數據庫時的多對多關係?
- 9. 數據庫設計與其他表的多對多關係
- 10. 子列或多對多關係的數據庫設計
- 11. 使用Mongoid數據庫設計的多對多關係?
- 12. 數據庫設計:責令很多一對多的關係
- 13. 用戶,UserRole的數據庫設計 - 多對多關係
- 14. Django - 涉及屬性關係的多對多關係的數據庫設計
- 15. 數據庫設計:遞歸多對多關係
- 16. 關係數據庫設計(正火許多一對多映射)
- 17. 多對多數據庫關係設計 - 啓用Word雲
- 18. 數據庫設計 - 一對多關係中的「特殊」條目
- 19. 數據庫中的一對多關係 - 設計概念
- 20. 關係數據庫一對多關係
- 21. 如何在關係數據庫中有多對多的關係
- 22. 數據庫設計 - 定義基本的多對一關係
- 23. 有關多個一對多關係和外鍵的數據庫設計問題
- 24. Exclusice弧和多多對多的關係數據庫設計問題
- 25. 多對多的關係mysql的設計
- 26. 數據庫多對多關係
- 27. 數據庫關係 - 多對多
- 28. 數據庫關係多對多
- 29. 關係數據庫,多對多
- 30. 多個一對多的關係設計
如何在不使用articlesTags表的情況下創建多對多關係? – flayto 2009-08-13 18:24:20
如果你有多對多的關係,你需要第三張表格來代表 - 沒有明智的選擇。如果你的數據庫管理系統支持,你最近的方法可能是每個表中的SET結構。但是對於這種類型,通常沒有太多的表間檢查 - 單獨的表是必要的。 – 2009-08-13 19:14:22