我有一个现有的成熟模式,我们需要添加一些新的产品属性。例如,我们有Products.Flavor,现在需要添加新的属性,例如Weight,Fragrance等。我不考虑继续扩大Products表格,而是考虑其他一些选项。首先是一个新的属性表,它将有效地作为任意属性的属性包,以及一个ProductsAttributes表,用于存储特定产品属性的映射(和值)。这是实体 - 属性 - 值(EAV)模式,我已经了解它。另一种选择是向名为Attributes的Products表添加一个新的列,该表是XML类型。在这里,我们可以任意添加属性到任何产品实例而无需添加新表格。实体属性值(EAV)与XML列对于新产品属性
每种方法的优缺点是什么?我正在使用SQL Server 2008和ASP.NET 4.0。
(Bookarking现在这个问题,所以我可以稍后再回来,upvote所有的“你真的不想这样做”的答案) – 2011-03-21 14:25:28
这两个选项中,我真的不想做的是哪一个? ;-) – 2011-03-21 14:26:40
将新列添加到产品表时出现什么问题?这些属性仅与产品的某个子集相关吗? – tster 2011-03-21 14:48:42