1

単一のテーブル設計を使用して DyanamoDB で作成したい単純なリレーショナル モデルがあります。モデルはレストラン レビュー アプリ用です。

エンティティは次のとおりです。

  • ユーザー => user` には 1 対多のレビューがあります
  • レビュー => レストランには 1 対多のレビューがあります
  • レストラン => レビューには 1 人のユーザーがいます

ユーザーにはemailとがありますdisplayName

アクセスパターン:

  1. 1 人のユーザーのすべてのレビューを一覧表示する
  2. レストランのレビューを一覧表示する
  3. 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つのクエリでこれを行うことができたとしても。

ここでアドバイスをいただければ幸いです。

4

0 に答える 0