Моделирование множества отношений «многие ко многим» в Dynamodb - PullRequest
1 голос
/ 31 марта 2019

Я пытаюсь смоделировать следующие отношения в одной таблице Dynamodb.

Пользователь -> многие ко многим -> Игра

Пользователь -> многие ко многим -> Группа

На словах:

  • Пользователь может иметь много игр, а несколько пользователей могут иметь одну и ту же игру
  • Пользователь может быть во многих группах, а группа состоит из множества пользователей

Я определил следующие шаблоны доступа:

  • Список всех игр, которыми владеет пользователь
  • Список всех групп, в которые входит пользователь
  • Список всех членов группы
  • Список всех игр, принадлежащих членам группы

Первые три шаблона доступа могут быть реализованы с использованием шаблона проектирования соседнего списка, как показано ниже:

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

Любые рекомендации о том, как реализовать последний шаблон доступа - перечислить все игры, принадлежащие членам группы?

Спасибо.

1 Ответ

0 голосов
/ 01 апреля 2019

Ваш последний запрос, перечислить все игры, принадлежащие членам группы, уже возможен, но это запрос из двух частей.

Сначала получите список пользователей в группе, затем перечислите все игры для всех этих пользователей.У вас могут быть дубликаты, которые вы можете удалить на уровне доступа к данным вашего приложения.

...