【发布时间】:2018-01-26 09:30:25
【问题描述】:
我有一个数据库表Products,一个产品可以有数百个特性和属性(灵活数量的唯一属性)。用户可以使用每个属性来过滤产品。如何将所有这些详细信息存储在数据库中?
目前,我将ProductProperties 表中产品的每个属性存储在不同的行中。这使我的数据库变得巨大。对于具有 200 个属性的 1000 个产品,这会在 ProductProperty 表中产生 200,000 行。
我计划的另一个解决方案是将 ProductProperty 保存为 JSON 在 varchar 列中,但这缺乏灵活性,我无法使用 T-SQL 查询过滤行。
对于这种情况有更好的方法吗?
【问题讨论】:
-
最好将您的产品表分解为多个表,例如拥有一个 ProductType 表。然后将不同的“属性保存在不同的表中”。现在,当用户搜索数据时,他们只需加入查询中的表并以这种方式进行过滤,而无需使用大量表。也意味着您可以更加灵活。
-
每个产品都有灵活的独特栏目,有的产品有100个特征,有的有300+。
-
是的,我认为有人已经将此作为答案发布,但您会将这些数据拆分为功能表,因此它并非全部保存在一个表中,而是跨多个表进行管理。如果这有意义的话。
标签: sql sql-server database datatable