构建每用户可定制系统

时间:2011-06-24 15:32:11

标签: web-applications architecture relational-database

我正在构建一个Web应用程序,我想构建一个可由每个用户配置的表单。例如,用户应该能够指定“我想要一个选择框,其中包含我为输入A提供的值列表,输入B的文本框,以及另一个选择框,其中包含我为输入C提供的值列表” 。然后,用户可以稍后根据他们如何定制表单来填写表单。需要说明的是,这不是为您自己的网页构建html表单的系统。该表单与应用程序的其余部分一起存在并集成。

我对如何实现这一点有很多想法,但我很好奇其他已经构建类似应用程序的人是如何处理类似问题的(即每用户可定制系统)。我不关心特定的语言或框架,尽管如果它有助于解释您的解决方案,您可以指出一些。

A)创建一个相当复杂的关系数据库模式(需要一个User表,一个User_Fields表,一个Fields_SelectValues表,然后保存一个SubmittedRecord表,该表包含提交时实际值的字段。实际上,会有需要是另一个表SubmittedRecord_FieldValues,它将用户特定的字段值映射到给定的SubmittedRecord)。然后,将在应用程序的另一部分中使用提交结果,因此将对提交的值进行大量查找。这是最强大的,但可能是最慢使用(良好的连接数来获得您可能需要的所有日期)并且最难实现。此外,这可能是矫枉过正,因为大多数用户在他们想要的设置方式上会有很大的重叠。

B)我没有构建构建上述所有内容所需的所有数据,而是为每个用户存储一个HTML blob。然后我可以在名为“Values”的SubmittedRecord表中创建一个字段,该字段只是其字段名称和提交值的分隔字符串。这使得快速查找,但稍后在单个字段上选择较慢。但大多数情况下,我担心这种反关系模式有一些我尚未想过的不可预见的问题。

你以前怎么看过这种事情?

注意:我不一定在寻找解决我的确切问题的方法,只是对这类问题的一般建议。

1 个答案:

答案 0 :(得分:0)

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

选项A听起来好多了。

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

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

一个重要的考虑因素(这将影响这样一个系统的设计和实现)将是如何建立配置文件的“架构”;它是“烘焙”到系统还是可以动态管理(通过UI)修改架构?