Как мне убедиться, что я удалил / обновил свою собственную запись в DynamoDB без идентификатора пользователя в этой таблице - PullRequest
0 голосов
/ 12 апреля 2019

Я довольно новичок в DynamoDB.У меня много вопросов по этому поводу.

Я создал модель отношений, как показано ниже

Таблица отношений

  • Многие Users имеют много проектов
  • ОдинВ проекте есть много люксов
  • В люксе много дел

Столы Модель

Таблица пользователей

+-------------+------------+
| UserID (PK) | Attributes |
+-------------+------------+
|     U_01    |     ...    |
+-------------+------------+
|     U_02    |     ...    |
+-------------+------------+
|     U_03    |     ...    |
+-------------+------------+

Таблица проектов

+-----------+------------+
| ProjectId | Attributes |
+-----------+------------+
|   PJ_01   |     ...    |
+-----------+------------+
|   PJ_02   |     ...    |
+-----------+------------+
|   PJ_03   |     ...    |
+-----------+------------+

Таблица пользовательских проектов

+-------------+----------------+------------+
| UserID (PK) | ProjectID (SK) | Attributes |
+-------------+----------------+------------+
|     U_01    |      PJ_01     |     ...    |
+-------------+----------------+------------+
|     U_02    |      PJ_02     |     ...    |
+-------------+----------------+------------+
|     U_03    |      PJ_01     |     ...    |
+-------------+----------------+------------+

Таблица люксов

+------------------+----------------+------------+
|   SuiteId (SK)   | ProjectId (PK) | Attributes |
+------------------+----------------+------------+
|  S_01            |      PJ_01     | ...        |
+------------------+----------------+------------+
|  S_02            |      PJ_02     | ...        |
+------------------+----------------+------------+
|  S_03            |      PJ_01     | ...        |
+------------------+----------------+------------+

Таблица дел

+-----------------+------------------+------------+
|   CaseId (PK)   |   SuiteId (SK)   | Attributes |
+-----------------+------------------+------------+
|       C_01      |        S_01      | ...        |
+-----------------+------------------+------------+
|       C_02      |        S_01      | ...        |
+-----------------+------------------+------------+
|       C_03      |        S_01      | ...        |
+-----------------+------------------+------------+

Чтобы обновить или удалить тестовый пример (например, C_01), я должен убедиться, что пользователи не должны удалять чужиеэлементы (например, U_02 не позволит удалить C_01).Кстати, я получил идентификатор пользователя из токена после аутентификации

Я разработал конечную точку API, как показано ниже, для ОБНОВЛЕНИЯ или УДАЛЕНИЯ данных.Не могли бы вы рассказать мне свои лучшие практики в этом случае.Большое спасибо.

ОБНОВЛЕНИЕ: / case /: id

УДАЛИТЬ: / case /: id

(я не делаю что-то вроде / projects /: prjId / suites /:sId / case /: cId как рекомендация Microsoft по созданию наилучших практик при создании API)

1 Ответ

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

Через несколько дней я переосмыслил свой подход к таблице для реляционной модели.

С DynamoDB у нас есть 2 определения для разрешения RDS. - Глобальный вторичный индекс (GSI) - Список смежности

И я выясняю "AWS re: Invent 2018: глубокое погружение Amazon DynamoDB: расширенные шаблоны проектирования для DynamoDB" Видео. Сорвал с ума.

Они предлагают использовать 1 table for 1 application, Hierarchical Data Structure as Items, pair partition key and sort key to query и GSI.

Но я все еще не ясно в моем случае, пока @Rick Houlihan не даст мне ответ .

...