我希望为我正在制作的网站实现每用户标签/兴趣云功能。
每个用户都有一个个人资料页面,在该页面上将显示他们预先选择的兴趣的标签云。每个用户都可以输入他们的兴趣,以逗号分隔,如果以前使用过此类标签,则提供建议;如果不存在,则创建。兴趣是音乐流派、爱好等。
我还想添加一些基本功能,例如比较用户标签云(共享标签)以根据他们的云找到“兼容”的用户。
我可以借助数据库后勤方面的帮助来实现这一目标。我了解简单的数据库设计,但我无法全神贯注地进行上述设计。
目前数据库是一个单表,有ID/用户名/密码/验证(最后一个用于电子邮件验证的 key )。
我为标签云数据库提出的唯一想法是两个表 - 一个名为 tags,带有 tagid 和 tagname 字段,另一个名为 users_tags,带有 tagid 和 userid 字段,以及用户拥有的每个标签的条目.但是我不确定这是否是最佳做法。
希望有人能就这一切给我一些指导 - 提前致谢。
最佳答案
拥有一个包含 userid 和 tagid 的表听起来只是最好的选择。
要找到您提到的“兼容”用户,您可以运行类似于
的查询SELECT
ut.userid, COUNT(*) ct
FROM
user_tags ut
WHERE
ut.tagid IN (SELECT uta.tagid FROM user_tags uta WHERE uta.userid=24 )
GROUP BY ut.userid ORDER BY ct DESC;
请注意,上述查询也会返回原始用户,但这比将他从查询中移除要高效得多。
关于php - PHP 和 MySQL 中的每用户标签云,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14979715/