0

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

用户:用户ID、姓名等......

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

4

2 回答 2

1

USER_QUESTION_ANSWER个人会坚持使用这张桌子。它不是 100% 规范化的,因为您QuestionIdANSWER表中和表中都有 ,USER_QUESTION_ANSWER但这种类型的反规范化并不罕见。它使查询和报告更容易。您的 PRIMARY KEY onUSER_QUESTION_ANSWER将在UserId, AnswerId列上,因为就唯一性而言,这QuestionId是无关紧要的。

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

在此处输入图像描述

于 2013-04-21T20:24:21.927 回答
0

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

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

于 2013-04-21T19:27:07.710 回答