我正在使用Php/MySQL构建一个站点,我的问题很简单(我希望).在注册过程中,要求用户从大约15的列表中选择他们的兴趣.对于每个用户,将这些存储在数据库中的最佳方法是什么?我应该将兴趣存储在一个单独的表中并有一个连接表来匹配user_id到interest_id吗?
是的,最好保持数据库规范化,以便更容易查询公共信息(即,获得所有具有此兴趣的用户).
你可以有一个interests
兴趣表:
| iID | iInterest | | 1 | Cars | | 2 | Computers |
然后,例如,您的用户表:
| uID | uName | | 1 | John | | 2 | Jake |
然后你会有一个多对多的关系表,将用户链接到兴趣(UserInterests):
| uID | iID | | 1 | 1 | | 1 | 2 | | 2 | 2 |
从这里,您可以看到用户John喜欢汽车和电脑,但用户Jake只喜欢电脑.假设您希望获得所有喜欢计算机的用户,您只需将表连接在一起:
SELECT uName FROM Users INNER JOIN UserInterests ON Users.uID = UserInterests.uID AND UserInterests.uID = 2