DynamoDBテーブル設計のためのER図を考える

DynamoDBのテーブル設計をドキュメントに起こすにあたって、属性と型を並べたような一覧表はよく見かけるが、RDBのテーブル設計で必ずと言っていいほど用意するER図のようなドキュメント例がどこにも見当たらなかった。

小規模ならまだしも、何テーブルも利用するような仕組みだとER図のようなドキュメントがないとデータの構造が理解しづらく、さらにDynamoDBはスキーマレスな設計になりがちなので何かいい表現ができないかと考えてみた。

で、実際にDraw.ioを使って書いてみたのがこちら。


これはクイズを出すようなアプリのテーブル構造を簡略化していて、ユーザーを管理するテーブル、問題を管理するテーブル、ユーザーの1問ごとの回答と合計点を管理するテーブルの3つのデータ構造とリレーションを表現している。

DynamoDBを設計するうえで必ず重要になってくるパーティションキー(PK)、ソートキー(SK)やGSIの表現や、リストやマップなどの入れ子データ構造の表現、1つのテーブルで複数のスキーマを管理するファセットの表現などを取り入れたうえで、テーブル間のリレーションを表現できている

手前味噌だが結構わかりやすく表現できてるんじゃないかと思う。