如何在2个用户之间建立/维护亲和力分数?

时间:2010-08-31 16:45:27

标签: ruby-on-rails ruby database-design affinity

我的意思是分析2个用户个人资料我得到的分数是互惠的 a.affinity(b) == b.affinity(a)

我特别想知道:

  • 您将使用哪个架构来实现关联表

  • db mysql,redis,..

  • 您将使用哪种技术更新背景中的亲和力分数?

由于

1 个答案:

答案 0 :(得分:1)

对于数据库设计部分,我建议使用join/junction table concept,除非在这种情况下,您要将表连接到自身。例如,如果您的用户表类似于:

UserId   UserName
------   --------
1        User Uno
2        User Dos
...

然后您的联接表看起来像:

UserIdA  UserIdB    AffinityScore
------   --------   -------------
1        2          56
34       208        137

其中UserIdA和UserIdB是第一个表中UserId的外键。 (你必须检查并确保一旦设置了UidA和UidB,例如分别为值1和2,如果值被交换则不重复关系,例如UidA和UidB的值分别为2和1,这可能导致应用程序中有些奇怪。如果使用Sql ServerMySql,您可以使用CHECK约束。)

就连接表概念而言,您选择db并不重要。它只是一个带有外键的表。对于后台更新,它取决于您的平台。可能是一个cron作业启动一个可执行文件或SSIS(Sql Server)运行T-Sql脚本和其中的很多东西。