Database design 专用聊天应用程序的数据模型设计

Database design 专用聊天应用程序的数据模型设计,database-design,data-modeling,Database Design,Data Modeling,我很难为我的应用程序设计合适的数据模型。 在我的应用程序中,我有两对参与者,他们将一起完成几个活动。每个配对在其存在过程中将有2-3次对话。每个对话可能有许多由配对中的任一参与者编写的消息。 我最好的型号是: PAIRINGS / \ / \ V V PARTICIPANTS CONVERSATIONS -pairing_id -pairing_id \

我很难为我的应用程序设计合适的数据模型。
在我的应用程序中,我有两对参与者,他们将一起完成几个活动。每个配对在其存在过程中将有2-3次对话。每个对话可能有许多由配对中的任一参与者编写的消息。
我最好的型号是:

         PAIRINGS
          /     \
         /       \
        V         V  
PARTICIPANTS     CONVERSATIONS
-pairing_id      -pairing_id
       \          /
        \        /
         V      V
         MESSAGES
         -participant_id
         -conversation_id

但是,该模型允许消息的作者在与对话相关联的配对之外,这似乎是错误的。有谁对我如何构建数据模型有更好的建议吗?

这是一个常见问题。在
MESSAGES
表中添加
pairing\u id
,并适当更改两个
FOREIGN
键以包括此列:

          PAIRINGS
          /     \
         /       \
        V         V  
PARTICIPANTS     CONVERSATIONS
-pairing_id      -pairing_id
       \          /
        \        /
         V      V
         MESSAGES
         -participant_id
         -conversation_id
         -pairing_id

大多数DBMS还要求您在
参与者(配对id,参与者id)
对话(配对id,对话id)
上添加
唯一的
索引,这太模糊了。没有标准的符号。没有足够的细节。我没有足够的声誉来发布图片,所以我无法包含图表。如果有任何问题我可以回答,我很乐意回答。很有趣。。。这是一个我可以阅读更多的常见模式吗?我可以在互联网上搜索一些术语吗?是的,我应该说这在菱形设计中很常见。请看这个类似的问题:或者这个(更复杂的)问题:请注意,这需要一个复合(复合)PK或唯一索引以及复合外键,并且一些ORM在复合FK方面有困难,或者根本无法使用这些。