我正在开发一个社交网络应用,并希望创建一个活动源,以便人们可以及时了解他们的所有连接(经典的Facebook流)。我有一个名为activity
的数据库表,如下所示:
activity_id (int)
user_id (int) //who posted it
group_id (int) //the group of connections that have permission to view
type (enum) //the type of activity performed
time (datetime) //the time the activity was performed
然后我会做一个select * from activity where user_id in (connections)
来获取最新消息。
这是一个问题。用户的活动并不总是能够看到整套连接。用户可以创建用户ID组,以在其超级连接集中形成较小的集。就像facebook允许你指定谁看到特定帖子而不是让所有朋友看到它一样。
我有一个单独的groups
表设置,其中包含以下架构:
group_id (int)
connection_id (user_id, int)
user_id (group creator)
我的活动表中有一个group_id。 group_id是指向有权查看帖子的连接子集的链接。
我的问题是,执行此类Feed的最佳方法是什么,是否有最佳的单一选择语句可以获得所需的输出(我已被授予权限的连接活动列表) ?
感谢。