我正在创建一个系统,其中有类似“手动推荐系统”的东西。它的工作原理是这样的:如果用户认为系统内部的某些内容很有趣,它可以“推荐”该内容。然后,此内容将被推荐给所有用户的关注者(他们将出现在他们的“墙”中)。(我不关心谁访问了或任何类型的自动化,对我来说,用户能够通过单击按钮来分享评论很重要)。
假设我关注的用户推荐了一篇博文,这篇博文的链接将出现在我的“墙”中。此链接包含帖子标题、描述等。他还可以推荐视频、照片和用户资料等。
对于每一种推荐的内容,我都会有不同的布局和显示不同的信息,这就是我的问题所在:
我在创建该方法时遇到了一些问题,因此请解决此问题:如何跟踪推荐的内容,保持信息更新(如果帖子标题已更改,则应在推荐中更改)并保持我的解决方案干净?
这些是我所采用的方法以及我不喜欢它们的原因:
创建一个名为“推荐”的“常规”表。这将具有推荐标题、推荐信息_1、推荐信息_2、推荐信息_3、...、推荐信息_N。这是一种很好的方法,因为它很容易检索,并且所有推荐类型都可以使用相同的列。我不喜欢它,因为它不能保持信息更新(这样做有点复杂,每次更新对象时我都必须检查可能的建议)而且看起来很乱。
创建推荐表和“值对表”。推荐表将具有所有推荐类型共有的字段,键值表将具有每种推荐类型的特定信息。我不喜欢它,因为它在维护更新的字段时也有同样的问题,第二张表对我来说看起来很乱,而且执行查询来一次检索各种建议也不会那么简单。
创建仅包含推荐 ID、推荐类型和内容 ID 的推荐表。表格看起来更干净,这是一个加分点,它还解决了更新信息的问题。这里的问题是:我担心检索查询会很复杂,我将不得不执行 N 个“外连接”,因为我拥有的内容类型的数量和我的 select 子句由于种类不同而增长很快来自不同内容类型的信息。
你有什么想法/文章/设计模式可以帮助我吗?
ps:我不知道这是否重要,但我使用的是asp.net和msssql