【问题标题】:Database Design Advice - Multiple yes or no Questions数据库设计建议 - 多个是或否问题
【发布时间】:2013-07-08 23:08:10
【问题描述】:

我目前正在设计一个数据库表和与之配套的 vb 表格。该表格将向每个用户询问大约 40 个预定义的是/否问题。我如何设计数据库表以便它适当地存储答案。我宁愿避免在桌子上有 40 个左右的属性。有没有办法设计它,以便当您查询特定用户的答案时,您会看到问题并在其旁边看到他的答案(是/否) 谢谢

【问题讨论】:

  • 一张表,三个字段:UserID、QuestionID、AnswerText
  • 我看到图片了。谢谢

标签: mysql database vb.net database-design relational-database


【解决方案1】:

我会这样做。列出 QUESTION 表中的所有问题。这也意味着您可以随时通过添加新行来添加新问题。

用户

用户 ID |用户名 |电子邮件 |等等..

问题

问题 ID |问题

USER_RESPONSE

用户 ID |问题ID |回应


SELECT
user.Name,
question.Qustion,
user_response.Responce
FROM
user
INNER JOIN user_response
ON user.UserId = user_response.UserId
INNER JOIN question
ON user_response.QuestionId = question.QuestionId
WHERE
user.UserName = 'JoeBloggs'

【讨论】:

    【解决方案2】:

    用最简单的术语来说,制作一个(“用户”)表,以 UserID 作为字段 1 开始。 制作一个包含所有问题的 Q 表(仅当您不想在程序中硬编码这些问题时) 制作一个答案表,这个表应该有 2 列...用户 ID 和答案

    您不一定需要为这 2 个外键添加外键,尽管从长远来看,在删除数据方面它会更好(它会让您知道为什么您不能删除用户,例如,如果他仍然有问题没有被删除,这是为了避免你真的不需要保留的空间,因为用户将被删除)

    然后,您要做的就是在一次或一次提交问题 1 时,将用户 ID 连同答案一起输入答案表。所以用户 1 永远是 1 并且答案会改变。

    如果我是你,我也会创建问题表。所以整个事情看起来像

    用户表

    UserID、UserName、UserPass、User...、User... 等

    问题表

    问题ID,问题

    答案表

    用户ID、问题ID、答案

    所以在你的程序中,既然你知道哪个问题对应哪个 questionID,你就可以插入

    1(UserID),1(to40forQuestionID),answer.text(Answer) 到答案表中

    那么您将始终能够从答案表中获取所有信息,知道哪个答案属于哪个问题和哪个用户等等。

    如果你需要术语来配合他的解释,我会尽量省略所有术语,以防你不知道它们。

    【讨论】:

    • 请不要忘记为您认为正确、有帮助的任何答案投票:P 快乐编码
    【解决方案3】:

    您可以将问题和答案存储在单独的表格中。具体来说,您将有一个 Questions 表,其中包含 40 个是/否问题。 Answers 表将包含问题标识符、用户标识符和答案列(对于是/否问题,您可以只使用布尔值)。 AnswerChoices 也可以是单独的表。

    根据您的需要,有很多可能的灵活性。如果同一用户可以多次参加调查,您可以使用用户调查表并将答案链接到该表。如果需要进行多项调查,您还可以有一个调查-问题映射表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 2011-08-05
      相关资源
      最近更新 更多