下面是我擁有的一個示例(採用堆棧溢出)。我有2個表格,Questions
和Answers
。我也有一個Comments
表。評論表將引用問題和答案。數據庫設計 - 列在一個表中參考兩個表
我該如何設置數據庫?在評論中有2列,QuestionId和AnswerId。有問題和答案的一張桌子?在中間有一張表,以某種方式告訴我問題或答案?
編輯:發現如此數據資源管理器,它採用兩個問題與解答一個表...我只是不喜歡POSTS
表中有這麼多的空值。這是否有任何負面影響,如性能?
下面是我擁有的一個示例(採用堆棧溢出)。我有2個表格,Questions
和Answers
。我也有一個Comments
表。評論表將引用問題和答案。數據庫設計 - 列在一個表中參考兩個表
我該如何設置數據庫?在評論中有2列,QuestionId和AnswerId。有問題和答案的一張桌子?在中間有一張表,以某種方式告訴我問題或答案?
編輯:發現如此數據資源管理器,它採用兩個問題與解答一個表...我只是不喜歡POSTS
表中有這麼多的空值。這是否有任何負面影響,如性能?
StackOverflow將問題和答案建模爲同一實體:POSTS
。除了在接受/授予的情況下指明答案外,它們具有相同的屬性。
評論獲得自己的表,並涉及到相應的職位使用外鍵 - post_id
。
無需加載每月SO轉儲,you can view (and query) the SO schema via the StackExchange Data Explorer。
創建另一個關係Post_Type
以跟蹤Comments
表中的ID是否是問題或答案。
post_type varchar(20) NOT NULL,
post_type_id tinyint PRIMARY KEY,
然後在你的Comments
表,添加Post_Type.post_type_id
爲外鍵,除了用於跟蹤您的問題ID /應答標識的屬性。
在Comments
表中,您不需要兩列(QuestionId + AnswerId),因爲這會在您的方案問題域中的任一列中給出null
。
乾杯。
你的意思是你可以對問題和答案都有評論?您將有5個表:
question
answer
comment
question_comment
answer_comment
表question_comment
將有一個comment_id
和question_id
。類似的交易answer_comment
。
終於有機會看看SO數據。我唯一不喜歡的是有很多NULL列。這會以任何方式影響性能嗎? – Martin 2010-10-08 12:34:54
@Martin:這取決於你需要運行的查詢。 – 2010-10-08 14:10:36