gpt4 book ai didi

mysql - 用于记录多个答案的数据库设计

转载 作者:行者123 更新时间:2023-11-29 12:15:05 25 4
gpt4 key购买 nike

我正在为我正在进行的项目设计一个数据库。我有 3 个任务(用户可以从中选择)

第一个任务给出 10 个问题第二个任务给出了 20 个问题第三个任务有 30 个问题

我已经想出了一个改进的设计,但我仍然在挣扎。

看起来像:

用户(user_id、名称、reg_date)

测试(test_id,task_type [1,2,3],类别[有5个不同的类别])

响应(Response_id、user_id、test_id、response_date、response_1a、response_1b、response_2a、response_2b、...、response_30a、response_30b)

每个问题都有两个答案。答案 1 和答案 2。因此,如果有 10 个问题,则总共会记录 20 个答案。每个答案都是 0~1.0 之间的十进制值。

但是,我遇到了响应表有 +120 列的问题。

请注意,如果 test_id 为 1,则只有 10 个问题,因此 Response 表中从 response_11a 到 response_30b 的列将为空。

示例记录如下:

响应(1, 1, 1, 2015/04/30, 0.5, 0.5, 0.7, 0.7, 0.8, 0.8, ...(很多记录)..., 1.0, 0.3, null, null, null,(全部为null,因为test_id 1只有10个问题。))

我想不出另一种方法可以做到这一点。 :/

这是设计数据库的好方法吗?

编辑:

我有这样做的想法。

用户(user_id、名称、reg_date)

测试(test_id,task_type [1,2,3],类别[有5个不同的类别])

响应(resp_id、user_id、test_id、resp_date)

answers(resp_id(指向响应表的链接)、current_question_number、ans1、ans2)

因此,如果有 10 个问题,在 answers 表中,将有 10 条记录,如下所示:

(1, 1, 0.0, 0.0)
(1, 2, 0.0, 0.5)
(1, 3, 0.3, 0.6)
(1, 4, 0.5, 0.5)
...
(1, 10, 0.3, 0.3)

这个设计怎么样?

稍后,我将使用这些数据绘制图表,因此我需要轻松访问每个响应。

最佳答案

在数据库设计中,您经常必须考虑更多字段或更多记录,以及数据库需要如何规范化,您上面建议的方式并不完全规范化。

DB101 标准化 http://en.wikipedia.org/wiki/Database_normalization

我建议使用第四张表,也许还有第五张表

  • 用户:PK UserID、地址等属性..
  • 测试:PK TestID,一些额外属性
  • 问题(2xPrimary 字段,其中一个是外键)TestID、QuestionID、
  • Response(3xPrimary字段,其中两个是外键)TestID、QuestionID、ResponseID、一些额外属性

关于mysql - 用于记录多个答案的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29960073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com