用于存储搜索项和产品的数据库设计是什么?

时间:2015-04-23 16:01:35

标签: database-design sqlite relational-database foreign-key-relationship

我正在制作Android应用,而且我正在使用SQLite,但我很难搞清楚如何设计数据库。

我正在做的是通过搜索字词显示商店中的商品。我无法找出设计数据库的最佳方法,以便当应用程序处于脱机状态且用户搜索某些内容时,将显示正确的产品。每个产品都可以有多个搜索字词。

这是我到目前为止所想到的。

Product(int id, String productName, String image)
Search(int id, String term, int productID)

所以我将把所有产品都保存在产品表中,然后对于每个产品,我将在Search表中输入一个条目。这意味着该产品可能有多个搜索字词。

这是一个好策略吗?

1 个答案:

答案 0 :(得分:0)

我会设计你的桌子有点不同,但概念很好。这是你正在应用的规范化的第二条规则(参见例如 http://databases.about.com/od/specificproducts/a/normalization.htm

我稍微重写了你的设计:

CREATE TABLE Products(
  ID int primary key, 
  productname text, 
  image text);

CREATE TABLE Categories(
 ID int primary key, 
 term text, 
 productid int,
 FOREIGN KEY(productid) REFERENCES products(id)
);
然后它会起作用。我使用名称类别进行搜索,并使用名称产品而不是产品。表名通常是复数,我习惯了。