构建此数据库的最有效方法是什么?

时间:2013-01-28 14:46:18

标签: php mysql database forms

我正在设计一个与用户注册的wufooformstack.com类似的表单处理网络服务,创建一个表单操作,然后将其复制并粘贴到表单中,我的服务将会将数据存储在数据库中并重定向回他们的感谢页面。

我将使用PHPMySQL构建它。到目前为止,我已经找到了基本的功能,但是我在抽象层面上变得非常困难的是如何最好地存储用户数据。

我的第一个想法是为每个创建的新表单创建一个新表格,这看起来有点愚蠢而且超出顶部。

现在我想,我创建了一个通用的data表,其中有50个字段,名为:field1, field2, field3, field4等,它们会存储每个人的数据,然后将该表链接到另一个名为fieldnames的表中用户可以自定义他们的“仪表板”,看起来他们已经命名了字段。

我真的不太清楚如何最好地处理这个问题。

2 个答案:

答案 0 :(得分:3)

表格和字段使用两个表格,答案使用一个表格:

form(id, title, user ...)
field(id, form_id, order, title, type ...)
answer(field_id, value, ...)

这样您就不会将用户限制在一定数量的字段中。

答案 1 :(得分:1)

有几种解决方案 - 它主要取决于您输入数据后要对数据执行的操作。

hsan的答案通常被称为“实体 - 属性 - 值”或EAV。它非常灵活,可以存储大量不同类型的数据(当您需要超过50个答案时不会耗尽)。如果您要存储数据以重新构建另一个网页(例如,显示表单的所有者),它的效果非常好;如果你想创造“人类可读”的东西,例如一份报告,这有点棘手。如果你想询问数据的问题,可能会很棘手 - 想象一下,如果答案是“25000-35000”,用户也说他们最喜欢的颜色为“红色”,那么找到问题的所有答案“你赚了多少” 。

您还可以将数据存储在XML或JSON文档中。这使得数据在SQL中更难以推理,但是将数据转换为报表或PDF非常简单。