我们正在开始一个新项目,我们需要在数据库中存储产品和许多产品属性.技术堆栈是MS SQL 2008和Entity Framework 4.0/LINQ,用于数据访问.
产品(和产品表)非常简单(SKU,制造商,价格等).但是,每种产品也存在许多属性(想想工业小部件).这些可能从颜色到认证到管道尺寸.每个产品可能具有不同的属性,有些可能具有相同属性的倍数(例如:认证).
目前的建议是我们基本上会有一个名称/值对表,其中FK返回到每行中的产品ID.
属性表的示例可能如下所示:
ProdID AttributeName AttributeValue
123 Color Blue
123 FittingSize 1.25
123 Certification AS1111
123 Certification EE2212
123 Certification FM.3
456 Pipe 11
678 Color Red
999 Certification AE1111
...
Run Code Online (Sandbox Code Playgroud)
注意:属性名称可能来自查找表或枚举.
所以这里的主要问题是:这是做这样的事情的最佳模式吗?表现如何?查询将基于产品和属性表的JOIN,并且通常需要许多WHERE来过滤特定属性 - 最常见的搜索将是基于一组已知/期望的属性来查找产品.
如果有人对此类数据有任何建议或更好的模式,请告诉我.
谢谢!-ed