我们正在构建的在线应用程序(php 和 mysql)要求用户能够创建自己的表单以进行数据捕获并将这些数据记录在数据库中,同时尊重现有的 ORM。
如果表单是“硬编码”的,那么我们只需将 db 表设置为自己存储规范化数据,但是当我们的用户定义表单中包含的表单字段时,我们不确定继续实施的最佳方法是什么这个功能。
我们是否需要为我们的数据库考虑某种元数据或数据抽象层?谷歌并没有提供太多帮助,因为我们不确定我们需要如何去做。
任何正确方向的指示将不胜感激!
我们正在构建的在线应用程序(php 和 mysql)要求用户能够创建自己的表单以进行数据捕获并将这些数据记录在数据库中,同时尊重现有的 ORM。
如果表单是“硬编码”的,那么我们只需将 db 表设置为自己存储规范化数据,但是当我们的用户定义表单中包含的表单字段时,我们不确定继续实施的最佳方法是什么这个功能。
我们是否需要为我们的数据库考虑某种元数据或数据抽象层?谷歌并没有提供太多帮助,因为我们不确定我们需要如何去做。
任何正确方向的指示将不胜感激!
许多内容管理系统以不同的方式解决这个问题。
例如,在 Drupal 中,用户可以通过CCK 模块创建自己的自定义内容(带有自定义表单) 。该模块定义了用户可以创建的不同类型的字段,然后生成具有特定数据类型的表来存储数据。
一些技巧:
定义您的字段类型- 考虑让用户选择不同的字段类型(例如,选择框、字符串、单选)。
为用户定义的字段创建表- 每个字段类型都将具有特定的 SQL 数据类型。使用这些数据类型定义一个表。例如,选择框可能映射到枚举,输入文本元素可能映射到 varchar 列。
将数据添加到新表- 使用新表以某种标准化的方式存储数据。
显然有许多不同的方法,但这些只是一些建议。
我想我已经找到了解决我的问题的方法,所以对于所有遇到类似问题的人来说,看看下面的文章 -
http://www.adaniels.nl/articles/an-alternative-way-of-eav-modeling/
http://weblogs.sqlteam.com/davidm/articles/12117.aspx
希望这可以帮助。