如果数据库列可以不同,如何将数据存储在SQL数据库中?

时间:2019-06-13 01:10:21

标签: sql asp.net database

我正在创建一个ASP.NET Web应用程序,该应用程序允许用户数字化纸质表格。用户将导入自己的表单,该表单将转换为HTML,并插入占位符以接受输入表单中的值。

使用此导入的纸质表单上的字段,网站将根据所需信息创建输入表单。还可以为特定的表单创建“模板”,从而允许用户自动填充通常不会随每次表单填充而更改的任何数据。用户还可以保存尚未完成的表单,以便以后完成/审阅。

我的问题是:如何存储这些数据?我真的不能使用传统的数据库表,因为Form X看起来可能不像Form Y,并且需要完全不同的数据。我有一个SQL数据库来存储数据(我在网站的其他方面也需要此数据库),但是我不能简单地将所有表单数据存储在一个表中,甚至不能为每个表单单独存储表,因为这在实践中是不切实际的。更大的规模。

我最初的想法是使用JSON,但我完全不知道从哪里开始。我可以将JSON数据放入常规SQL数据库列中吗?可以使用此代码生成用于构建Web表单的代码,以允许用户使用任何设备轻松地填写其表单(根据我的设计要求)吗?

1 个答案:

答案 0 :(得分:0)

我认为使用mongoDB或Arangodb这样的文档数据库可以很好地解决您的问题。如今的现实是,应用程序可以并且有时应该使用多个数据库。

话虽如此,如果我必须使用关系数据库,我会将您的表单转换为3个表。第一个顶级表单将只存储以下内容:

  • 表单名称,
  • 表单ID,
  • 等...

第二个表将捕获表单字段,看起来像这样:

  • FormID
  • 字段ID
  • 字段名称
  • 字段类型(int,varchar等...)
  • 排序编号
  • 等...

第三个表将捕获用户输入的信息:

  • 用户ID
  • 表格ID
  • 字段ID
  • 创建日期时间
  • 最后修改日期时间
  • 等...

请注意,通过将字段存储在行而不是列中,可以使用不同类型的表单。

我应该提到上面的表定义绝不意味着是完整的,它们在那里是给您一个入门的思路。

最后,请注意,现在很多关系数据库都允许您按照建议将JSON直接存储在数据库中,但是根据您使用的是哪个数据库,这可能不是一个很好的选择。 Here是在mysql中存储JSON的示例,仅供参考。