包含许多列SQL Server的项目

时间:2018-01-26 09:30:26

标签: sql sql-server database datatable

我有一个数据库表Products,产品可以有数百个功能和属性(灵活的唯一属性数)。用户可以使用每个属性来过滤产品。如何将所有这些细节存储在数据库中?

目前,我将每个属性存储在ProductProperties表中的产品的不同行中。这使我的数据库变得庞大。对于具有200个属性的1000个产品,这会在ProductProperty表中生成200,000行。

我计划的另一个解决方案是将ProductProperty保存为varchar列中的JSON,但这缺乏灵活性,我无法使用T-SQL查询过滤行。

这种情况有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

这取决于您要如何搜索功能。

传统的方法是拥有ProductFeatures个表格。每个产品和每个功能都有一列:

create table ProductFeatures (
    ProductFeatureId int identity(1, 1) primary key,
    ProductId int not null references Products(ProductId),
    FeatureId int not null references Features(FeaturId)
);

然后,您可以使用此表单独过滤功能。

如果功能的数量灵活,这将特别方便。

在某些情况下,您可能希望将这些功能存储为文本列,并在其上构建全文索引。 JSON是另一种可能性。但是,联结表是我会考虑的第一种方法。

答案 1 :(得分:-1)

您是否在文本文件中包含了属性信息?如果是,那么你有两种可能性: 1-是通过代码(即Java代码)将文本结构化并自动填充到数据库中,您可以在互联网上找到很多这些代码! 2-是做那个manulaay,这是更困难的选择。 遗憾的是,这两个选项都需要手动填充,但我发现建立一个适合我的Text结构的算法更容易!