为调查应用选择哪种数据库设计?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为调查应用选择哪种数据库设计?相关的知识,希望对你有一定的参考价值。

我正在创建一个调查应用程序,我不知道如何设计数据库。我需要有多个问题和多种问题的调查。我有三种方法可以想到:

a)为调查和每种类型的问题创建一个数据库表,并将它们与Survey_id列连接起来。

b)为问题和调查创建一个数据库表,并将它们存储在JSON文本字段中。那些文本字段可能如下所示:

{
    question: 'Who is the best student?'
    type: 'multiple-choices',
    choices: [
         'Bob',
         'Alice',
         'Alex',
    ],
}

c)最后一个选项是创建一个仅用于调查的数据库表,并以JSON格式存储它们。像这样:

{
    heading: 'My survey'
    date: '2019-01-01',
    questions: [
         {...},
         {...},
         {...},
    ],
}

谢谢你的任何建议。

答案

抽象在设计数据库时非常重要,并且在某些情况下(例如来自端点的有效负载)可以将所有数据放在JSON字段中,但如果不是这样的话,则会以更加统一的方式存储数据的方式。以下是我将如何从高层开始设计调查应用程序。

1)首先,你应该在最顶层有一个调查表,这样你就可以创建多个调查实例(比如在不同的时间或不同的组),可以包含不同类型的问题。这还包含日期,结束时间,组等...

2)然后,对于下一个级别,我将创建一个通用的问题表。这将包含调查的外键和询问问题的字段。

3)接下来,我将为您希望支持的每种类型的问题创建一个新表,该表继承自第二部分中的通用问题表,因此它们会自动获取外键和问题字段。

3.1)多选实例。为此,我还将创建一个多选答案表。这只是指定多选问题表的外键,然后是所述问题的可用选项的答案字段。这将允许您重复使用多项选择答案进行选择。

4)最后,更多的是设置调查而不是调查的答案方,另一个原因是不把所有内容都放在JSON中;)。为了回答,我将在顶层实现SurveyResponse表,然后在第1部分的所述调查中为每个问题实现另一个具有SurveyResponse外键的表。

希望这有助于一些方向。快乐的编码!

另一答案

如果您询问数据库,请将其设为数据库。这意味着规范化的表存储您的所有数据。对此毫无疑问。

以上是关于为调查应用选择哪种数据库设计?的主要内容,如果未能解决你的问题,请参考以下文章

用于调查应用工具的 SQL 或 NoSQL [关闭]

用于数据加载的 Android 活动/片段职责

你是哪种设计师?

译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务

问卷调查小技能(对住院患者体验与满意度的调查)

关于侧边导航菜单和片段的一般设计问题