1

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

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

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

4

1 回答 1

2

这是一个常见的问题。pairing_id在表中添加MESSAGES并适当更改两个FOREIGN键以包含此列:

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

大多数 DBMS 还要求您不断添加UNIQUE索引PARTICIPANTS (pairing_id, participant_id)CONVERSATIONS (pairing_id, conversation_id)

于 2012-06-18T20:26:50.313 回答