データベース設計に関する議論が大白熱した1日だった。
というのも、現在技術研修で開発しているアプリケーションは、フォームが一つ重要になる。フォームのテーブル設計というのはかなり難しくて、というのも、フォームは、中に複数のフィールドを保持するが、これらのフィールドは、Google Formのようなアプリケーションにおいては自由に設定したり増やしたりすることができる。加えて、各フィールドに対する回答はValue Typeがそれぞれ異なる。Google Form風に言えば、
テキスト(短文)なら、MySQL側ではVARCHAR(256)?
ラジオボタンなら、MySQL側では、TINYINT
選択肢はoptionsテーブルなどを別途作成して持っておくのか?
チェックボックスは、複数の回答を保存する必要がある
配列(JSON)で持つ?
など、つまり、フィールドの種類によって回答の値の型が変わる上に、そのフィールドをフォーム内に柔軟に埋めこめるとすると、データの持ち方は自ずと、フォームの柔軟性に対応したものにする必要がある。
フォームを
〜
それ以外にも、お互いに認識がかなりずれていると感じる部分も多かったりするので、感情負荷がかなり高い作業ではある。たとえば、フォームに対する回答は、各フィールドに対する回答をform_field_responsesのようなテーブルで持っておいて、form_responsesのようなテーブルのレコードに紐づけることで、一つのフォームに対する回答としてまとめるという構造でデータを持つのが自然だと考えているのだが、これが通じない。おそらく、フォームとフィールドの区別があまりついていないのだと思うのだけど。。。
とはいえ、さすがに今日はイライラが顔に出過ぎた、反省。先輩とかだったらもう少し仕事上のドライな関係でいられるんだけど、同期だとそうはいかないとも実感している(逆に言えば、たった2週間弱の間にかなり距離が近くなっていることも確か)。明日からは切り替えて、もっと大人にスマートに開発を進めていきたい。