Database 您认为这个活动流方案怎么样
我正在建立一个小型社交网络,用户可以在其中与其他用户进行连接,就像在所有其他社交网络中一样,我需要活动流。Database 您认为这个活动流方案怎么样,database,database-design,relational-database,Database,Database Design,Relational Database,我正在建立一个小型社交网络,用户可以在其中与其他用户进行连接,就像在所有其他社交网络中一样,我需要活动流。 我看到了一些类似的问题,但我不确定是否还有其他解决方案。 所以我想出了这样的办法: Activity { UserId, ToUserId, ActivityTypeId, ActivityDate, IsRead, ItemId } 用户ID-生成活动的用户, ToUserId-应该看到此活动的用户, 活动类型ID-新连接、照片、评论等, 活动日期, IsRead ItemId-根据我
我看到了一些类似的问题,但我不确定是否还有其他解决方案。
所以我想出了这样的办法:
Activity { UserId, ToUserId, ActivityTypeId, ActivityDate, IsRead, ItemId }
用户ID-生成活动的用户,ToUserId-应该看到此活动的用户,
活动类型ID-新连接、照片、评论等,
活动日期,
IsRead
ItemId-根据我知道需要从哪个表中获取数据的类型(用户、评论、照片等)
文本-例如,有新的连接,添加了新的评论,编辑了他的个人资料数据等
例如,当我的连接得到一个新连接时,我应该得到:
您的连接
[基于用户ID获取名称]
有一个新连接[从表用户获取数据(按项目ID)]
或
您的连接
[fetch name based UserId]
向[fetch data(by ItemId)from table(例如)Photo]
我的问题:
这是个糟糕的设计吗?为什么?
还有更好的方法吗?
更新:
当用户创建一个新活动时,我获取他的所有连接ID,并为每个连接ID将该活动添加到
activity
表中
或者这个答案是更好的选择?
随着数据库和用户的增长,添加连接将花费越来越长的时间,因为要为使用新连接的用户生成的活动越来越多。此外,如果他们断开了连接(非朋友),会发生什么情况?它们都应该被定义,可以是多行数据 也许最好是有一个连接类型并使用它,而不是在活动表中使用ToUserId。然后,当某人建立某种类型的连接时,除了连接表中的一行(FromUserId、ToUserId、ConnectionTypeId)之外,没有要生成的新数据(或者在他们解除朋友关系时删除)
我不是说这更好,只是想一想。我没有想到这一点。我看到了这个问题,你对被接受的答案有什么看法:如果答案在最前面(大约有79张赞成票),那么看起来他在做类似于我所说的事情——他没有凌乱的ID,看起来只有一行代表该活动,而不是每个人都应该显示一行。他是如何通过一个看起来像朋友表的东西来控制谁看到它的,这与我的建议类似,尽管我更进一步,建议了一种朋友类型,这可能有点过头了。
ActivityType { ActivityTypeId, Text}