0

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

我将使用PHPand来构建它MySQL。到目前为止,我已经弄清楚了基本的功能,但是我在抽象层面上变得松懈的地方是如何最好地存储用户数据。

我的第一个想法是为每个创建的新表格创建一个新表格,这看起来有点傻而且过头了。

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

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

4

2 回答 2

2

使用两张表格作为表格和字段,另外一张作为答案:

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

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

于 2013-01-28T14:50:57.507 回答
0

有几种解决方案 - 这主要取决于您在输入数据后要对它做什么。

hsan 的答案通常被称为“实体属性值”或 EAV。它很灵活,可以存储许多不同类型的数据(当您需要超过 50 个答案时不会用完)。如果您正在存储数据以重新构建另一个网页(例如,显示表单的所有者),它工作得很好;如果你想创建一些“人类可读”的东西,例如报告,那就有点棘手了。如果你想对数据提出问题,这可能会很棘手——想象一下找到“你赚多少钱”这个问题的所有答案,答案是“25000-35000”,用户还说他们最喜欢的颜色是“红色” .

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

于 2013-01-28T15:07:13.347 回答