2015-11-15 53 views
1

我有兩張桌子,一個問題桌子和一個答案桌子。一張桌子可以成爲兩個父母桌子的孩子嗎

然後我有一個評論表,以便評論可以附加到問題或答案。每個問題或答案都有很多評論。

我應該創建兩個評論表嗎?或者將問題和答案表都與單個評論表相關聯。我更喜歡這個,但它似乎是非標準化的。

+0

是的,它可以。 – i486

回答

2

這取決於。一般來說,你想擁有外鍵關係。如果每個問題/答案只允許一條評論,那麼很容易。 A commentId進入每個表中,QuestionsAnswers。有一個簡單的外鍵關係。

保持外鍵關係,並允許多個評論是有點竅門。最簡單的方法可能是有兩個聯結表,QuestionCommentsAnswerComments。這想要適當的父母和Comments表。

注意:是有原因的,你想爲兩個目的獨立意見表。例如,您可以將答案的評論分爲不同的組。或者,您可能只允許每個用戶對某個問題發表一條評論。如果註釋位於不同的表中,這些不同的業務規則可能更容易實現。

+1

要擴展Gordon的答案......您的問題可能會揭示您架構中缺少的表或您即將實現的內容。如果一個Child表在一張桌子上顯然沒有單個父鍵,那麼你可能會做些什麼,你會後悔的。我不知道你的情況的默認答案是你想要兩張表。當您將FK加入模型中的「測試服務實例標識」表時,此細節可能會顯現出來。 –

+0

@SqlSurfer你說得很好。 –

1

可以用評語表通過使用連接

 
     table question: 
id |questionDes |commentId| 
1 | what  | 2  | 

table answer 
|id | answerDes| commentId| 
|201| yes  |  44 | 
table comment 
|id |commentDes| commentId| 
|2 | hi  |2   | 
|4 |nii  | 44  | 

you sql query will be-- 
SELECT questionDes.question, commemtDes.comment 
FROM question 
INNER JOIN comment 
ON commentId.question=commentId.comment; 
and 
SELECT answerDes.answer, commemtDes.comment 
FROM answer 
INNER JOIN comment 
ON commentId.answer=commentId.comment; 
3

從問題的兩個外鍵創建comments表,並回答表回答,問題表。它夠了。