我瞭解到,SO已將問題和答案放在同一張表中。他們說,一個問題不會有父母身份,而答案會有父母身份。爲什麼這樣做更好,而不是將問題和答案放在單獨的表格中?爲什麼將問題和答案放在同一個數據庫表中?
3
A
回答
2
幾個原因:
- 概念上的問題和答案是不是真的,從建模的觀點不同;
- 它使搜索更容易(一個表而不是兩個);
- 如果你曾經試圖在兩個表中實現這樣的系統(這包括你有帖子啓動線程和回覆的論壇),你很快就會發現SQL非常快速地變得非常尷尬。
查看此問題的最佳方法是通過某些用例運行特定模型。
例如:以某種順序列出用戶的所有帖子(投票,日期等)。在兩張牌桌上,你最終做了某種聯盟,這並不是不可取的。如果它們存儲在同一個表中,則更容易。如果你只是想限制它的問題或答案,那麼相同的表格仍然很容易,因爲它只是一個額外的標準(例如WHERE parentID IS NULL的問題)。
1
Cletus是正確的,但請記住,通過這樣做你是否反規範化你的數據庫,因爲雖然答案和問題是相似的,但它們是不一樣的。特別是一個問題有很多答案,但每個答案只屬於一個問題 - 在那裏你將開始在表格中存儲冗餘重複數據。雖然根據您的基礎架構的不同,這樣做可能會有一些速度/開發優勢,但是如果您告訴任何數據庫管理員,他們會有心臟病發作:-)所以,您可以做到這一點,並且它可以讓開發變得更容易一些然而,編寫一些連接和聯合來提取相同的數據並不難。
相關問題
- 1. 調查數據庫 - 多個調查與問題和答案
- 2. 爲什麼在將數據插入數據庫時會複製答案?
- 3. 在1個查詢中獲取quize數據,問題和答案?
- 4. 爲什麼一個ceil函數會給出不同的答案?
- 5. 這個c代碼有什麼問題?答案始終爲零?
- 6. 從數據庫調用來顯示問題和答案
- 7. 如何使用問題和答案構建數據庫?
- 8. 存儲的問題和答案的不同類型的關係數據庫
- 9. 用不同答案數據類型的許多問題的數據庫設計
- 10. 如何使用該表格挑選問題並將數據庫中的答案保存到數據庫中
- 11. 在MySQL數據庫中保存隨機問題和答案的最佳方法
- 12. 爲什麼在python map()和multiprocessing.Pool.map()有不同的答案?
- 13. 爲什麼答案是42?
- 14. 爲什麼答案是「好」?
- 15. 隨機播放問題數組和答案多維數組相同
- 16. CAPTCHA問題的另一個答案?
- 17. Android的答案數據庫
- 18. 這段代碼有什麼問題?得到0作爲答案
- 19. XML答案問題
- 20. 在java中用於問答遊戲的問題和答案的2個列表問題
- 21. 在1個單個查詢中獲取問題和答案
- 22. 在Python 3.5中,在劃分一個偶數時,爲什麼劃分和劃分給出了不同的答案
- 23. 設計數據庫,用於在博客頁面上標記問題和答案
- 24. 數據庫設計 - 問題,答案,標籤
- 25. 保存統計數據庫的錯誤問題的答案
- 26. 如何設計數據庫的問題答案(MySql)
- 27. 爲什麼分割'(?!^)`和`(?<!^)`產生相同的答案?
- 28. 使用DbGeography和SqlGeography獲取不同答案:爲什麼?
- 29. 用Perl和html編輯一個問題和答案的文件
- 30. 「發佈一個答案」鏈接未顯示在問題的答案模塊Drupal
嗯......沒有。問題 - >答案是一種自我指涉的一對多關係。這是經典的E-R建模以及任何數據庫人員都很容易理解的內容。 – cletus 2009-11-26 03:27:48
@Nick:cletus是對的,我最後的地方叫它「豬尾巴」。 – 2009-11-26 04:07:45
我明白你在說什麼,但在這種情況下是最好的解決方案。這是爲什麼。如果你有類似的東西需要參考 - 那麼是的,這種方法是最好的。例如,假設一家營銷公司有一個網站和一張賬目表,需要說明誰來參與該網站的註冊支付推薦費,那麼您可以使用豬尾巴。然而,取決於你的數據是如何設置的答案和問題最有可能是不同類型的對象。但是,如果在OS上對IF答案和問題進行建模,這是一種有效的方法。 – konung 2009-11-29 02:24:09