我需要在我的数据库设计中实现自定义评分系统。我的程序是一个标签系统。我的网站是一个约会网站,里面有关于某个人的标签。一个人将仅使用标签搜索潜在日期。每个标签的评级从1到10,具体取决于某个标签上的人自身费率。以下是它的工作原理:
搜索查询: 寻找女朋友或男朋友
Tag Rating
--------------- ------
Good-with-kids 5
athletic-figure 9
intelligence 8
cooking 10
在上面的查询中,有人在我的数据库中搜索了所有这些标签及其评级,这些标签包含人们在这些标签上评价自己的标签集合。
我的问题: 当我运行查询时,我可以匹配包含所有标签的配置文件。如果用户运行搜索查询,我希望系统捕获与所有标记不匹配的用户。如果查询与所有标记不匹配,则应将其排名较低。
你知道一个好的数据库布局吗?
答案 0 :(得分:2)
包含标签列表的表
标签( id ,名称)
一个表,其中包含用户与具有权重/排名属性的标记的映射
user_tags( user_id , tag_id ,重量)
select user_id, sum(user_tags.weight)
from user_tags join tags on tags.id == user_tags.tag_id
where tags.name in ('cooking', 'intelligence')
group by user_id
order by sum(user_tags.weight) desc