【问题标题】:How to model messages exchanged between users? - ER Diagram如何对用户之间交换的消息进行建模? - ER图
【发布时间】:2016-02-10 08:40:42
【问题描述】:

我正在尝试设计一个 ER 图,其中我有一个 USER 和一个 MESSAGE 实体。用户可以向其他用户发送消息。我为此设计了 2 个替代图表,但我不确定哪一个是正确的。

【问题讨论】:

    标签: database-design entity-relationship erd entity-relationship-model


    【解决方案1】:

    两者都没有。这里有一个自我关系的例子。

    发送消息被解释为一个事件,而不是一个实体,即使它具有属性/属性。这里有两个实体之间的密切联系:用户和用户。 ER图中的概念模型的正确情况是:

    注意这里的基数。用户可能已经或可能没有向其他人发送消息。同样,用户可能会也可能不会收到来自其他用户的消息。

    一旦你肢解它,也就是你对逻辑模型进行分解,你最终会得到以下情况:

    这里的“To”和“From”代表一个外键。这种类型的模型会在数据库中生成两个表。一个代表系统的用户。另一个将代表用户之间交换的消息。这里的外键可能会也可能不会作为复合主键。在我看来,我更喜欢使用代理键,但这取决于你。

    希望我在某种程度上有所帮助。如果您还有其他问题,请发表评论,我将编辑我的答案,或者我也可以添加评论。

    【讨论】:

      【解决方案2】:

      我认为您可以使用第二个,但只能使用一个多对多关系。

      通过这种方式,您可以与两个指向 USER 的外键和一个指向 MESSAGE 的外键建立多对多关系。

      所以,您有 IDUSERSENDERIDUSERRECEIVERIDMESSAGE。我没有你在消息表中的内容,但你也可以在关系中添加一个名为 TEXT 的属性,用于在此处插入消息的内容。

      你怎么看?这个想法是否符合您的需求?

      【讨论】:

        【解决方案3】:

        我会将 sender_id 作为消息的属性,同时为收件人提供多对多表。正式地,ER 模型不会将实体之间的关系与属性混合在一起。我认为第二个图表形式上是正确的,即使这两个关系的实现方式不同。

        【讨论】:

          猜你喜欢
          • 2010-09-28
          • 2019-02-20
          • 2013-11-23
          • 2014-12-22
          • 1970-01-01
          • 2019-08-28
          • 1970-01-01
          • 2018-12-31
          • 1970-01-01
          相关资源
          最近更新 更多