【发布时间】:2012-02-27 20:01:58
【问题描述】:
假设我有一个Product 和一个ProductType 表。我想要一个可以存储每种产品类型的特殊列的表。特殊列(属性)可以是任何类型。
现在我们每个 ProductType 都有一个名为 Product_%ProductTypeId% 的表,这是我非常不喜欢的解决方案 - 有什么建议吗?
我的想法是有一张表ProductTypeColumns 和cols:
Id | ProductTypeId | ColumnName | Value | ColumnType
我对此不满意的是我失去了类型安全性,Value 列将是一个字符串类型,这意味着我必须始终转换为和从。
此外,此表将用于生成报告。具有“动态”列可能是个问题。
【问题讨论】:
-
EAV 通常是执行此操作的一种方法,尤其是如果许多产品的这些属性可能不同并且可以经常为新产品添加它们。我在这里写了关于 EAV 的博客:sqlblog.com/blogs/aaron_bertrand/archive/2009/11/19/…
标签: sql sql-server dynamic sql-types