我正在开始一个新的个人项目,我遇到了一些我无法处理的问题。我会用一个例子来解释你。
在我的网站上(带有CodeIgniter框架的PHP),我得到了用户。每个用户都应该有自己的预定义项目列表(数百个项目,所有用户都可以使用)。当用户注册时,他可以看到列表,但上面有“未获奖”的提及。随着时间的推移,他将获得物品,并且在显示列表时,他收集的物品应该具有“赚取”的提及。我认为我(显然)需要一个User表和一个Items表。但我不知道如何链接表格以使每个用户拥有自己的个人项目列表,这取决于他自己而不是其他用户。
我想我可以处理代码,但我真的不知道如何组织我的数据库。如果有人能给我一些关于此的提示,那就太棒了!
答案 0 :(得分:1)
您需要三个表:users
,items
和user_items
。 user_items
表包含user_id
和item_id
列,因此您可以使用查询user_items
表获取用户获得的项目。
例如,获取id为7的用户的项目:
SELECT items.id, items.name FROM items JOIN user_items ON items.id = user_items.item_id WHERE user_items.user_id = 7
答案 1 :(得分:1)
您正在考虑的是多对多关系,这需要一个链接用户和项目的附加表
与users_items_earned
字段user_id
和item_id
答案 2 :(得分:0)
你的结构应该是这样的
users
-----
id | name | etc
----------------
items
------
id | etc
---------
user_items
----------
id | user_id | item_id
-----------------------
您可以为用户获得的项目添加额外的表格
earned_user_items
------------------
id | user_id | item_id