【问题标题】:Can 2 Relationships be related in an ER Diagram?ER图中可以关联2个关系吗?
【发布时间】:2013-09-17 13:08:39
【问题描述】:

我正在为一个虚拟社交网站设计一个 ER,我需要在其中关联 2 个关系。具体来说,根据所附的图表,我将 Posts 关系和 Followed By (Followers) 关系与一个新的关系“可以看到”联系起来。

也就是说,关注者可以看到他们关注的用户的帖子。我需要帖子,因为它将具有使用 BlipID 发布 Blip 的用户的用户 ID。图表尚未完成,因此请忽略参与者、约束等。 请问有什么建议吗?

【问题讨论】:

  • 但是为什么你有“Follows”和“Followed By”的关系呢?这不是一回事吗?
  • 我认为can_see 的关系应该在UsersBlip 之间,因为你想要关于用户看到光点的关系,对吧?
  • 这是一个具体要求,即用户的个人资料应包含其所有关注者和所有关注者的 ID。这就是为什么我包括这两个关系。但是,在转换为关系型时,我将使用一个表,因为它本质上是相同的关系。
  • 是的,我希望用户看到该消息,但他们应该关注发布该消息的人。这就是为什么我很困惑,把这个关系放在哪里。虽然现在我想,我以后可以使用 View 来满足这一点。
  • 如果您的情况是“用户可以阅读他们关注的用户的帖子”,那么您已经拥有它,因为您可以通过选择查询获取您关注的用户的帖子。

标签: database-design entity-relationship


【解决方案1】:

正如一些 cmets 建议的那样,我相信您不需要 Followed By 和 Follows 实体。

相反,它应该是这样的:

Users:
UserId (PK)
<User info columns>

UserFollowsUser:
FollowerId (FK from Users.UserId)
FollowedId (FK from Users.UserId)
<other info, if needed>

现在,我不知道您是否要对关注关系添加限制(即您想限制关注者的某些帖子?还是他可以看到他关注的用户的所有帖子?)。

因为,如果你不需要任何限制,你就不需要“can read”实体。

在 Post 表中,只需要 UserId FK,follower 可以读取任何 UserId = FollowedId 的 Post。

【讨论】:

    猜你喜欢
    • 2013-04-25
    • 2013-01-10
    • 2014-01-09
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 2018-04-11
    相关资源
    最近更新 更多