我有一个供多个客户端使用的 ASP.NET 数据输入应用程序。该应用程序由所有客户端通用的多个数据输入模块组成。
我现在有多个客户想要添加他们自己的自定义模块,这些模块通常包含十几个数据点。有些值是文本,有些是数字,有些是下拉选择,等等。
我需要为此处理数据模型的建议。我对如何处理有两个想法。首先是为每个客户端的每个新模块创建一个新表。这很干净,但我不是特别喜欢它。我的另一个想法是为每个客户的每个自定义数据点创建一个包含列的表。这个表最终会包含很多列和很多 NULL 值。我不太喜欢这两种解决方案,并怀疑有更好的方法可以做到这一点,因此您的任何反馈都将不胜感激。
我正在使用 SQL Server 2008。
最佳答案
与这些问题一样,“这取决于”。
可怕的键值表。
这种方法依赖于一个表格,该表格将字段及其值作为单独的记录列出。
CustomFields(clientId int, fieldName sysname, fieldValue varbinary)
好处:
坏处:
微软之道
此类问题的微软方式是“稀疏列”(SQL 2008 中引入)
好处:
坏处:
xml 税
您可以向表中添加一个 xml 字段,该字段将用于存储所有“额外”字段。
好处:
缺点:
也许还有更多的解决方案,但对我来说,这些是主要的竞争者。选择哪一个:
关于asp.net - 如何为可定制的应用程序设置数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7285566/