调查数据库设计:第一版。有错误吗?

Van*_*nel 5 database-design

我必须用以下问题来代表调查:

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

研究这些问题组后,我发现了以下规则:

  • 一个调查有问题的团体。
  • 一个问题组有一个名字和问题(所有问题都会有相同数量的选项)。
  • 一个问题有一个问题文本和一组可能的选项来回答它。
  • 一个选项有一个名称和一个类型。
  • 一个类型可以是:文本,是/否或复选框。
  • 一个答案是,用户给出了问题的一个给定的调查选项的值。

你觉得这些条件OK吗?

有了这些必需品,我设计了以下概念模型(这里我称之为表格而不是调查):

在此处输入图片说明

我需要使调查动态。我将重复使用一组问题、问题和/或选项。

小智 2

我提供了一个来自实际解决方案的更完整的模型。

“类型”与问题本身相关(而不是与其项目相关联,如问题第四项所述)。

一个问题可以是单行或多行文本框,也可以是由多个项目组成。对于每个项目,可以分配一个补充问题(例如“国家/地区?”-“其他”-“哪个:___”)。

如何向用户呈现问题及其项目取决于其类型。

该模型足够灵活,可以表示问题的多种结构。

“FormQuestionType”实体有一个属性来标识负责呈现此类型问题的 ASCX(ASP.net 组件)。

可以使一个问题依赖于一个或多个先前的问题(例如,“有多少个孩子?”可以依赖于“你有孩子吗?”)。

有数据验证的预置,从“必需”约束到正则表达式。

对于每个主要实体,都定义了名为“identification”的强制且唯一的属性,允许基于文本代码而不是数字 ID 进行查询(例如,ID“351”的“多少个孩子?”问题也由“HOW_MANY_CHILDREN”标识')。

并且,对于给定问题的项目,可以定义外部数据源(例如,“城市”问题的选项是从公司“城市”表中实时检索的)。

实际模型提供版本控制,但为了清楚起见,我提供了它的精简版本。

动态表格模型