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