【发布时间】:2011-06-24 15:32:11
【问题描述】:
我正在构建一个 Web 应用程序,我想在其中构建一个可按用户配置的表单。例如,用户应该能够指定“我想要一个带有我为输入 A 提供的值列表的选择框,一个用于输入 B 的文本框,以及另一个带有我为输入 C 提供的值列表的选择框” .然后,用户可以稍后根据他们如何定制表单来填写表单。需要明确的是,这不是为您自己的网页构建 html 表单的系统。表单存在并与应用程序的其余部分集成。
我对如何实现这一点有一些想法,但我很好奇其他构建类似应用程序的人是如何处理类似问题的(即每个用户可定制的系统)。我不关心特定的语言或框架,尽管如果它有助于解释您的解决方案,您可以指出一些。
A) 创建一个相当复杂的关系数据库模式(需要一个 User 表、一个 User_Fields 表、一个 Fields_SelectValues 表,然后用于记录保存一个 SubmittedRecord 表,该表包括提交时的字段及其实际值。实际上,会有需要将用户特定字段值映射到给定的 SubmittedRecord 的另一个表 SubmittedRecord_FieldValues)。然后,提交的结果将在应用程序的另一部分中使用,因此对提交值的查找将做很多工作。这是最强大的,但可能是最慢的使用(良好的连接数以获得您可能需要的所有日期)并且最难实现。此外,这可能有点矫枉过正,因为大多数用户在他们想要的设置方式上会有很大的重叠。
B) 我没有像上面那样构建构建所有内容所需的所有数据,而是为每个用户存储一个 HTML blob。然后我可以在 SubmittedRecord 表中有一个名为“Values”的字段,它只是字段名称和提交值的分隔字符串。这有助于快速查找,但稍后在单个字段上选择会很慢。但最重要的是,我担心这种反关系模式有一些我还没有考虑到的不可预见的问题。
你以前是怎么看到这种事情的?
注意:我不一定要为我的确切问题寻找解决方案,只是针对此类问题的一般建议。
【问题讨论】:
标签: web-applications architecture relational-database