如何在DataBase中组织我的表?

时间:2013-12-04 13:48:39

标签: php mysql codeigniter

我正在开始一个新的个人项目,我遇到了一些我无法处理的问题。我会用一个例子来解释你。

在我的网站上(带有CodeIgniter框架的PHP),我得到了用户。每个用户都应该有自己的预定义项目列表(数百个项目,所有用户都可以使用)。当用户注册时,他可以看到列表,但上面有“未获奖”的提及。随着时间的推移,他将获得物品,并且在显示列表时,他收集的物品应该具有“赚取”的提及。我认为我(显然)需要一个User表和一个Items表。但我不知道如何链接表格以使每个用户拥有自己的个人项目列表,这取决于他自己而不是其他用户。

我想我可以处理代码,但我真的不知道如何组织我的数据库。如果有人能给我一些关于此的提示,那就太棒了!

3 个答案:

答案 0 :(得分:1)

您需要三个表:usersitemsuser_itemsuser_items表包含user_iditem_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_iditem_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