вы можете использовать это в качестве таблицы.
productId | sortKey | GSI1 |
1234232 | event#123232323 | | price1 | orders1 | rating1 | rating_count1 | created_at1
1234232 | event#123232327 | | price2 | orders2 | rating2 | rating_count2 | created_at2
1234232 | category#father | Father | <other properties of category>
1234232 | category#kitchen| kitchen | <other properties of category?>
здесь productid является вторичным ключом GSI1.
Это решит следующие варианты использования
Для одного продукта смотрите историю событий.(SELECT *, где id = X и sortKey начинается с события)
Получить все категории продукта.(ВЫБЕРИТЕ * где id = X и sortKey начинается с категории)
Получить все товары в одной категории.(ВЫБРАТЬ *, где GSI1 = x)
Удалить одну категорию из продукта, не обновляя много строк.(при обновлении получить все существующие категории, если добавлено новое, если существующее отсутствует, удалить и добавить определенное событие.)
Вот хорошее видео , объясняющее схемудизайн.