我有两张桌子,一个问题桌子和一个答案桌子。一张桌子可以成为两个父母桌子的孩子吗
然后我有一个评论表,以便评论可以附加到问题或答案。每个问题或答案都有很多评论。
我应该创建两个评论表吗?或者将问题和答案表都与单个评论表相关联。我更喜欢这个,但它似乎是非标准化的。
我有两张桌子,一个问题桌子和一个答案桌子。一张桌子可以成为两个父母桌子的孩子吗
然后我有一个评论表,以便评论可以附加到问题或答案。每个问题或答案都有很多评论。
我应该创建两个评论表吗?或者将问题和答案表都与单个评论表相关联。我更喜欢这个,但它似乎是非标准化的。
这取决于。一般来说,你想拥有外键关系。如果每个问题/答案只允许一条评论,那么很容易。 A commentId
进入每个表中,Questions
和Answers
。有一个简单的外键关系。
保持外键关系,并允许多个评论是有点窍门。最简单的方法可能是有两个联结表,QuestionComments
和AnswerComments
。这想要适当的父母和Comments
表。
注意:是有原因的,你想为两个目的独立意见表。例如,您可以将答案的评论分为不同的组。或者,您可能只允许每个用户对某个问题发表一条评论。如果注释位于不同的表中,这些不同的业务规则可能更容易实现。
要扩展Gordon的答案......您的问题可能会揭示您架构中缺少的表或您即将实现的内容。如果一个Child表在一张桌子上显然没有单个父键,那么你可能会做些什么,你会后悔的。我不知道你的情况的默认答案是你想要两张表。当您将FK加入模型中的“测试服务实例标识”表时,此细节可能会显现出来。 –
@SqlSurfer你说得很好。 –
可以用评语表通过使用连接
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;
从问题的两个外键创建comments表,并回答表回答,问题表。它够了。
是的,它可以。 – i486