2016-05-17 2 views
2

私はアンドロイドのショッピングリストアプリケーションを作成しています。私はMySQLサーバーを使用しています。ショッピングリストアイテムのデータ型

'shop_list'という名前のSQLテーブルを作成しました。そのカラムは 'list_id'、 'list_name'、 'user_id'、 'item_ids'です。
各リストIDはユーザーIDに接続されているため、ユーザーがログオンしているときにはリストのみが表示されます。

私の問題は、「アイテム」列に使用するデータタイプがわからないことです。
私はユーザーがそこからアイテムを選択してもらいたいアイテムのリストを持っているので、SETデータタイプを使用することを考えて、アイテムテーブルのすべてのアイテムIDを入力しましたが、それ。

私はVARCHARを使ってテキストを解析することも考えましたが、ユーザーがリストに多くの項目を追加した場合には十分ではないことに恐れています。

私はこの仕事をするために何ができるのですか教えてください。
ありがとうございます!

編集:
私は2つのテーブル:'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

あなたはrefereceから '' VARCHAR(5000)を使用することができます。_The長さが0から65,535_ – vaso123

+0

に値コメントありがとうございましたように、私はこの方法を考えていることはそれ、私はかなりバギー – Nickleby

答えて

1

をITEM_ID:

CREATE TABLE items(
    id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, 
    name VARCHAR(100) NOT NULL, 
    description TEXT, 
    createdAt DATETIME, 
    PRIMARY KEY(id) 
); 

この表には、ユーザーがリストに追加した項目だけでなく、すべての項目を含める必要があります。

これは簡単な例であり、各項目について必要な情報を含める必要があります。もちろん

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のデータ型を変更する必要があります。

これを作成した後、shop_listテーブルからリストにitemテーブルからアイテムを一致します別のものを作成する必要がありますあなた

+0

あなたの助けをありがとう、私のEDIT – Nickleby

+0

@Nicklebyに気付いてくださいまず、あなたの 'products'テーブルはプライマリキーを必要としますので、これをしてください:' ALTER TABLE products ADM PRIMARY KEY(id) ' リストと製品を接続する別のテーブルを作成する必要があります。リストのすべての製品を1行に格納することはできません。このために十分なデータ型はありません。ベストプラクティスは、別のテーブルを作成することです – dimlucas

0

は、この別のテーブル行います

shop_list

  • LIST_NAME
  • のuser_id

shop_list_item

  • をLIST_ID LIST_IDあなたはこのようなitemテーブルを作成する必要があります
+0

かもしれ指定することができます私の問題は、値を正しく挿入する方法です。 – Nickleby

+0

最初の 'shop_list(list_name、user_id)の値( 'My list'、100)に挿入します。 (last_insert_id()、23456)、(last_insert_id()、34567); –

+0

ああ、あなたと、その後両方のテーブルからデータを取得する、いいね。それを達成するより簡単な方法はありませんか? – Nickleby