単一のテーブル設計を使用して DyanamoDB で作成したい単純なリレーショナル モデルがあります。モデルはレストラン レビュー アプリ用です。
エンティティは次のとおりです。
- ユーザー => user` には 1 対多のレビューがあります
- レビュー => レストランには 1 対多のレビューがあります
- レストラン => レビューには 1 人のユーザーがいます
ユーザーにはemail
とがありますdisplayName
アクセスパターン:
- 1 人のユーザーのすべてのレビューを一覧表示する
- レストランのレビューを一覧表示する
displayName
レビューを作成したユーザーの を持つレストランのすべてのレビューを検索します。
私は苦労しています 3: レビューdisplayName
を作成したユーザーのレストランのすべてのレビューを検索します。
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 |
上記のデザインの GSI を使用して、パターン 1 と 2 を満たすことができますが、3 は満たせません。また、レビューがレストランに関連するようにデザインを反転しようとしましたが、満足のいくパターン 3 に到達することはできません。
単一のクエリで、単一のテーブル設計で私がやろうとしていることは可能ですか? うまくいく2つのクエリでこれを行うことができたとしても。
ここでアドバイスをいただければ幸いです。