如何创建用于存储产品搜索过滤器的数据库模式

时间:2011-12-08 03:14:38

标签: mysql database-design

我正在创建一个简单的产品搜索网络应用程序,用户可以根据价格,免费送货,名称,商店等过滤他收藏的购物产品。

我希望实现自定义搜索过滤器功能,用户可以在其中创建搜索过滤器,然后保存以供日后使用。搜索过滤器是这样的:

  • 价格低于1000美元
  • 价格在1000美元到2000美元之间
  • 免费送货/不可用
  • shop is amazon / walmart /...
  • 名称包含“圣诞节”

有人可以让我了解用于在数据库中存储此类搜索过滤器的数据库架构。我应该将mysql子句存储在数据库中,如“WHERE price< 1000”,“WHERE free_delivery = 1”......或者可以创建这样的字段..

  • 字段(价格,名称,free_delivery)
  • value(1000)
  • expr(小于,大于)
  • 介于(1000)
  • 之间
  • 和(2000)
  • 包含

1 个答案:

答案 0 :(得分:1)

您不应在数据库中存储SQL子句。我建议你做这样的事情:

CREATE TABLE store (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(100)
);

示例行:(1,“亚马逊”),(2,“沃尔玛”),...

CREATE TABLE search_filter (
id INT NOT NULL PRIMARY KEY,
user_id INT NOT NULL,
name VARCHAR(100),
price_min INT,
price_max INT,
store_id INT,
has_free_delivery BOOLEAN,
keyword VARCHAR(50),
FOREIGN KEY (user_id) REFERENCES user(id),
FOREIGN KEY (store_id) REFERENCES store(id)
);

示例行:(1,43,“amazon christmas”,1000,1999,1,True,“christmas”)

以上示例将保存与用户43相关联的名为“amazon christmas”的过滤器。它指定用户希望在Walmart中查找价格从1000美元到1999美元不等的产品,并免费送货,并包含关键字“圣诞节” 。“