在Dynamodb中建模多个多对多关系

时间:2019-03-31 17:55:29

标签: database nosql amazon-dynamodb entity-relationship data-modeling

我正在尝试在一个Dynamodb表中对以下关系进行建模。

用户->多对多->游戏

用户->多对多->组

换句话说:

  • 一个用户可以玩很多游戏,而多个用户可以玩同一游戏
  • 一个用户可以分为多个组,而一个组由多个用户组成

我确定了以下访问模式:

  • 列出用户拥有的所有游戏
  • 列出用户所在的所有组
  • 列出组中的所有成员
  • 列出组成员拥有的所有游戏

可以使用下面的相邻列表设计模式来实现前三个访问模式:

| Partition Key | Sort Key (GSI Partition Key)  |
| ------------- | ----------------------------- |
| User-<ID>     | Game-<ID>                     |
| User-<ID>     | Group-<ID>                    |

关于如何实施最后访问模式的任何建议-列出组成员拥有的所有游戏?

谢谢。

1 个答案:

答案 0 :(得分:0)

您已经可以进行上一个查询,列出一个组成员拥有的所有游戏,但这是一个分为两部分的查询。

首先,获取组中用户的列表,然后列出所有这些用户的所有游戏。您可能有一些重复项,可以在应用程序的数据访问层中将其清除。