Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 什么';构建这个数据库最有效的方法是什么?_Php_Mysql_Database_Forms - Fatal编程技术网

Php 什么';构建这个数据库最有效的方法是什么?

Php 什么';构建这个数据库最有效的方法是什么?,php,mysql,database,forms,Php,Mysql,Database,Forms,我正在设计一个表单处理web服务,类似于用户注册的表单处理web服务,创建一个表单操作,他们将复制并粘贴到表单中,我的服务将把数据存储在数据库中,并重定向回他们的感谢页面 我将使用PHP和MySQL构建它。到目前为止,我已经弄清楚了基本功能,但在抽象层次上,我不太明白的地方是如何最好地存储用户数据 我的第一个想法是为每一个新创建的表单创建一个新表,这看起来有点愚蠢和过分 现在我在想,我创建了一个通用的data表,其中包含50个字段,名为:field1、field2、field3、field4等等

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

我将使用
PHP
MySQL
构建它。到目前为止,我已经弄清楚了基本功能,但在抽象层次上,我不太明白的地方是如何最好地存储用户数据

我的第一个想法是为每一个新创建的表单创建一个新表,这看起来有点愚蠢和过分

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


我真的不太确定如何最好地处理这件事

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

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

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

使用两个表格来表示表单和字段,再加上一个表格来表示答案:

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

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

有几种解决方案—这主要取决于输入数据后您想对数据做什么

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


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

有几种解决方案——这主要取决于输入数据后您想对数据做什么

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


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

创建50个字段来保存数据,然后坐下来等待用户进来。。。。然后52。。。然后53…没错。我在哪里停?但是,为每个用户创建一个新表似乎是一种精神上的“正常化”。用户表。字段表(userid、fieldid、fieldname、fieldtype、fieldvalue)。e、 一个1-many关系。Entity-Attribute-Value(EAV)创建50个字段来保存数据,然后坐下来等待用户进来。。。。然后52。。。然后53…没错。我在哪里停?但是,为每个用户创建一个新表似乎是一种精神上的“正常化”。用户表。字段表(userid、fieldid、fieldname、fieldtype、fieldvalue)。e、 g.1-many relationship.Entity-Attribute-Value(EAV)ok,但我将在用户网站上提交的表单数据存储在哪里?答案的第三个表格(请参见我的编辑)。ok,这比我尝试的更有意义。ok,但是,我应该将用户网站上提交的表单数据存储在哪里呢?第三个答案表(请参见我的编辑)。好的,这比我尝试的更有意义。一旦存储了数据。我希望用户(表单所有者)能够登录到我的服务,并像查看一个表一样查看表单中的所有实体。存储数据后,生成一份报告,报告内容包括提交的数量、提交的时间和日期等。我希望用户(表单所有者)能够登录到我的服务,并像查看一个表一样查看表单中的所有实体。然后生成一份报告,包括提交的数量、提交的时间和日期等。