1

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

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

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

我可以使用数据库后勤方面的帮助来实现这一点。我了解简单的数据库设计,但我无法理解上述设计。

目前数据库是一个单一的表,带有 ID/用户名/密码/验证(最后一个用于电子邮件验证的密钥)。

我为标签云数据库提出的唯一想法是两个表 - 一个称为带有 tagid 和 tagname 字段的标签,另一个是带有 tagid 和 userid 字段的 users_tags,以及用户拥有的每个标签的条目。但是我不确定这是否是最佳做法。

希望有人能给我一些指导 - 在此先感谢。

4

1 回答 1

0

拥有一张带有 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;

请注意,上面的查询也将返回原始用户,但它比从查询中删除他要高效得多。

于 2013-02-20T12:48:16.233 回答