Sql server 存储属性可能不同的数据的最佳方法
请先读我前面的问题: 其主要目的是了解这种存储数据的方法是否有效 也许最好去掉Sql server 存储属性可能不同的数据的最佳方法,sql-server,Sql Server,请先读我前面的问题: 其主要目的是了解这种存储数据的方法是否有效 也许最好去掉propertyvalue表。并使用实体表中的其他属性值nvarchar(max)列代替它。例如,而不是 EntityId PropertyId PropertyValue 1 4 Val4 1 5 Val5 1 6 Val6 表中,我可以将此类数据存储在propertyvalue列中:“4:Val4;5:
propertyvalue
表。并使用实体
表中的其他属性值nvarchar(max)
列代替它。例如,而不是
EntityId PropertyId PropertyValue
1 4 Val4
1 5 Val5
1 6 Val6
表中,我可以将此类数据存储在propertyvalue
列中:“4:Val4;5:Val5;6Val6
”
另外,我可以将XML存储在PropertyValues
列中
你认为这里最好的方法是什么
[补充]
请记住:
PropertyValues表中的数据将经常更改。实际上,我存储配置的产品。例如,管理员配置衣服具有“类型”、“大小”、“颜色”、“按钮类型”、“标签类型”、“标签位置”等属性。。。用户将从系统中选择这些属性的值。因此,无法有效缓存PropertyValue数据。如果您使用多值属性(即
4:Val4;5:Val5;6Val6
)实施解决方案,您以后会讨厌自己
XML稍微好一些,因为有XQuery函数可以帮助您提取和解析值。但是XML类型在SQL Server中实现为CLR类型,使用它的速度可能非常慢
解决这个问题的最好办法就是像你这样。如果列可以是任意数量的数据类型,请使用
sql\u变量
类型。理想情况下,您应该将其重构为多个表/实体,以便数据类型更具体。如果您使用多值属性(即4:Val4;5:Val5;6Val6
)实现解决方案,您以后会讨厌自己
XML稍微好一些,因为有XQuery函数可以帮助您提取和解析值。但是XML类型在SQL Server中实现为CLR类型,使用它的速度可能非常慢
解决这个问题的最好办法就是像你这样。如果列可以是任意数量的数据类型,请使用
sql\u变量
类型。理想情况下,您应该将其重构为多个表/实体,以便数据类型更具体。我使用类似的项目(web shop generator)。所以每个产品都有属性,每个属性都有一组值。这是不同的桌子。所有这些都有几种语言的翻译。(因此存在用于属性和值转换的其他表)
我们为什么选择这样的解决方案?因为对于每个客户机,都应该有具有相同方案的数据库。所以这种数据库方案是非常有弹性的
那么这个解决方案呢。一如既往,“视情况而定”-)
我认为与用户订单相比,PropertyValue不会经常更改。但是,如果您怀疑,您应该使用非规范化表或索引视图来加快速度。无论如何,在大量行上更改XML/CSV的性能会很差,所以“单独表”解决方案看起来不错。我使用类似的项目(web shop generator)。所以每个产品都有属性,每个属性都有一组值。这是不同的桌子。所有这些都有几种语言的翻译。(因此存在用于属性和值转换的其他表) 我们为什么选择这样的解决方案?因为对于每个客户机,都应该有具有相同方案的数据库。所以这种数据库方案是非常有弹性的 那么这个解决方案呢。一如既往,“视情况而定”-)