【发布时间】:2015-02-28 16:24:22
【问题描述】:
我的目标是为简单\典型的社交网络实现数据库模式。 我已经阅读了许多主题\答案,但有几个未解决的问题。 所以我们有 User 表(userId、name 等)。我们可以进行一些操作(回复、点赞、关注等)。我想为所有活动实现一些日志,并将其作为 PULL-MODEL。因此,我们在 Activity 表中为任何操作写入条目。此表的架构是 (id, ownerId, actionType, targetId, time),其中 ownerId 是 用户的 id,谁进行了操作。 actionType 是回复、关注或其他操作。 targetId 是用户或帖子的 id,取决于 actionType。当 用户 得到他的活动时,我们只是通过朋友 ID 进行查询。所以对我来说很清楚。我的问题是:
1) 如果我关注用户并取消关注他,我该怎么办?我应该在 Activity 表中创建两个条目还是应该删除第一个 followAction 条目?最佳做法是什么?
2) 很明显,我通过朋友 ID 进行查询,所以我得到了我朋友的所有活动。但万一不是我的朋友喜欢我的照片,我必须得到“一些不是我的朋友喜欢我的照片”的事件。那么,对于这种情况,有什么好的解决方案。可能我必须更改我当前的架构吗?
相关问题:
How to implement the activity stream in a social network
Database Design - "Push" Model, or Fan-out-on-write
What's the best manner of implementing a social activity stream?
谢谢大家的好答案。
【问题讨论】:
标签: sql database stream schema social-networking