Реляционная база данных
Для простого случая использования при обычных Relational Database
настройках это может быть достигнуто с помощью:
Users
ID | Name
----+---------------
U01 | John
----+---------------
U02 | Richard
Medals
ID | Name | Points
----+-------------+--------
M01 | Gold | 500
----+-------------+--------
M02 | Sliver | 200
Users_Medals
User ID | Medal ID | Attainment
---------+----------+-------------
U01 | M01 | Apr 2, 2019
---------+----------+-------------
U01 | M02 | Jun 3, 2019
---------+----------+-------------
U02 | M02 | Jun 2, 2019
DynamoDB
Однако с DynamoDB
цель состоит в том, чтобы сгладить данные для быстрого извлечения (миллисекунды из одной цифры) с помощью Hash Key
(представьте, что это первичный ключ), в DynamoDB * 1015 строго нет соединений между таблицами. *
Данные слегка дублируются (т. Е. Имя медали дублируется для каждого пользователя), что может повлечь за собой серьезное наказание в течение update
, delete
(т. Е. Если имя медали необходимо изменить с «Золотого» на «Платиновый» позже все записи должны быть отсканированы и обновлены индивидуально)
<!-- Hash and Range Key -->
Users_Medals
User ID (HashKey) | Medal ID (Range Key) | Medal Name | Attainment
-------------------+----------------------+-------------+--------------
U01 | M01 | Gold | Jun 3, 2019
-------------------+----------------------+-------------+--------------
U01 | M02 | Silver | Jun 2, 2019
-------------------+----------------------+-------------+--------------
U02 | M02 | Gold | Apr 1, 2019
<!--- Hash Key Only --->
Users_Medals
UserID_MedalID (HashKey) | Medal Name | Attainment
-------------------------+-------------+--------------
U01#M01 | Gold | Jun 3, 2019
-------------------------+-------------+--------------
U01#M02 | Silver | Jun 2, 2019
-------------------------+-------------+--------------
U02#M02 | Gold | Apr 1, 2019
Стремитесь структурировать таблицы и данные приложения для быстрого поиска, надеюсь, это даст вам представление
Обновление
Если в вашем заявлении есть требование отобразить или получить список медалей, то следует использовать отдельную отдельную таблицу Medals
Medals
ID (Hash Key) | Name | Points
---------------+-------------+--------
M01 | Gold | 500
---------------+-------------+--------
M02 | Sliver | 200
---------------+-------------+--------
M03 | Bronze | 200
Чтобы получить полный список медалей, необходимо Scan
Чтобы получить информацию о медали (то есть имя, очки) по идентификатору (хэш-ключу), необходимо использовать Get Item