2

I mean analyzing 2 users profiles I get a score that it is reciprocal
a.affinity(b) == b.affinity(a)

I'd like to know in particular:

  • which schema would u use to implement the affinity table

  • which db mysql, redis,..

  • which technology would you use to update the affinity score in background?

Thanks

4

1 回答 1

1

对于 db 设计部分,我建议使用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 作业或运行 T-Sql 脚本的 SSIS (Sql Server) 以及介于两者之间的许多东西。

于 2010-08-31T17:00:40.660 回答