【发布时间】:2018-09-13 22:35:12
【问题描述】:
我正在向应用程序添加一项功能,用户可以在该应用程序中向其他用户发送和接收私人聊天消息。 (一条消息只能发送给一个用户)。
用户模型很简单,有id、name等。消息模型有id、title、body、senderId和receipientId。
一个用户可以发送很多消息,也可以接收很多消息,所以我认为这是一个多对多的关系。但是,一个用户可以发送多条消息,但每条消息将由一个用户发送,因此可以是一对多的。
我如何确定这是一种什么样的关系。我在网上搜索了有关关系的信息,但无法弄清楚这一点。我正在使用实体框架。
我了解基本的数据库关系,但这一个很棘手,因为它既是发送者又是接收者。
【问题讨论】:
-
嗨。请说出您正在遵循的信息建模和数据库设计教科书并将您所做的事情与它联系起来。否则,答案只会重写教科书。记录设计的产品手册不是关于如何设计的教科书。 PS 您似乎对“发送者 S 向接收者 R 发送消息”或“消息 M 是发送者 R 向接收者 R 发送文本 T”之类的关系/关联感兴趣。首先找到实体,然后找到它们上的关系(船舶)/关联。关系(船)/关联可以给出“关联实体”。然后根据你所遵循的方法观察基数。
-
@philipxy,我很欣赏这个链接,但这对我一点帮助都没有。我了解基本的关系商店,但我的问题(我说得很清楚)有点不同。一对多关系链接回相同的用户表,因此有点不同。我想澄清这种关系,但在我自己搜索后无法找到。
-
您需要提供您的参考以及您如何遵循它。消息是弱实体吗?那么你想要基数的关系是什么?是关系吗?在哪些实体上?哪个是“这个”关系?不同的方法以不同的方式使用“关系”——关联与 FK。您是在向用户谈论 FK 吗?不清楚你想知道什么。如果你知道你有 FK,你还需要知道什么?不同的方法以不同的方式确定和记录基数。根据我的第一条评论采取行动。请参阅点击谷歌搜索“stackexchange 作业”。 PS 将说明编辑到帖子中,而不是 cmets。
-
我还不清楚我描述了我的两个模型,它真的没有那么复杂。这两张海报已经帮助了我,也许可以做一些笔记。再一次,您的 cmets 无济于事。
-
两个答案都以您不清楚。答案的其余内容验证了我的 cmets。接受的关于 2 个 FK 的答案可能会对您有所帮助,但它肯定不能回答您的问题,因为您知道有 2 个 FK 但您正在谈论其他一些事情,“这种关系”。第一个答案在 FK 的意义上提供了“关系”,而在其他关联的意义上提供了“关系”。他们不知道你想要什么并且在猜测。所以我支持我的cmets。
标签: sql sql-server database entity-framework relational-database