我想构建一些类似于Facebook的活动源。在问我的问题之前,我想解释一下我的mySQL数据库设计。我有一个用户表,即。活动提要的数据库设计和SQL查询?
user_id name other columns
userA - -
userB - -
userC - -
userD - -
的用户可以按照对方,这里就是所谓的“追随者”
id user_id follower_id
1 userA userB
2 userD userB
3 userB userA
-
-
-
正如我们看到的,在上面的表中,用户B是继用户A和userD表。
现在我的问题是,当user_id中的user_id的用户的任何一个活动,应该被通知。我应该让另一个表,让说,“活动”,是这样的:
user_id activity_type activity_link activity_date
userA note
userB photo
userC note
userD photo
问题1:我需要做额外的表(如上图所示)来存储活动,也可以不说做什么?
问题2:由于userB只关注userA和userD,因此userB只关心他所关注的用户,我该如何构建sql查询呢?某事像:
Select * from activity where user_id exists in user_id in followers table where follower_id = userB
(这是我的想法,你能帮助我建立SQL查询)
感谢您阅读此长的问题和可能的帮助。
非常感谢您提供了如此详细和精彩的回复。 – tcj 2011-02-05 16:52:15