Database design 数据库设计-如何存储与如何显示

Database design 数据库设计-如何存储与如何显示,database-design,web-applications,Database Design,Web Applications,假设您在调查中有以下问题需要转换到数据库中,然后在Web应用程序中使用: 在上周末,你吃了以下哪种食物 冰激凌 色拉 炸鸡 在上面的示例中,我们自动建立连接。但是为了让问题在数据库中有意义,它们应该这样存储吗?: 上周末你吃冰淇淋了吗 上周末你吃沙拉了吗 上周末,你吃过油炸支票吗 假设您使用的是这样的设计,将它们存储在这样的表中似乎是合理的: [During the last weekend, did you eat ice cream] -> questions_table.qu

假设您在调查中有以下问题需要转换到数据库中,然后在Web应用程序中使用:

在上周末,你吃了以下哪种食物

  • 冰激凌
  • 色拉
  • 炸鸡
在上面的示例中,我们自动建立连接。但是为了让问题在数据库中有意义,它们应该这样存储吗?:

  • 上周末你吃冰淇淋了吗
  • 上周末你吃沙拉了吗
  • 上周末,你吃过油炸支票吗
假设您使用的是这样的设计,将它们存储在这样的表中似乎是合理的:

[During the last weekend, did you eat ice cream] -> questions_table.question_name
[Yes/No] -> Option_group_table.option_group_name
[Yes][No] -> option_choices_table.option_choice_name
[True or False] -> answers_table.answers_yn
然而,如果您想从这些数据构建一个wepage,那么它的显示将非常混乱:

  • 上周末你吃冰淇淋了吗
  • 上周末你吃沙拉了吗
  • 上周末,你吃过油炸支票吗
前端webapp是否应该解决这个问题?通过一些手段,如正则表达式?

Function_to_help_properly_display_string("String")
[Question table]
[question.heading] -> During the last weekend, which of the following did you eat?:
[question.list] -> ice cream
[question.full] -> During the last weekend, did you eat ice cream? 
这种方法的缺点似乎是不同的问题。问题名称(字符串)不能以相同的方式处理。例如:

你周末去了以下哪一个地方

  • 德国
  • 法国
不能像我们原来的问题那样处理

或者数据库应该考虑到这一点,因为它可能有更多的列吗?

Function_to_help_properly_display_string("String")
[Question table]
[question.heading] -> During the last weekend, which of the following did you eat?:
[question.list] -> ice cream
[question.full] -> During the last weekend, did you eat ice cream? 
这样做的缺点是它看起来重复且杂乱无章

最有可能的是他们的第三个选择,我没有介绍,请随意分享!
提前感谢,

我已经为调查做了几次数据库设计/UI设计,下面是我使用的:

表格:问题

字段:问题id、问题文本、显示顺序、问题类型、必填项

请注意,显示顺序、问题类型和必填字段都是对UI的提示。我们没有将问题和答案一起存储在文本中,但我们已经向web开发人员提供了如何在UI中显示问题的提示。我们告诉他们应该出现的顺序,问题的类型(复选框/多项选择-或单选按钮/一项选择),以及是否需要问题

表格:问题选项

字段:问题\选项\ id、问题\ id、选项\文本、显示\顺序

这里也一样。我们有一些关于显示顺序和选项文本的UI帮助。请注意,使用我们的选项,我们并不是在命令UI中发生的事情。这是在问题层面上进行的。这意味着您可以轻松更改选项的显示方式(下拉列表、单选按钮、复选框等)

还请注意,我们将加入问题的能力保留下来

表格:答案

字段:用户id、问题id、问题选项id

这只是告诉我们,对于给定的用户和给定的问题,用户回答了什么

这三种结构都是在数据库中进行调查的良好开端。用户界面从这里非常自然地流动。您必须编写查询/存储过程才能将数据返回到web应用程序,但这并不难

(一般来说,我认为尝试将字符串解析作为数据库数据显示的一部分是不明智的。换句话说,我认为尝试使用正则表达式编写问题/答案以在UI中显示是不明智的。正确地建模数据库,您会发现应用程序的其余部分不难编码。)