我有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 回答
我会亲自坚持
USER_QUESTION_ANSWER
表 . 它不是100%标准化,因为ANSWER
表中的QuestionId
以及USER_QUESTION_ANSWER
表,但这种类型的反规范化并不罕见 . 它使查询和报告更容易 .USER_QUESTION_ANSWER
上的PRIMARY KEY将位于UserId, AnswerId
列上,因为就唯一性而言QuestionId
是无关紧要的 .基本上你最终会得到的是:
我认为你需要4个表:USER,QUESTION,ANSWER(Id,description)和表格如何记录关系:UQA(id user,id question,id answer)
容易计数(用户有多少答案)和不同(一个用户有很多问题,一个问题答案)