【发布时间】:2016-02-10 08:40:42
【问题描述】:
【问题讨论】:
标签: database-design entity-relationship erd entity-relationship-model
【问题讨论】:
标签: database-design entity-relationship erd entity-relationship-model
两者都没有。这里有一个自我关系的例子。
发送消息被解释为一个事件,而不是一个实体,即使它具有属性/属性。这里有两个实体之间的密切联系:用户和用户。 ER图中的概念模型的正确情况是:
注意这里的基数。用户可能已经或可能没有向其他人发送消息。同样,用户可能会也可能不会收到来自其他用户的消息。
一旦你肢解它,也就是你对逻辑模型进行分解,你最终会得到以下情况:
这里的“To”和“From”代表一个外键。这种类型的模型会在数据库中生成两个表。一个代表系统的用户。另一个将代表用户之间交换的消息。这里的外键可能会也可能不会作为复合主键。在我看来,我更喜欢使用代理键,但这取决于你。
希望我在某种程度上有所帮助。如果您还有其他问题,请发表评论,我将编辑我的答案,或者我也可以添加评论。
【讨论】:
我认为您可以使用第二个,但只能使用一个多对多关系。
通过这种方式,您可以与两个指向 USER 的外键和一个指向 MESSAGE 的外键建立多对多关系。
所以,您有 IDUSERSENDER、IDUSERRECEIVER 和 IDMESSAGE。我没有你在消息表中的内容,但你也可以在关系中添加一个名为 TEXT 的属性,用于在此处插入消息的内容。
你怎么看?这个想法是否符合您的需求?
【讨论】:
我会将 sender_id 作为消息的属性,同时为收件人提供多对多表。正式地,ER 模型不会将实体之间的关系与属性混合在一起。我认为第二个图表形式上是正确的,即使这两个关系的实现方式不同。
【讨论】: