我们正在启动一个新项目,其中需要在数据库中存储产品和许多产品属性.用于数据访问的技术堆栈是MS SQL2008和Entity Framework4.0/LINQ.
产品(和产品表)非常简单(SKU、制造商、价格等).但是,每个产品也有许多属性需要存储(想想工业小部件).这些范围可能从 colored颜色 到认证,再到管道尺寸.每个产品可能具有不同的属性,有些产品可能具有相同属性的多个属性(例如:认证).
当前的建议是,我们基本上会有一个名称/值对表,在每一行中都有一个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
...
注意:属性名称可能来自查找表或枚举.
所以这里的主要问题是:这是做这种事情的最佳模式吗?演出怎么样?查询将基于产品和属性表的连接,并且通常需要在特定属性上找到许多过滤位置-最常见的搜索将是基于一组已知/所需属性来查找产品.
如果有人对这类数据有任何建议或更好的模式,请告诉我.
谢谢! -边