Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 您认为这个活动流方案怎么样_Database_Database Design_Relational Database - Fatal编程技术网

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}