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

vik*_*tra 7 mysql database-design

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

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

  • 价格低于1000美元
  • 价格在1000美元到2000美元之间
  • 免费送货/不可用
  • 商店是亚马逊/沃尔玛/ ...
  • 名字包含"圣诞节"

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

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

and*_*ery 1

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

CREATE TABLE store (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(100)
);
Run Code Online (Sandbox Code Playgroud)

示例行:(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)
);
Run Code Online (Sandbox Code Playgroud)

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

上面的示例将保存与用户 43 关联的名为“amazon christmas”的过滤器。它指定用户希望在 Walmart 查找价格在 1000 美元到 1999 美元之间、免费送货且包含关键字“christmas”的产品。