php - PHP 和 MySQL 中的每用户标签云

标签 php mysql

我希望为我正在制作的网站实现每用户标签/兴趣云功能。

每个用户都有一个个人资料页面,在该页面上将显示他们预先选择的兴趣的标签云。每个用户都可以输入他们的兴趣,以逗号分隔,如果以前使用过此类标签,则提供建议;如果不存在,则创建。兴趣是音乐流派、爱好等。

我还想添加一些基本功能,例如比较用户标签云(共享标签)以根据他们的云找到“兼容”的用户。

我可以借助数据库后勤方面的帮助来实现这一目标。我了解简单的数据库设计,但我无法全神贯注地进行上述设计。

目前数据库是一个单表,有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/

相关文章:

java - 通过从 mysql 中选择(排序)排序

java - SmartGwt 和 hibernate 用于数据库连接

mysql - 更新mysql数据最快、最有效的方法

php - MySQL 复杂查询未返回正确结果

php - 使用 Zend_Db 时 pdo_mysql 与 mysqli

php - 比较php中的两个时间戳

php - 转换数据库的日期格式

php - 无法输出个人资料页面的缩略图

php - session 变量有限制吗?

mysql - 插入后在触发器中循环