2

使用过滤器进行搜索表单的最佳实践是什么,其中过滤器取决于类别?例如:如果您访问 ebay 并选择一个类别,那么手机左侧的过滤器(过滤器:品牌、操作系统...)或时尚类别(过滤器:尺寸、颜色.. .)...

在我看来,我会在数据库中做更多的表。每个表对应一个类别(cat_cellphone、cat_fashion...)。然后根据类别将产品放在这些表之一(不是一个产品表,其中一列包含类别 ID)。这些表是不同的,其中列名称由类别表征。接下来,应该做更多的搜索表单并调用过滤器所属类别的表单。

这是一个好的概念还是在大型项目中有其他公认的做法?

4

2 回答 2

3

不,拥有多个表是个坏主意。

一般来说。改为使用具有两列主键的表。(主键可能跨越多列。)

列将是类别名称/过滤器名称。

如果您不喜欢这样的主键,并且总是使用自动增量列,您仍然可以在两列上创建索引。

列将是:id / categoryname / filtername / filtertext

于 2013-01-02T10:35:19.267 回答
1

使用多个表来存储您的产品不是一个好主意。因为会有产品在类别中重叠,这会导致将相同的产品存储在多个表中。

只需使用带有 ID、product_number、description 等的产品表和一个类别表来存储不同的类别。然后你可以像这样直接链接它们:

产品表:

ID product_number description category
1  00001          Screwdriver 1

分类表:ID 描述 1 工具

您甚至可以通过寻址子类别的父级来使用额外的列来扩展类别表以使用子类别:

带有子类别的类别表:

ID description      parent
1  Tools            NULL
2  Automatic tools  1

如果您不喜欢直接从产品表链接到类别表,您可以使用链接表:

产品分类:

Product_ID Category_ID
1          1

希望这能回答你的问题。

编辑,添加过滤表:

要为产品添加过滤器,您可以使用过滤器表和链接表,如下所示:

筛选:

Filter_ID description value
1         brand       Bosch
2         brand       Bahco
3         type        Phillips

产品_过滤器:

Product_ID Filter_ID
1          1
1          3

这样,您可以将多个过滤器链接到每个产品,并多次使用相同的过滤器。

您甚至可以通过使用另一个表作为过滤器值来进一步扩展它,但这可能会使事情变得有点复杂:

筛选:

Filter_ID description value
1         brand       1

过滤器值:

Filter_ID value
1         Bosch
2         Bahco
于 2013-01-02T10:47:58.687 回答