HTML5ローカルDBの構造の補足

↑のをあまりにもやっつけで書きすぎて大事なことを書いてないので補足。
というのは、上であげたものに加えて、検索や並べ替えに使うキーもフィールドとして持っておいたほうがいいということ。
恐らく、検索や並べ替えに使うキーにしたようなフィールドがアドホックに変わるということは少ないのでないかと思う。アドホックに追加される項目というのは、表示するためだけの項目であることが多いと思う。
それとアドホックに検索や並べ替えを行いたいような項目は、読み込み後のロジックでやってもいいようなものになるのではないかと思う。つまり、検索ではなくて絞り込みに使うような項目。そういう検索や並べ替え項目に関しては、テーブル表示コンポーネントがその機能を持っているから自分でロジックを書く必要がないということも多くなると思う。
もうひとつ、フィールドとして持たせたほうがいいのは、他のテーブルと結合するための外部キーとして使う項目。そしてこれも、恐らくアドホックに追加されることは少ない。


言い換えれば、joinやorder by、where句に出てくるフィールドだけスキーマに持って、あとはJSONなりprotocol buffersなりでシリアライズしたものを持てばいいのではないかということ。これまでのwebアプリケーションのように、表示を並べ替えたり絞り込んだりするためにいちいちSQLを発行する必要はないので、そういったもののための項目をRDBのフィールドにする必要はない。
要するに、RDBの力が必要なところだけRDB的にして、そうじゃないところはRDB的にしなくていいんじゃないかということです。