我正在为Android创建一个购物列表应用程序,并且我正在使用MySQL服务器。
我创建了一个名为' shop_list'的SQL表。它的列是' list_id',' list_name',' user_id'和' item_ids' 因此,每个列表ID都连接到用户ID,因此当用户登录时,他只能看到他的列表。
我的问题是,我不知道哪些数据类型可用于'项目'列。
我有一个项目列表,我希望用户从那里选择他们的项目,所以我考虑使用SET数据类型,并填写所有可用项目ID来自' items'桌子,但我不知道该怎么做。
我还考虑过使用VARCHAR并只解析文本,但我担心它不够长(如果用户在列表中添加了很多项)。
请告诉我如何才能完成这项工作 谢谢!
编辑:
我有两张表:'products'
和'shop_list'
这就是'products'
的样子:
CREATE TABLE 'products' (
'id' int(5) NOT NULL AUTO_INCREMENT,
'productname' varchar(45) NOT NULL,
UNIQUE KEY 'id' ('id')
)
现在我需要的是创建另一个表来保存用户创建的列表 我想到了这样的事情:
CREATE TABLE 'shop_list' (
'list_id' int(5) NOT NULL AUTO_INCREMENT,
'list_name' VARCHAR(45) NOT NULL,
'user_id' VARCHAR(45) NOT NULL /*automatically insert the logged-on user ID*/
'products' /*I need this column to contain all the item IDs from 'products' table, according to the user's choice*/
);
我的问题是如何设置产品列是shop_list
表(通过从SET数据类型或任何其他想法中选择我没有想到...)
再次感谢
答案 0 :(得分:1)
您应该创建一个item
表,如下所示:
CREATE TABLE items(
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
description TEXT,
createdAt DATETIME,
PRIMARY KEY(id)
);
此表应包含所有项目,而不仅仅是用户已添加到其列表中的项目。
不言而喻,这是一个简单的例子,您应该包含有关每个项目的任何信息。
创建完成后,您应创建另一个与item
表中的项目匹配的shop_list
表中的列表:
CREATE TABLE list_item(
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT
listId INTEGER NOT NULL,
itemId BIGINT UNSIGNED NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY(listId) REFERENCES shop_list(id),
FOREIGN KEY(itemId) REFERENCES item(id)
);
当然,您需要更改listId
的数据类型以匹配您的
答案 1 :(得分:0)
将其设为一个单独的表:
shop_list
shop_list_item