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