为调查应用选择哪种数据库设计?
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外键的表。
希望这有助于一些方向。快乐的编码!
如果您询问数据库,请将其设为数据库。这意味着规范化的表存储您的所有数据。对此毫无疑问。
以上是关于为调查应用选择哪种数据库设计?的主要内容,如果未能解决你的问题,请参考以下文章