【发布时间】:2011-05-24 22:18:59
【问题描述】:
如果您访问像 Newegg 或 B&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 中构建它。
【问题讨论】:
标签: database design-patterns filter