我有三张桌子 -Users -Posts - 活动(包含用户喜欢或不喜欢帖子的信息)。
我的业务要求是建议人们根据他们的喜好互相关注。
我创建了一个流程,根据用户喜欢和不喜欢的方式计算相互得分。
例如:用户AA喜欢ID为100的帖子,比其他用户(比如50个用户)也喜欢这篇帖子,我通过添加每个公共帖子(上面的100个)计算用户AA对所有50个用户的得分例如,他们可以达到数百或更多)得分,我建议用户AA用户AA具有最高的相互得分的用户。
我的问题是,当我在平面表中针对其他用户存储每个用户的计算时(因此我不需要从每次开始处理),表格变得非常大。请建议我最好的数据库表结构,用于存储用户的相互得分数据
由于
答案 0 :(得分:1)
我认为这不是桌面空间问题。如果您计算每对用户之间的分数,您将获得O(n ^ 2)分数。您应该使用启发式来获得或多或少得到每个用户得分较高的人,并仅计算这些对之间的分数(您可以将其限制为仅计算每个用户的最佳10个用户)。这样你就可以使用更少的空间,我会更快地工作。所有社交网络和那些应用程序在进行所有计算时都会使用启发式和欺骗行为......您应该这样做......