过滤产品的设计模式?

时间:2011-05-23 16:52:59

标签: database design-patterns filter

如果您在显示产品列表时访问NeweggB&H等网站,则会有多种过滤器选项,如品牌,价格,尺寸,颜色等。

对于这样的事情,什么是好的设计模式?

另外请记住,并非所有产品都有相同的选项 - 显示器将具有最大分辨率和屏幕尺寸,HDD将具有容量和连接类型等。

我唯一能想到的是在数据库中使用EAV架构来绑定每个产品的所有过滤选项,然后在加载所有产品时,拉出所有选项并显示过滤选项。适用的类别。这听起来并不像它会很好地扩展,但仍然让我想知道如果只有一半的产品有特定选项(屏幕尺寸)我会做什么。

product(id, name, price, etc.) // 1, "Cool Monitor", 200.00

filter_options(id, option) // 3, "Screen Size"

product_filters(product_id, filter_id, value) // 1, 3, "22.in"

如果已经存在类似这样的已知模式,我不想重新发明轮子或提出过于复杂的解决方案。我猜这些日子我已经看到了很多。

如果重要的话,我正在PHP,CakePHP 1.3,MySQL中构建它。

2 个答案:

答案 0 :(得分:1)

使用规格模式。它是为此而建的。

我找不到一个好的PHP实现。但它不应该那么难建立。

答案 1 :(得分:0)

我要做的是为你正在查询的每个表创建一个过滤函数,并分别调用它们,它们将处理它们的过滤方式和过滤方式。

我的$ .02

http://dev.mysql.com/doc/refman/5.1/en/adding-functions.html