Database design 数据库设计-如何存储与如何显示
假设您在调查中有以下问题需要转换到数据库中,然后在Web应用程序中使用: 在上周末,你吃了以下哪种食物Database design 数据库设计-如何存储与如何显示,database-design,web-applications,Database Design,Web Applications,假设您在调查中有以下问题需要转换到数据库中,然后在Web应用程序中使用: 在上周末,你吃了以下哪种食物 冰激凌 色拉 炸鸡 在上面的示例中,我们自动建立连接。但是为了让问题在数据库中有意义,它们应该这样存储吗?: 上周末你吃冰淇淋了吗 上周末你吃沙拉了吗 上周末,你吃过油炸支票吗 假设您使用的是这样的设计,将它们存储在这样的表中似乎是合理的: [During the last weekend, did you eat ice cream] -> questions_table.qu
- 冰激凌
- 色拉
- 炸鸡
- 上周末你吃冰淇淋了吗李>
- 上周末你吃沙拉了吗李>
- 上周末,你吃过油炸支票吗李>
[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,那么它的显示将非常混乱:
- 上周末你吃冰淇淋了吗李>
- 上周末你吃沙拉了吗李>
- 上周末,你吃过油炸支票吗李>
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中显示是不明智的。正确地建模数据库,您会发现应用程序的其余部分不难编码。)