mysql数据库设计的最佳实践

时间:2017-03-05 08:15:46

标签: mysql database

假设我有一个表格,我不得不问用户一些问题。示例问题如下所示。

  

您是在家中还是在家外工作以获得报酬?

和答案是

  1. 没有
  2. 我不想回答
  3. 如果用户选择,那么我必须提出其他问题,例如

      

    工作类型?

    答案是:

    1. 全职
    2. 兼职
    3. 其他
    4. 现在,如果用户选择其他,我必须显示某些文字输入的edittext

      对于这种情况,设计数据库来存储答案的最佳做法是什么。 我在想2个选项

      1. 答案的一栏[由'分隔,' ]。示例:是,全职是,其他,某些文字
      2. 答案的三栏[每栏包含答案的一部分]。示例:

        enter image description here

      3. 哪种选择是好的做法???如果我有深度5/6/7或更多的条件问题的类型,那么我如何将数据存储在表中。对于这种类型的场景,有没有更好的方法或良好的做法。 提前致谢。

2 个答案:

答案 0 :(得分:1)

我认为你应该将问题分开:

  1. 您需要为每个问题创建ID,然后添加答案
  2. 添加相关问题的专栏
  3. 类似这样的事情

    date,user_id,question_id,answer,answer_position, related_question 
    xxx   yyy     1             yes   1               5
    

    这种模式对分析更有效。 并且您不会受限于未来的变化

答案 1 :(得分:0)

根据问题的其余部分 - 答案和关系,有不同的方法。

也许您想尝试一个表格,例如:

id | questionid | order | text | moreinfo |
-----------------------------------------
1  |          1 |     1 |  Yes |        0 |
2  |          1 |     2 |   No |        0 |
3  |          2 |     1 |  Full time |  0 |
4  |          2 |     2 |  Part time |  0 |
5  |          2 |     3 |  Other     |  1 |

在上面的例子中,我已经包含了questionid。这将引用存储在另一个表中或可能在此表中的问题,具体取决于您可能已经存储了任何其他问题。这类似于以下内容。

id | parentid | order |        text       | moreinfo |
-----------------------------------------
1  |        0 |     1 | Are you working?  |        0 |
2  |        1 |     1 | Yes               |        0 |
3  |        1 |     2 | No                |        0 |
4  |        2 |     2 | Great! How much?  |        0 |
5  |        4 |     1 | Full time         |        0 |
6  |        4 |     2 | Part time         |        0 |
7  |        4 |     3 | Other             |        1 |

在上面这个例子中,我已经将parentid包括在这个表内部引用父答案,这导致了二次答案。这种结构在概念上是相似的,实际上只是在字段名称及其哲学意义上有所不同。

  

如果我有5/6/7或更深的条件问题类型   我如何在表中存储数据。有没有更好的方法或好的方法   练习这种类型的场景。提前谢谢。

第二个表示例本身可以嵌套5/6/7/1000深,因为它是一个自引用表。您可以根据需要添加其他字段!

请阅读规范化数据库结构,它会睁开眼睛,给你更多的想法。这是一个示例链接:

http://www.guru99.com/database-normalization.html