我该如何构建这个数据库?

时间:2010-06-28 12:15:29

标签: mysql

我正在创建一个允许人们制作列表的网站,但我不确定存储这些列表的最佳方式。我应该为每个用户创建一个新表,还是一个坏主意?每个列表都会有几列。

提前致谢

编辑:每个用户将是一个列表,但如果它几乎相同,我可能会将其列为多个列表,以便将来提供更多选项。每个列表将包含项目,优先级,可能还有另外一列或两列。用户可以从列表中添加,编辑和删除项目,并将其设为私有或公开。

3 个答案:

答案 0 :(得分:3)

正如红色过滤器所指出的那样,您应该将信息分成多个表格。您的结构取决于您希望在列表中存储的内容,以及用户应如何与列表进行交互。一个用户是否应该查看其他用户列表?有多个名单?

例如,此结构允许用户拥有多个列表,每个列表都有多个项目:

list
  list_id
  list_name
  creator (user_id)

list_items
  list_id
  item

user_list
  user_id
  list_id

答案 1 :(得分:2)

是的,为每个用户创建一个新表是个坏主意。而是在UserID表格中添加List列。

然后你可以获得这样的给定用户列表:

select ListID, Name
from List
where UserID = 42 --example UserID

如果列表具有相同的架构,那么您可以使用ListValues列创建一个ListID表,该列是FK表的List,其中你需要的列。如果每个用户都可以创建自己的列,那么您可能希望实现Entity Attribute Value模型。

答案 2 :(得分:1)

糟糕的是,你的列表应该像下面这样。

id list user_id