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

时间:2013-01-13 16:20:39

标签: database-design web-applications

假设您在调查中有以下问题需要转换为数据库,然后在webapp中使用:

  

在上周末,你吃了以下哪一个?

     
      
  • 冰淇淋
  •   
  • 沙拉
  •   
  • 炸鸡
  •   

在上面我们自动建立连接。但是为了让问题在数据库中有意义它们应该像这样存储吗?:

  • 在上周末,你吃冰淇淋了吗?
  • 上周末,你吃沙拉了吗?
  • 在上周末,你吃过炸检查吗?

假设您使用的设计类似于Micheal's,将它们存储在如下表格中似乎是合理的:

[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应该解决这个问题吗?通过像regex这样的方法吗?

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? 
做这样的事情的缺点是看起来重复和杂乱。

很可能他们是第三个选项,我不提供,随时分享! 提前谢谢,

1 个答案:

答案 0 :(得分:1)

我已经多次为调查完成了数据库设计/ UI设计,这就是我用过的东西:

表:问题

字段:question_id,question_text,display_order,question_type,required

请注意,display_order,question_type和required字段都是UI的提示。我们没有在文本中存储问题和答案,但我们已经向Web开发人员提供了有关如何在UI中显示问题的提示。我们告诉他们应该出现的顺序,问题是什么(复选框/多选 - 或 - 单选按钮/一个选项),以及是否需要提问。

表:question_options

字段:question_option_id,question_id,option_text,display_order

这里也是一样的。我们在显示顺序和选项文本方面提供了一些UI帮助。请注意,根据我们的选项,我们并未指示UI中发生的情况。这是在问题层面举行的。这意味着您可以轻松更改选项的显示方式(下拉列表,单选按钮,复选框等)

另请注意,我们可以加入问题。

表:答案

字段:user_id,question_id,question_option_id

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

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

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