1

我有一个简单的关系模型,我想使用单表设计在 DyanamoDB 中创建它。该模型适用于餐厅评论应用程序:

实体是:

  • 用户 => 用户有一对多评论
  • 评论 => 餐厅有一对多评论
  • 餐厅 => 评论有一个`用户

用户有一个emaildisplayName

访问模式:

  1. 列出单个用户的所有评论
  2. 列出餐厅的评论
  3. displayName使用创建评论的用户查找餐厅的所有评论。

我正在努力解决 3:使用displayName创建评论的用户查找餐厅的所有评论。

我可以存储displayName评论项目,但如果我的用户更新displayName我需要使用此显示名称更新所有评论。

我正在努力解决如何连接restaurant reviewuser在单个查询中。我得到的最接近的是:

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。

在单个查询中,我正在尝试使用单个表设计来实现吗?即使我可以在两个可行的查询中做到这一点。

非常感谢这里的任何建议!

4

0 回答 0