使用过滤器进行搜索表单的最佳做法是什么?过滤器取决于类别? 例如:如果你去ebay并选择一个类别,那么过滤器在手机左侧(过滤器:品牌,操作系统......)或时尚类别(过滤器:尺寸,颜色等)不同。 。)...
在我看来我会在DB中做更多的表。每个表为一个类别(cat_cellphone,cat_fashion ......)。然后根据类别(不是一个产品表,其中一列包含类别ID)将产品中的一个放入其中。 这些表是不同的,其中列名称由类别表征。 接下来,应该做更多搜索表单并调用过滤器属于该类别的表单。
这是一个好的概念还是在大型项目中还有其他公认的做法?
答案 0 :(得分:3)
不,拥有多个表是个坏主意。
总的来说。使用具有主键的表而不是两列。 (主键可能跨越多个列。)
列将是categoryname / filtername。
如果您不喜欢这样的主键,并且始终使用自动增量列,您仍然可以在两列上创建索引。
列将是:id / categoryname / filtername / filtertext
答案 1 :(得分: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_CATEGORY:
Product_ID Category_ID
1 1
希望这能回答你的问题。
编辑,添加过滤表:
要为产品添加过滤功能,您可以使用表格作为过滤器和链接表,如下所示:
过滤器:
Filter_ID description value
1 brand Bosch
2 brand Bahco
3 type Phillips
Product_Filter:
Product_ID Filter_ID
1 1
1 3
这样,您可以将多个过滤器链接到每个产品,并多次使用相同的过滤器。
你甚至可以通过使用另一个表来获得过滤器值来进一步扩展它,但这可能会让事情变得复杂:
过滤器:
Filter_ID description value
1 brand 1
FILTER_VALUE:
Filter_ID value
1 Bosch
2 Bahco