使用什么数据库设计来存储搜索词和产品?
What database design to use for storing search terms and products?
我正在制作一个 Android 应用程序,我正在使用 SQLite,但我很难弄清楚如何设计数据库。
我正在做的是按搜索词展示商店的产品。我想不出设计数据库的最佳方法,以便当应用程序处于离线状态并且用户搜索某些内容时,将显示正确的产品。每个产品可以有多个搜索词。
这就是我目前想到的。
Product(int id, String productName, String image)
Search(int id, String term, int productID)
所以我将保留产品 table 中的所有产品,然后我将在搜索 table 中为每个产品创建一个条目。这意味着该产品可能有多个搜索词。
这是个好策略吗?
我会设计你的桌子有点不同,但这个概念很好。这是您正在应用的第二条规范化规则(例如参见
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)
);
那就行了。我使用名称类别进行搜索,并使用名称产品而不是产品。表名通常是复数,我已经习惯了。
我正在制作一个 Android 应用程序,我正在使用 SQLite,但我很难弄清楚如何设计数据库。
我正在做的是按搜索词展示商店的产品。我想不出设计数据库的最佳方法,以便当应用程序处于离线状态并且用户搜索某些内容时,将显示正确的产品。每个产品可以有多个搜索词。
这就是我目前想到的。
Product(int id, String productName, String image)
Search(int id, String term, int productID)
所以我将保留产品 table 中的所有产品,然后我将在搜索 table 中为每个产品创建一个条目。这意味着该产品可能有多个搜索词。
这是个好策略吗?
我会设计你的桌子有点不同,但这个概念很好。这是您正在应用的第二条规范化规则(例如参见 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)
);
那就行了。我使用名称类别进行搜索,并使用名称产品而不是产品。表名通常是复数,我已经习惯了。