我有一个简单的关系模型,我想使用单表设计在 DyanamoDB 中创建它。该模型适用于餐厅评论应用程序:
实体是:
- 用户 => 用户有一对多评论
- 评论 => 餐厅有一对多评论
- 餐厅 => 评论有一个`用户
用户有一个email
和displayName
访问模式:
- 列出单个用户的所有评论
- 列出餐厅的评论
displayName
使用创建评论的用户查找餐厅的所有评论。
我正在努力解决 3:使用displayName
创建评论的用户查找餐厅的所有评论。
我可以存储displayName
评论项目,但如果我的用户更新displayName
我需要使用此显示名称更新所有评论。
我正在努力解决如何连接restaurant
review
和user
在单个查询中。我得到的最接近的是:
Hash Key | Range Key | Data
----------------------------------------------------------------
user 1 | review1 | restaurant1
| review2 | restaurant3
| review23 | restaurant4
| profile | Kate Smith | ksmith@gmail.com
user 2 | review5 | restaurant1
| review6 | restaurant2
| review7 | restaurant4
| profile | John Smith | jsmith@gmail.com
restaurant1 | address#street#areaCode |
restaurant2 | address#street#areaCode |
我可以使用具有上述设计但不是 3 的 GSI 来满足模式 1 和 2。我还尝试翻转设计,以便评论与餐馆相关,但仍然无法满足模式 3。
在单个查询中,我正在尝试使用单个表设计来实现吗?即使我可以在两个可行的查询中做到这一点。
非常感谢这里的任何建议!