Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql ';问题';和';答案';有多个答案_Mysql_Sql_Rdbms_Rdbms Agnostic - Fatal编程技术网

Mysql ';问题';和';答案';有多个答案

Mysql ';问题';和';答案';有多个答案,mysql,sql,rdbms,rdbms-agnostic,Mysql,Sql,Rdbms,Rdbms Agnostic,这个问题与这个帖子有关: 我有一个调查应用程序,大多数问题的答案都是1-5。现在我们要做的问题可能有各种不同的答案类型——数字、日期、字符串等等。多亏了stack的建议,我用了一个字符串列来存储答案。有些问题是多项选择题,所以除了“问题”表外,我还有一个“答案”表,其中包含一个问题的可能答案集 现在:我应该如何存储“选择所有适用的”问题的答案?我应该制作一个“选择答案”或类似的子表吗?或者答案表是否应该有一个“已选择”列,表明受访者选择了该答案?一个可能的解决方案是一个UsersAnswers

这个问题与这个帖子有关:

我有一个调查应用程序,大多数问题的答案都是1-5。现在我们要做的问题可能有各种不同的答案类型——数字、日期、字符串等等。多亏了stack的建议,我用了一个字符串列来存储答案。有些问题是多项选择题,所以除了“问题”表外,我还有一个“答案”表,其中包含一个问题的可能答案集


现在:我应该如何存储“选择所有适用的”问题的答案?我应该制作一个“选择答案”或类似的子表吗?或者答案表是否应该有一个“已选择”列,表明受访者选择了该答案?

一个可能的解决方案是一个UsersAnswers表,它有4列:主键、用户id、问题id和答案id


对于可以选择多个答案的任何问题,都有多个条目

一个可能的解决方案是一个UsersAnswers表,它有4列:主键、用户id、问题id和答案id


任何问题都有多个条目,可以选择多个答案

我有两条建议

  • 规范化您的数据库,并创建一个名为
    question\u answer
    的表,或更符合您的模式命名法的表。这就是我的布局

    CREATE TABLE question_answer (
        id INT NOT NULL AUTO INCREMENT PRIMARY KEY,
        user_id INT NOT NULL,
        question_id INT NOT NULL,
        answer_id INT NOT NULL
    );
    
  • 答案
    表中创建五列,每列都指向特定答案。在MySQL中,我将使用设置这些列为
    位(1)


  • 除非你看到选择的数量改变,否则我会坚持选择2。这是一个更快的选择,很可能也会节省您的空间。

    我有两个建议

  • 规范化您的数据库,并创建一个名为
    question\u answer
    的表,或更符合您的模式命名法的表。这就是我的布局

    CREATE TABLE question_answer (
        id INT NOT NULL AUTO INCREMENT PRIMARY KEY,
        user_id INT NOT NULL,
        question_id INT NOT NULL,
        answer_id INT NOT NULL
    );
    
  • 答案
    表中创建五列,每列都指向特定答案。在MySQL中,我将使用设置这些列为
    位(1)


  • 除非你看到选择的数量改变,否则我会坚持选择2。这是一个更快的选项,很可能也会节省您的空间。

    由于您不会选择太多选项,我会尝试将答案存储为字符串答案列中以逗号分隔的值列表


    如果用户从网页上带有问题的一组复选框中选择答案(假设它是一个web应用程序),那么您也会从中返回一个逗号分隔的列表。(虽然您不能将列表作为字符串进行比较,因为答案“red,blue”与“blue,red”相同)

    由于您不会选择太多选项,我会尝试将答案存储为字符串答案列中以逗号分隔的值列表


    如果用户从网页上带有问题的一组复选框中选择答案(假设它是一个web应用程序),那么您也会从中返回一个逗号分隔的列表。(虽然你不能仅仅将列表作为字符串进行比较,因为答案“红色,蓝色”与“蓝色,红色”相同。)

    另一种选择(我也见过这样的问题是如何评分的),就是将每个可能的答案作为一个单独的是/否问题,并记录受试者的回答(选择或不选择)作为一个布尔值

    另一种选择(我也见过这样的问题是如何评分的),是将每个可能的答案作为单独的是/否问题处理,并将受试者的回答(选择或不选择)记录为布尔值

    这些调查问题总是有一个通用的答案:这取决于你完成后想对答案做什么。

    例如,如果您只想保留每个单独答案的记录(并且永远不做任何合计或查找所有回答了问题x和答案y的用户),那么最简单的设计就是将答案反规范化到序列化字段中

    如果您需要总计,如果您在汇总表中计算总计并在提交测验时更新值,那么您可能还可以在序列化表中获得非规范化答案


    因此,对于您的具体问题,您需要决定,当您的意思是“以上所有”时,存储5对您的最终产品是否更有用,或者将四个选项中的每一个单独选择是否更有用。

    这些调查问题总是有一个,通用答案:这取决于你完成后想对答案做什么。

    例如,如果您只想保留每个单独答案的记录(并且永远不做任何合计或查找所有回答了问题x和答案y的用户),那么最简单的设计就是将答案反规范化到序列化字段中

    如果您需要总计,如果您在汇总表中计算总计并在提交测验时更新值,那么您可能还可以在序列化表中获得非规范化答案


    因此,对于您的具体问题,您需要决定,当您指的是“以上所有”时,存储5对您的最终产品是否更有用,或者将四个选项中的每一个单独选择是否更有用。

    是的,这非常诱人,:D尽管Jimmy的看起来是正确的。这个想法也打动了我,但是,当我尝试运行聚合报告时,它似乎有问题——如果我想获得一组调查的唯一值及其各自的计数,这将涉及一些majro字符串解析。如果您确实想运行类似“所有适用问题的最常见错误答案”的报告,这可能是一个问题。是的,这非常诱人,当前位置虽然吉米的看起来像是对的