我有一个现有的成熟模式,我们需要向其中添加一些新的产品属性。例如,我们有 Products.Flavor,现在需要添加新的属性,如重量、香味等。与其继续扩大 Products 表,我正在考虑其他几个选项。首先是一个新的 Attributes 表,它将有效地成为任意属性的属性包,以及一个 ProductsAttributes 表,用于存储特定产品属性的映射(和值)。这是实体-属性-值 (EAV) 模式,正如我所理解的那样。另一个选项是向 Products 表中添加一个名为 Attributes 的新列,该列是 XML 类型的。在这里,我们可以在不添加新表的情况下,任意给任何产品实例添加属性。
每种方法的优点/缺点是什么?我正在使用 SQL Server 2008 和 ASP.NET 4.0。