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