自定义数据库评分系统

时间:2011-12-01 02:54:21

标签: sql sql-server-2008 database-design

我需要在我的数据库设计中实现自定义评分系统。我的程序是一个标签系统。我的网站是一个约会网站,里面有关于某个人的标签。一个人将仅使用标签搜索潜在日期。每个标签的评级从1到10,具体取决于某个标签上的人自身费率。以下是它的工作原理:

搜索查询: 寻找女朋友或男朋友

Tag              Rating
---------------  ------
Good-with-kids   5
athletic-figure  9
intelligence     8
cooking          10

在上面的查询中,有人在我的数据库中搜索了所有这些标签及其评级,这些标签包含人们在这些标签上评价自己的标签集合。

我的问题: 当我运行查询时,我可以匹配包含所有标签的配置文件。如果用户运行搜索查询,我希望系统捕获与所有标记不匹配的用户。如果查询与所有标记不匹配,则应将其排名较低。

你知道一个好的数据库布局吗?

1 个答案:

答案 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