解决多对多的关系

时间:2013-04-21 18:14:11

标签: sql-server database foreign-keys entity-relationship relationship

我有3个表,我试图弄清楚如何设置关系。该数据库用于跟踪调查问题和答案。用户可以回答很多问题,问题可以有很多答案,答案只能与一个问题相关联。许多用户都可以使用答案。

USER:UserId,name等....

答案:答案ID,AnswerText,QuestionId

问题:QuestionId,QuestionText

我正在考虑添加一个表来解决问题:

USER_QUESTION_ANSWER:id,AnswerId,QuestionId,Userid

Answerid,questionid和userid都是相应表格的FK。然而,这似乎不正确。它似乎应该只是:

QUESTION_ANSWER:id,QuestionId,Answerid

但我遇到的问题是我需要跟踪用户给出了什么答案。 ANSWER表已经跟踪了什么问题的答案。我应该添加2个新表吗?

USER_ANSWER:id,Userid,Answerid

QUESTION_ANSWER:id,QuestionId,Answerid

2 个答案:

答案 0 :(得分:1)

我会亲自坚持USER_QUESTION_ANSWER表。它没有100%标准化,因为QuestionId表中的ANSWER以及USER_QUESTION_ANSWER表,但这种类型的反规范化并不罕见。它使查询和报告更容易。 USER_QUESTION_ANSWER列上的主要密钥将位于UserId, AnswerId列上,因为就唯一性而言QuestionId无关紧要。

基本上你最终会得到的是:

enter image description here

答案 1 :(得分:0)

我认为你需要4个表:USER,QUESTION,ANSWER(Id,description)和表格如何记录关系:UQA(id user,id question,id answer)

易于计算(用户有多少答案)和不同(一个用户有很多问题,一个问题有一个答案)