如何在MySQL中构造列表?

| 我正在创建一个网站,部分功能是用户可以创建列表。每个用户只能有一个列表,每个列表只有一个用户。每个列表也都有一堆项目。项目可以在多个列表中使用。 因此,假设我有以下表格: 用户数 清单 物品 如何定义列表中的哪些项目?现在,我正在列表表中存储一串CSV \,但是我怀疑这是最好的方法。 谢谢!     
已邀请:
        通常,您将具有如下表定义:
create table user (
  id int,
  name varchar,
  list_id int, /* optional */
  etc.
)

create table list (
  id int,
  name varchar,
  owner_id int
  etc.
)

create table item (
  id int,
  name varchar,
  etc.
)

create table item_x_list (
  id int,
  list_id int,
  item_id int
)
这样:
user -> list -> item_x_list -> item*
请注意,如果您不需要名称之类的列表特定数据,则可以完全跳过列表。     
        您将需要另一个具有两列的表
Lists_Items
list_id
item_id
    
        我会像这样构造它 用户数   用户ID(主密钥)   用户名   ListID(Lists.ListID的外键) 清单   ListID(主键)   列表名称 ListsToListItems   ListID(Lists.ListID的外键)   ListItemID(ListItems.ListItemID的外键) ListItems   ListItemID(主键)   ListItemValue     
        根据您的限制,即一个用户只能有一个列表(或没有列表),而每个列表只能属于一个用户,我将这样做:
User
  userid
  username
  Primary Key (userid)

List
  listid
  listname
  Primary Key (listid) 
  Foreign Key (listid) References (User.userid)

ListItem
  listid
  itemid 
  Primary Key (listid, itemid) 
  Foreign Key (listid) References (List.listid)
  Foreign Key (itemid) References (Item.itemid)

Item
  itemid
  description 
  Primary Key (itemid)
    

要回复问题请先登录注册