2012-04-07 51 views
0

我有问题,我正在创建相当复杂的表单。表格的某些部分是动态创建的。比方说,如果您从下拉列表中选择某个选项,额外的字段会被注入到表单中。将动态表单数据插入数据库。 PHP

哪种方法最适合存储该数据?我想尝试一下,不用多个表。因为我让整个应用程序变得更加复杂。

我想在我的模型中初始化所有可能的值为“0”。然后用后期数据覆盖它们,并将整个数组存储在表中。任何人看到这种方法的任何问题?

回答

0

很大程度上取决于您想要如何处理表单数据以及多久。

序列化的单场

在最简单的用例,你可以BASE64_ENCODE(连载($数据))中的所有数据并将它放入数据库中的一列。

  • 简单
  • 快速插入
  • 轻松添加/更改输入字段
  • 困难和缓慢,以搜索值(尤其是在规模)
  • 很难编程方式更新,如果您需要做对数据进行系统更改
  • 如果您始终将所有数据从数据库中提取出来,并且绝不会通过序列化字符串中的数据缩小sql查询的范围,

元数据表

添加第二个元数据表可以提供多一点灵活性。第二个表格将具有对主要表单提交的外键引用,元数据名称和值。这可以实现非常灵活的多对一关系,您可以轻松存储,搜索和操作。你可以在wordpress中看到这个例子。

  • 2个表,但还是简单
  • 轻松添加/更改输入字段
  • 好多了通过SQL搜索
  • 更容易更新系统
  • 完美的,如果你并不总是得到所有该数据或必须通过表单数据搜索范围缩小

而且还有一个不同的方向 - 您也可以考虑查看基于文档的数据库li ke MongoDB或CouchDB,如果你发现自己处理很多这种类型的数据。

2

在您的模型中使用多个表的必要性并不取决于您必须存储多少数据(多少个字段) - 这取决于您的模型的逻辑。因此,如果在你的模型中使用关系是合乎逻辑的理由(f.e.1:n,n:m),那就只好做!

如果你不会遵循创建你的模型的基本规则,并会尝试f.e.将所有数据存储在一张表中,虽然它应该分成很多表格,但您很快就会后悔。将来你的代码的任何变化都将花费你更多的工作,并且在某些时候你不会理解你自己的代码,并且将不得不重新编写它,这次遵循规则;)

并且不要担心if开发合适的模型花费了大量的工作(最近我花了两周的时间开发我的模型) - 这是非常有意义的,因为之后您可以使用完善的计划模型更快更有效地工作。

另一方面,有些情况下,在一个表中存储超过100个和更多的字段是有意义的 - 这取决于逻辑。所以,如果你会提供一些例子,也许可以说你是否应该使用一个或多个表。