我有问题,我正在创建非常复杂的表单。表单的某些部分是动态创建的。可以说,如果您从下拉列表中选择某个选项,则会将额外的字段注入到表单中。
哪种方法最适合存储该数据?我想尝试在不使用多张桌子的情况下离开。因为我使整个应用程序变得如此复杂。
我正在考虑在我的模型中将所有可能的值初始化为“0”。然后用发布数据覆盖它们,并将整个数组存储在表中。有人看到这种方法有什么问题吗?
我有问题,我正在创建非常复杂的表单。表单的某些部分是动态创建的。可以说,如果您从下拉列表中选择某个选项,则会将额外的字段注入到表单中。
哪种方法最适合存储该数据?我想尝试在不使用多张桌子的情况下离开。因为我使整个应用程序变得如此复杂。
我正在考虑在我的模型中将所有可能的值初始化为“0”。然后用发布数据覆盖它们,并将整个数组存储在表中。有人看到这种方法有什么问题吗?
在模型中使用多个表的必要性并不取决于您必须存储多少数据(多少字段) - 它取决于模型的逻辑。因此,如果有合乎逻辑的理由在您的模型中使用关系(fe 1:n,n:m),那就去做吧!!!
如果您在创建模型时不遵循基本规则并尝试将所有数据存储在一张表中,虽然它应该分成许多表,但您很快就会后悔。将来对代码的任何更改都会花费您更多的工作,并且在某些时候您将无法理解自己的代码,并且必须再次编写它,这次要遵守规则;)
如果开发正确的模型会花费大量工作,请不要担心(最近我在开发模型上投入了两周多的时间)——这真的很有意义,因为之后你可以通过一个精心开发和计划的模型更快、更有效地工作模型。
另一方面,在某些情况下,在一个表中存储超过 100 个或更多字段是有意义的 - 这取决于逻辑。因此,如果您提供一些示例,也许可以说您是否应该使用一张或多张桌子。
很大程度上取决于您以后要如何处理表单数据以及频率。
在最简单的用例中,您可以 base64_encode(serialize($data)) 所有数据并将其放入数据库中的单个列中。
添加第二个元数据表可以提供更多的灵活性。第二个表将具有对主表单提交的外键引用、元数据名称和值。这允许您轻松存储、搜索和操作非常灵活的多对一关系。你可以在 wordpress 中看到这样的例子。
还有一个不同的方向 - 如果您发现自己处理大量此类数据,您也可以考虑查看基于文档的数据库,例如 MongoDB 或 CouchDB。