单个表可以是两个父表的子表

时间:2015-11-15 15:49:49

标签: sql sql-server

我有两张桌子,一张问题表和一张答案表。

然后我有一个评论表,以便评论可以附加到问题或答案。每个问题或答案都有很多评论。

我应该创建两个评论表吗?或者将问答表与单个评论表相关联。我更喜欢这个,但似乎它不是标准化的。

3 个答案:

答案 0 :(得分:3)

使用问题和答案表中的两个外键创建注释表。足够了。

答案 1 :(得分:2)

这取决于。通常,您希望拥有外键关系。如果每个问题/答案只允许一条评论,那么很容易。每个表commentIdQuestions都有一个Answers。外键关系很简单。

维护外键关系并允许多个注释有点过时。可能最简单的方法是使用两个联结表QuestionCommentsAnswerComments。这需要适当的父级和Comments表。

注意:为什么您需要单独的注释表来实现这两个目的。例如,您可以将答案的评论分类到不同的组中。或者,您可能只允许每个用户对一个问题发表一条评论。如果注释位于不同的表中,则可能更容易实现这些不同的业务规则。

答案 2 :(得分: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;