我有两个具有多对多关系的实体。 用户和照片。 当我得到一个用户时,我还需要获取标记了该用户的所有照片。 当我得到一张照片时,我还需要让所有用户标记在照片中。
我已阅读Best Practices for Managing Many-to-Many Relationships文档并提出了以下设计方案:
| partitionKey | sortKey | name | filePath | uploadDate |
|:------------:|--------- :|:----------:|:--------:|:----------:|
|user-a123 |user-a123 |John Smith | | |
|user-b133 |user-a123 |Rick Andres | | |
...
|photo-a334 |photo-a334 | | s3://.. | 06-05-19 |
|photo-b777 |photo-b777 | | s3://... | 07-13-15 |
...
|user-a123 |photo-a334 | | | |
|user-b133 |photo-b777 | | | |
|user-b133 |photo-a334 | | | |
|user-zm15 |photo-a334 | | | |
我还创建了一个GSI,其中的sortKey和partitionKey颠倒了。
这使我能够:
问题是id不够。 例如,当获取用户时,我还需要对所有照片进行BatchGetItem请求。
是否可以通过一个查询获取所有信息?
我当时正在考虑复制数据,但是如果有人在照片中标记用户,而其他人同时在编辑照片详细信息,则“已标记”项中的数据将被破坏。