【问题标题】:How to design a database for User Defined Fields(UDF)?如何为用户定义字段(UDF)设计数据库?
【发布时间】:2012-03-13 06:43:23
【问题描述】:

我正在开发一个应用程序,该应用程序需要将一个或多个附加字段添加到表中以跟踪用户定义的信息。此附加信息仅用于报告目的(Crystal Reports),不会影响应用程序的行为。此字段的数据是从外部应用程序填充的。

处理这些额外信息的最佳方式是什么?以下是基于其他 SO 答案的一些选项:

  1. Entity-Attribute-Value(这会不会过大?似乎有很多 EAV 的批评者)
  2. 向表中添加额外的列(不确定 Entity Framework 会如何)
  3. 为每个 UDF 创建一个新表并使用父表的主表进行链接

【问题讨论】:

  • 已经实现了一个相对高效的 EAV 系统,我在这里写了一点:sqlblog.com/blogs/aaron_bertrand/archive/2009/11/19/…
  • 我们是在谈论许多表的许多新字段还是一个表的几个新字段?这个数据库目前有多大,您预计它会增长多少?
  • @northpole 很可能最多将一个或两个字段添加到单个表中。但可能会根据客户而增长。
  • @AaronBertrand - 很棒的文章,我很喜欢。但是,OPs 应用程序似乎并不是一个需要热更改的 SaaS 解决方案。如果单个表只有两个字段,您仍然认为 EAV 是解决所有所需开销的好方法吗?
  • @northpole 没有,但我在知道这些信息之前就发布了。

标签: sql-server entity-framework database-design schema user-defined-fields


【解决方案1】:

如果我正确理解要求,您将需要一个数据点来保存来自外部应用程序的信息,并且其结构在设计时未定义。如果这是正确的,那么我建议使用 xml 数据类型。通过选择此项,您将来在插入新的键值对时无需重新设计数据库。 Crystal 报表应该能够轻松地为该列包含一个 xsl。

希望这个帮助,祝你好运

【讨论】:

    猜你喜欢
    • 2011-07-03
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    相关资源
    最近更新 更多