2013-11-04 25 views
1

我有不同的帖子类型,如状态更新,项目,捐赠等。每种类型的帖子在数据库中都有一个或多个表。用户可以创建所有帖子类型。用户拥有像Facebook这样的墙,他可以看到他按照时间顺序创建的不同帖子类型(最后创建的任何帖子类型应该位于墙的顶部)。用户活动墙的最佳方法

什么是最合适的方法?

  1. 从数据库中获取数据与不同的查询存储在数组中然后操作数组?
  2. 要编写一个复杂的单个查询,可以按时间顺序从不同的表中获取数据?
  3. 为用户活动创建单独的表并存储用户执行任何活动时的数据?
  4. 你的方法与上面不同吗?

回答

1
  1. 简单的设置,不执行得很好(有一个非常坏的最坏情况)。

  2. 是最简单的。你说复杂但你可以用UNION + ORDER BY构造很容易做到这一点。性能会相当不错。

  3. 将执行我认为最好的,但会有一些重复,事情可能会有点复杂。关系数据库在多态性方面不太好。

重要的是要意识到在这些解决方案之间切换是相对容易的。如果你有一个面向服务的体系结构(或者一般的好设计)。所以我不会太担心你选择哪种方法。如果将来看起来你所选择的方法不能很好地工作,你可以切换到另一个方法。