Design patterns 我如何创建一个手动推荐引擎,在用户点击按钮后向其追随者推荐内容?

Design patterns 我如何创建一个手动推荐引擎,在用户点击按钮后向其追随者推荐内容?,design-patterns,database-design,oop,Design Patterns,Database Design,Oop,我正在创建一个类似于手动推荐系统的系统。它的工作原理是这样的:如果用户认为系统中的某些内容有趣,它可以推荐这些内容。这些内容将被推荐给所有用户的追随者,他们将出现在他们的墙上。我不在乎谁访问过,也不在乎任何形式的自动化,对我来说,重要的是用户能够通过点击按钮来分享评论 假设我跟踪的一个用户推荐了一篇博客文章,我的墙上会出现一个指向这篇文章的链接。此链接包含文章标题、说明等。 他还可以推荐视频、照片和用户档案等 对于推荐的每种内容,我都会有不同的布局和显示不同的信息,这就是我的问题所在: 我在创建

我正在创建一个类似于手动推荐系统的系统。它的工作原理是这样的:如果用户认为系统中的某些内容有趣,它可以推荐这些内容。这些内容将被推荐给所有用户的追随者,他们将出现在他们的墙上。我不在乎谁访问过,也不在乎任何形式的自动化,对我来说,重要的是用户能够通过点击按钮来分享评论

假设我跟踪的一个用户推荐了一篇博客文章,我的墙上会出现一个指向这篇文章的链接。此链接包含文章标题、说明等。 他还可以推荐视频、照片和用户档案等

对于推荐的每种内容,我都会有不同的布局和显示不同的信息,这就是我的问题所在:

我在创建方法时遇到了一些问题,因此解决了这个问题:我如何跟踪推荐的内容,如果帖子标题发生了更改,如何保持信息的更新,在推荐中应该更改,如何保持我的解决方案干净

以下是我认为的方法以及我不喜欢它们的原因:

创建一个名为“推荐”的常规表。这将有推荐标题,推荐信息1,推荐信息2,推荐信息3,…,推荐信息N。 这是一种很好的方法,因为它很容易检索,而且所有推荐类型都可以使用相同的列。 我不喜欢它,因为它不能保持信息的更新。要做到这一点有些复杂,每次更新一个对象时,我都必须检查可能的建议,因为它看起来很凌乱

创建推荐表和值对表。推荐表将具有所有推荐类型通用的字段,键值表将具有每个推荐类型的特定信息。 我不喜欢它,因为它在维护更新的字段时遇到同样的问题,第二个表对我来说看起来很混乱,而且执行查询以同时检索所有类型的建议也不是那么简单

创建一个只包含推荐ID、推荐类型和内容ID的推荐表。该表看起来更干净,这是一个优点,它还解决了更新信息的问题。 这里的问题是:我担心检索查询将非常复杂,我将不得不执行N个外部连接,因为我拥有的内容类型的数量是N,并且由于来自不同内容类型的不同类型的信息,我的select子句可能增长得非常快

你有什么想法/文章/设计模式可以帮助我吗


ps:我不知道这是否重要,但我正在使用asp.net和MSSQL,以便您的用户可以推荐照片、视频、汽车、香蕉等。制作一张表,列出所有这些内容。因此,用户可能推荐的所有项目都在Thing或Object表中,包含关于它是什么类型的东西以及附加信息在哪里的信息

当用户推荐某个东西时,您只需在用户和该东西之间创建一个关系。因此,推荐表将具有userId、thingId,可能还有一个时间戳来指示何时推荐该内容


在你的程序中,你可以用子类Photo,Video,Car,Banana创建一个超类。也许您所有的东西都实现了一些接口,这样您就可以调用thing.getName,不管它是什么类型的东西。

这与我描述的方法类似,谢谢: