您对此活动流计划有何看法?

时间:2014-01-03 14:30:50

标签: database database-design relational-database

我正在构建一个小型社交网络,用户可以与其他用户建立联系,就像我需要的所有其他社交网络一样。 我看到了一些类似的问题,但我不确定其他解决方案 所以我提出了这样的事情:

Activity { UserId, ToUserId, ActivityTypeId, ActivityDate, IsRead, ItemId }

UserId - 生成活动的用户,
ToUserId - 应该看到此活动的用户,
ActivityTypeId - 新连接,照片,评论等,
ActivityDate
IsRead
ItemId - 基于我知道从哪个表中获取数据(用户,评论,照片等)的类型。

ActivityType { ActivityTypeId, Text}

文字 - 例如有新的连接,添加新评论,编辑他的个人资料数据等。

例如,当我的连接获得新连接时,我应该得到:

您的连接[fetch name based on UserId]有新连接[fetch data (by ItemId) from table user]



您的关联[fetch name based on UserId]已向[fetch data (by ItemId) from table (for example) Photo]添加了新评论

我的问题:
这是不好的设计,为什么?
有更好的方法吗?

更新:

当用户创建一个新活动时,我会获取他所有的连接ID,并为每个连接我在Activity表中添加该活动。



或者这个答案是更好的选择?
How to implement the activity stream in a social network

1 个答案:

答案 0 :(得分:1)

随着您的数据库和用户的增长,添加连接将花费更长时间,因为有更多活动要为具有新连接的用户生成。此外,如果他们断开连接(非朋友)会发生什么?它们都应该被发现,这可能是许多行的数据。

也许最好是拥有一个连接类型并在Activity表中使用它而不是ToUserId。然后,当有人建立某种类型的连接时,除了连接表中的一行(FromUserId,ToUserId,ConnectionTypeId)之外,没有新数据要生成(或者当它们彼此不相互时删除)。

我不是说这更好,只是要考虑一下。