2010-10-08 171 views
4

下面是我擁有的一個示例(採用堆棧溢出)。我有2個表格,QuestionsAnswers。我也有一個Comments表。評論表將引用問題和答案。數據庫設計 - 列在一個表中參考兩個表

我該如何設置數據庫?在評論中有2列,QuestionId和AnswerId。有問題和答案的一張桌子?在中間有一張表,以某種方式告訴我問題或答案?

編輯:發現如此數據資源管理器,它採用兩個問題與解答一個表...我只是不喜歡POSTS表中有這麼多的空值。這是否有任何負面影響,如性能?

回答

1

StackOverflow將問題和答案建模爲同一實體:POSTS。除了在接受/授予的情況下指明答案外,它們具有相同的屬性。

評論獲得自己的表,並涉及到相應的職位使用外鍵 - post_id

無需加載每月SO轉儲,you can view (and query) the SO schema via the StackExchange Data Explorer

+0

終於有機會看看SO數據。我唯一不喜歡的是有很多NULL列。這會以任何方式影響性能嗎? – Martin 2010-10-08 12:34:54

+0

@Martin:這取決於你需要運行的查詢。 – 2010-10-08 14:10:36

1

創建另一個關係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

乾杯。

1

你的意思是你可以對問題和答案都有評論?您將有5個表:

question 
answer 
comment 
question_comment 
answer_comment 

question_comment將有一個comment_idquestion_id。類似的交易answer_comment

相關問題