firebaseの設計思想とはRDSなどの正規化とは大きく異なるため、柔軟な発想が必要になっていきそうです。
基本的には以下のような考え方になりそうです。
- insert,put時にがんばる(たくさん登録する)
- select時には複雑なことをしなくでもデータを取得できるようにしておく
正規化をするとネストしがちですが、それもバットケースのようです。
Firebase公式には以下のように書かれています。
https://firebase.google.com/docs/database/ios/structure-data?hl=ja
トランザクションについて
また、insert,put時にがんばる感じになる(同じデータを複数箇所に登録する)ので、トランザクションが気になるところですが、公式にはこの辺に記載があります。
https://firebase.google.com/docs/database/web/save-data?hl=ja
fan-out
ちなみにこの、がんばる感じ、と言っている方法は「fan-out」というのがかっこいい?言い方のようです。
https://firebase.googleblog.com/2015/10/client-side-fan-out-for-data-consistency_73.html
を見てみると、どんな感じでデータを保存しているかイメージがつかめます。
そもそもモバイルアプリベースでの設計思想になっているため、ネットワークが不安定な環境下でのリクエストに耐えられるようなかんがえになっているっぽいです。
このあたりの設計思想について日本語でまとめられた記事としては
http://qiita.com/1amageek/items/64bf85ec2cf1613cf507
が参考になります。実際にどう書くか、は別にしてどういう考え方で取り組むか、という点で目を通しておくとよさそうです。
React Redux導入例
React Reduxに導入する際の具体的な例としては
http://qiita.com/gonta616/items/278a7e81a8b624d9621e
が参考になります。
React Redux saga 導入例
redux-sagaを使う場合には
https://github.com/kuy/redux-saga-examples/tree/4271fd98bd0383e44536bd1910b944c387b0e218/microblog
が参考になります。