「PaPaPointアプリ【合計ポイント表示編①】」の続きをやっていこうと思ったのですが,Cloud Firestoreに取り掛かるタイミングでデータの整理が出来てない事に気づいたので今日はDB設計していきます。
DB設計も自己流なので,ちゃんと勉強したいなーと無限にやりたいことが増えていきます。
保持したい・動的に表したいデータを挙げる
実現したい機能は
- 合計ポイント表示
- ポイント付与
- 景品一覧表示
- 景品交換
- 景品登録
- ポイント履歴表示
なので
-
ポイント合計
- 合計ポイント表示時に取得したい
- ポイント付与時に取得,上書きしたい
- 景品交換時に取得,上書きしたい
-
ポイント履歴
- ポイント付与時に登録したい
- 景品交換時に登録したい
- ポイント履歴表示時に取得したい
-
景品一覧
- 景品一覧表示時に取得したい
- 景品交換時に取得したい
- 景品登録時に登録したい
こんなところでしょうか。
ひとまずテーブルは[ポイント合計,ポイント履歴,景品一覧]の3つを作れば機能を実現できそうです。
テーブルの項目を考える
どんな項目を持つ必要があるか考えていきます。
ポイント合計
- 合計ポイント
- 名前
ポイント履歴
- タイムスタンプ
- ポイント
- 付与した人
- 付与対象
- 理由
景品一覧
- 景品名
- 必要ポイント
- 状態(交換済みか否か)
- 交換対象
- 画像URL or 画像
雑メモ
ポイント合計はタイムスタンプとかもいるかなぁ。
使わないからいらない気がしてるけど。。。
現在の合計ポイントがわかればいいだけだし,名前と合計ポイント紐付けてあとは合計ポイントをどんどん上書きしていけばいいかなーと考えてる。
今は上の子だけがアプリを使う想定だけど将来的に下の子も追加する可能性があるので名前の項目を追加。
疑問におもったけど,グローバルな変数みたいな感じ(例えば名前と紐付けずに合計ポイントだけ)でデータの永続化したい場合ってどうしたらいいんだろ?
レコードは追加されないけど,idと合計ポイント紐付けたテーブル作ってそこを参照したらいいのかな?
それともストレージに変数用のファイル置いといて書き換えてやればいいのかな?
わからない。。。
ポイント履歴と景品一覧は表示時に見たい情報があればとりあえずいいかな。
NoSQLは正規化しなくてもいいんだっけ?
まとめ
これにてDB設計終了!(いいのか。。。?)
明日からこれらをFirestoreに落とし込んでいきたい。
が,その前にNoSQLとは?ってのを理解する必要がありそうですね。
いや,その前にDB設っk…
それではまた明日。