Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 用于为动态创建的表单保存表单数据的DB结构_Mysql_Mongodb_Database Design - Fatal编程技术网

Mysql 用于为动态创建的表单保存表单数据的DB结构

Mysql 用于为动态创建的表单保存表单数据的DB结构,mysql,mongodb,database-design,Mysql,Mongodb,Database Design,我正在考虑一个用例,其中应用程序的每个用户都可以创建N个表单,其中包含N个不同数据类型的不同表单字段。然后,每个用户都可以接收各自表单中的表单数据。然后可以更新、编辑、搜索和排序这些数据 我想知道,我如何在MySQL中为此设计DB架构 我最初的方法是将表单结构以序列化的形式保存在一个表中,表单id作为主键。另一个表中,数据应包含以下列的记录:表格id、记录id、顺序、值。这里,顺序是表示字段在表单结构中的位置的数字。“值”列应具有该字段的值。这种方法使我的一组记录有10行(对于一个有10个字段的

我正在考虑一个用例,其中应用程序的每个用户都可以创建N个表单,其中包含N个不同数据类型的不同表单字段。然后,每个用户都可以接收各自表单中的表单数据。然后可以更新、编辑、搜索和排序这些数据

我想知道,我如何在MySQL中为此设计DB架构

我最初的方法是将表单结构以序列化的形式保存在一个表中,表单id作为主键。另一个表中,数据应包含以下列的记录:表格id、记录id、顺序、值。这里,顺序是表示字段在表单结构中的位置的数字。“值”列应具有该字段的值。这种方法使我的一组记录有10行(对于一个有10个字段的表单)。另外,我不认为可以编写这样的查询来搜索特定表单的记录


我确实想过在这个用例中使用mongodb,其中表单结构应存储在一个数组中,在该数组中,该分词表单的所有记录都应存储。我从未使用过mongodb,但如果我将文档存储在文档中,我想mongodb对大小有某种限制。那么,使用MySQL(或任何其他适合这种用例的DB)实现这一点的最佳方法是什么呢?

每个mongoDB文档的大小都限制在16mb。如果您需要每个文档更大,那么您需要适当地调整您的设计。MongoDb还包括允许您将较大的文件分成块的功能

在您的示例中,可以将表单字段存储为mongoDB中的数组,但也可以将其存储为嵌入式文档。无论您选择哪种方式,都需要匹配您的数据访问模式

通过应用程序向mongoDB文档添加新的键:值对很容易。伪代码将是:

if user adds form field
db.collection.update({'id':1},{$addToSet {'newField':'value'}})

我知道您的问题是关于MySQL结构的,但我认为值得展示它在mongoDB中的工作方式(显然需要根据您选择的语言进行调整)

关于你的问题有太多的问题。。。你能把范围缩小一点吗?在任何现代数据库系统中,都有许多方法可以存储这些信息。这完全取决于数据的使用方式、使用频率和用户数量。看起来列可能有数据类型(要排序,它们需要关联数据类型)。(您使用了什么查询来搜索特定表单的记录?为什么不能搜索?谢谢!我想MongoDB应该可以工作,但我需要进一步探索。没问题-我上面链接了大量的文档,还有大量好书和10gen免费在线课程。祝您愉快!感谢您接受我的answ呃-如果你对它满意,请投上一票!:)