SQL Server 2008的自定义字段

6 xml sql-server

我有几个实体,我要求用户能够添加自定义字段.

如果我有一个名为customer的实体,其基本变量如{Name,DateOfBirth,StoreId}和另一个名为Store with {Name}

然后我想要它,以便该商店的所有者可以登录并为所有客户添加一个名为收藏颜色的新变量,这是一个红色,绿色或蓝色作为选项的下拉列表.

现在我已经看过EAV并想出一个看起来像这样的解决方案

属性{StoreId,Name,DataType},Value {AttributeId,EntityName,EntityId,Value}

我想知道是否有一些最适合SQL Server 2008的解决方案,特别是考虑到我希望能够轻松查看和查询这些信息.

我听说你可以在xml数据类型中查询.这是一个更好的方式吗?

我也可能希望用户能够在某些时候添加外键的自定义字段.

将整天看着这个,所以会很快提出问题.

Rem*_*anu 4

一般来说,EAV 是一种反模式,会导致性能不佳并阻碍可扩展性。现在,如果您决定使用 EAV,SQL Server 客户咨询团队已经发布了一份白皮书,其中包含常见的陷阱和问题以及如何避免它们:用于性能和可扩展性的语义数据建模的最佳实践

在 SQL 中可以查询 XML 数据类型,但是如果您的 XML 没有模式,那么查询它会很慢。如果它有一个模式并且该模式是 EAV,那么它将具有关系 EAV 的所有问题以及它自己的一些 XML 性能问题。CAT 团队的优秀人员再次就该主题发布了几本白皮书:Microsoft SQL Server 2005 的 XML 最佳实践SQL Server 2005 中 XML 数据类型的性能优化。它们对于 SQL 2008 也有效。