首页 文章

解决多对多的关系

提问于
浏览
0

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

USER:UserId,名称等....

答案:答案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 回答

  • 1

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

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

    enter image description here

  • 0

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

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

相关问题