【问题标题】:I created in an ER Diagram two relationships in only one. Can I do that?我在 ER 图中只在一个中创建了两个关系。我可以这样做吗?
【发布时间】:2020-01-02 07:05:29
【问题描述】:

首先,我创建了业务规则:

用户可以在城市发表评论,用户cmet可以被其他用户回答。

cmets 层次结构是:根 cmets、对根 cmets 的回答、对回答根 cmets 的回答。所以, 层次结构只有一层。

关于我的想法的示例:

Ana123: I was in Seville and I love it. (Root comment)
    Juan321: Ohh, yesss it's beautiful. (answer to root comments)
    Manuel99: "Juan321" Yessss :D (answer to answer root comments)

然后:

  • 一个用户在零个或多个城市中聚集。
  • 一个城市被零个或多个用户评论。
  • 一个用户回答零个或多个用户。
  • 一个用户被零个或多个用户回答。
  • 用户拥有:ID、姓名、电子邮件、密码。
  • 城市有:ID、名称、描述。

根据商业规则,我得到了这个 ER 图:

注意:我删除了红色关系,因为它与 CITY 隔离,对我来说没有多大意义。

所以从 USER - CITY 关系我得到了下一张表:

TABLE: user_comments_city
id_comment(PK) | id_user | id_city | text | date

但正如我所说,我只将两个关系组合在一个中,我添加了“answer_comment”字段(使用这个 我认为我实现了这一点)。我将使用上面的示例:

TABLE: user_comments_city
id_comment(PK) | id_user | id_city | text                           | date              | answer_comment
...              ...       ...       ...                              ...                 ... (NOTE: "..." represents other comments)
15               2         4         I was in Seville and I love it.  20/08/2019 20:20
16               13        4         Ohh, yesss it's beautiful.       20/08/2019 21:31    15
...              ...       ...       ...                              ...
21               9         4         Yessss :D                        21/08/2019 11:20    16
22               17        4         I love it too :)                 21/08/2019 14:00    15

所以,我问:我可以这样做吗?有没有一种有效的方法来实现这一目标?

【问题讨论】:

  • 你的意思是“有没有一种有效的方法来实现这一目标?”看起来你已经实现了你想要的?

标签: database-design relationship entity-relationship business-rules


【解决方案1】:

简短回答:是的,你可以这样做。

长答案:user_comments_city 表中的代理标识符 (id_comment) 表示概念关系已更改为实体集。关系由与其相关的实体集的键标识。修改后的user_comments_city 表对应的 ER 图如下所示:

实际上,您所做的并不是将两个关系合二为一,而是将三个关系(user_commentscity_commentsanswer_comments)非规范化为COMMENT 实体集的实体关系。

【讨论】:

  • 啊,谢谢:)。现在 COMMENT 扭转了一切。 关于概念我不记得了:1.“概念关系”是ER图还是业务规则? 2. “实体集”也是 USER 和 CITY 吗?我说“set”这个词,我总是说例如:Entidad USUARIO(西班牙语)
  • 关于争论:1. 关于我添加到user_comments_city 表中的标识符。我大部分时间都这样做,我不会把它变成实体集。我想象这样一种情况:我的网站每天有大量流量,这种情况可能会发生:不同id_user(PK)在同一id_city(PK)同一@评论某事(text) 987654334@(PK)。在那种情况下对它们进行排序,我认为我可以得到随机结果,所以我使用id_comment 来避免这个问题,并且它可以让我轻松使用user_comments_city 表(例如:sort cmets)。
  • “概念关系”是指,在概念模型(即 ER 模型)中,关系变成了实体集。 USER 和 CITY 也是实体集。实体集(和值集)是与关系模型中的域对应的 ER 概念,即它们是值集。
  • 如果 COMMENT 由 id_comment 标识,那么它是一组值,即一个实体集。如果它由 (id_user, id_city) 标识,那么它就是一个关系。如果您不遵循这种方法,那么您将偏离 Chen 所描述的 ER 模型。
  • 你的 cmets 很有用 :) 。在你的最后一条评论中......我几年前向我的老师提出了我在评论“关于争论”中告诉我的情况,他告诉我类似“好的,你可以使用id表作为一个把戏。”之后,我在我的 ER 图中将其作为关系(这可能是他的不知道)。然后,我问:我能否解决我在“关于争论”中所说的问题,将关系保留在我的 ER 图中?仅供了解。
猜你喜欢
  • 2016-12-11
  • 2013-09-17
  • 1970-01-01
  • 2015-02-09
  • 1970-01-01
  • 2011-11-16
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多