答案 0 :(得分:5)
两者都没有。这里我们有一个自我关系的案例。
发送消息被解释为事件,而不是实体,即使它具有属性/属性。两个实体之间存在紧密连接:用户和用户。 ER图中概念模型的正确情况是:
请注意这里的基数。用户可能会或可能不会向其他人发送消息。同样,用户可能会也可能不会收到来自其他用户的消息。
一旦你肢解它,也就是说,一旦你对逻辑模型进行分解,你就会得到以下情况:
“To”和“From”在这里表示外键。这种类型的模型在数据库中产生两个表。一个将代表系统的用户。另一个将代表用户之间交换的消息。此处的外键可能会也可能不会作为复合主键。在我看来,我更喜欢使用代理键,但这取决于你。
希望我在某种程度上帮助过。如果您还有其他问题,请发表评论,我会编辑我的答案,或者我也可以添加评论。
答案 1 :(得分:0)
我认为你可以使用第二种,但只能使用一对多关系。
通过这种方式,您可以与两个指向 USER 的外键和一个用于 MESSAGE 的外键具有多对多关系。
因此,您有 IDUSERSENDER , IDUSERRECEIVER 和 IDMESSAGE 。我不知道你在消息表中的内容,但你也可以在名为 TEXT 的关系中添加一个属性,以便在这里插入消息的内容。
你怎么看?这个想法是否符合您的需求?答案 2 :(得分:0)
我会将sender_id作为邮件的属性,同时为收件人提供多对多表。正式地,ER模型不会混合具有属性的实体之间的关系。我认为第二个图正式正确,即使两个关系的实现方式不同。