database-design - 如何对用户之间交换的消息进行建模? - ER图

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

我正在尝试设计一个 ER 图,其中我有一个 USER 和一个 MESSAGE 实体。用户可以向其他用户发送消息。我为此设计了 2 个替代图表,但我不确定哪一个是正确的。 In the first one i use a recursive relationship with roles whereas in the second one, i use 2 different relationships.

最佳答案

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

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

pic01

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

一旦将其分解,即一旦对逻辑模型进行分解,就会出现以下情况:

pic02

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

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

关于database-design - 如何对用户之间交换的消息进行建模? - ER图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35310283/

相关文章:

ruby-on-rails - Rails : dependent: :destroy - How does this work?

mysql - Symfony2/ Doctrine 关系映射

database - 航程建模,旅客类型和客舱类型哪个设计更好

database - "Real"ER 图是什么?

MySQL Workbench EER/ERD 图 - 图形关系

sql - 在存储过程中接受多种数据类型

SQL表设计帮助

mysql - 推荐的用户信息数据库结构

ios - 快速加入多个关系

java - 在 JPA 中将实体类行设置为只读