【问题标题】:Building Per User Customizable Systems构建每个用户可定制的系统
【发布时间】: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


    【解决方案1】:

    选项 B 听起来像是安全风险和维护噩梦。

    选项 A 听起来好多了。

    根据您的平台/框架,应该已经有内置机制来帮助用户配置相关功能;所以我会先看看你选择的平台中当前存在什么。

    我知道 ASP.NET 有几个机制可以在这个领域提供解决方案。

    一个重要的考虑因素(这将影响这样一个系统的设计和实施)首先是如何构建配置文件的“模式”;它是“嵌入”系统还是管理员可以动态(通过 UI)修改架构?

    【讨论】:

      猜你喜欢
      • 2012-09-29
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-16
      • 2010-10-07
      • 1970-01-01
      • 2014-11-12
      相关资源
      最近更新 更多