我想建立一个在线表单生成器很像Wufoo项目,允许用户创建和发布自己的网页表单。 每个提交应保存到数据的基础上,用户可以在以后检索的意见书。
由于这些形式将是动态的,即。 用户拥有量和表单字段我冥思苦想了坚实的数据库设计的存储这些信息的类型完全控制。
我有一个包含用户可用的每个类型的字段,即一个表的字段类型。 文本框,emailfield等。
一个基本形式的表将举行各形式的ID,网址等。
然后我会,其中将包括裁判的基本形式和字段类型,该表还可能包括自定义的验证要在每个领域做了表formfields。
这是设计良好的基础结构? 我想它会很容易增加新类型的字段到应用程序的,但是我不知道潜在的缺点是什么,因为我从SQL专家很远。
在SQL存储用户定义的数据
我认为你正在寻找的实体,属性值 ,其中数据库模型:
其基本思路是存储属性,及其相应的值,如在一个表中的行。
通常,所述表具有至少三列:实体,属性和值。 虽然如果只有一个单一的实体相关的,例如,用于应用程序的配置或选项设置的表,该实体列可以被排除在外。
看到这个页面作为开始:
我重新标记你的问题的实体属性值的标签,在其中您可以浏览很多,涉及到你的情况线程。
由于马哈茂德·贾迈勒写,您所描述的模型是“实体/属性/值”; 作为鲍里斯塔拉写道,有有这位模特许多已知的问题。
作为替代方案,你可以考虑存储在“文件”的形式条目 - 如XML或JSON - 关系模型中。
例如,你可能有沿线的一个表:
FORM_SUBMISSION
--------------------
Submission_ID (pk)
Client_ID (fk to clients table)
Submission_date
SubmissionDocument
我使用的“客户”代表谁创建表单的用户; 检索所有提交材料给定的客户端,您使用的client_id where子句。
这种模式使得它更难运行对表单提交的SQL查询(尽管变得难以有超越很简单的查询时也EAV),但它极大地简化了持久性解决方案。