MySQL加入了朋友提要

时间:2010-10-06 03:30:12

标签: sql mysql join friendfeed

我目前正在记录用户的所有操作,并希望为跟随他们的人们显示他们的操作 - 有点像Facebook为朋友做的。

我在具有以下结构的表中记录所有这些操作:

  • id - PK
  • userid - 记录其操作的用户的ID
  • actiondate - 行动发生时
  • actiontypeid - 操作类型的ID(存储在不同表中的actiontypes - 即关注其他用户,撰写人员个人资料,创建新内容,评论现有内容等)
  • objectid - 他们刚创建的对象的ID(即评论ID)
  • onobjectid - 他们执行操作的对象的ID(即他们评论的内容的ID)

现在问题是记录了几种类型的操作( actiontypeid )。

检索要显示给用户的数据的最佳方法是什么?

最简单的方法是抓住用户跟随数据集的人,然后从那里开始并从其他表中获取所有其他信息(即您刚刚开始关注的人员的姓名,名称他们写的用户档案等等)。然而,这会在while循环中创建大量的小查询和数据库之旅。不是个好主意。

我可以使用连接来检索一个大型数据集中的所有内容,但是如何才能知道从一个查询中获取数据的位置? - 根据 actiontypeid ...有不同类型的操作要求我查看几个不同的表来检索数据...

即。要获得 用户X现在关注用户Y ,我必须从关注者表中获取我的数据(用户Y的用户名),而< strong> 用户X评论内容Y 需要我查看内容表以获取内容的标题和网址。

欢迎任何提示,谢谢!

1 个答案:

答案 0 :(得分:1)

考虑为不同的actiontypeids创建多个视图。联合他们有一个完整的历史。