购物清单项目数据类型

时间:2016-05-17 09:54:49

标签: mysql list

我正在为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数据类型或任何其他想法中选择我没有想到...)

再次感谢

2 个答案:

答案 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

  • LIST_ID
  • LIST_NAME
  • USER_ID

shop_list_item

  • LIST_ID
  • ITEM_ID