/note/tech

DB設計指針: 入力フォームのテーブルは最初から非正規形で作成する

入力フォームとは以下のようなものを指す。

これらの機能はユーザーとサービスの接点になることから仕様変更が非常に発生しやすい。

この事から、入力フォームのデータを保存するテーブルは初期の仕様を元に正規化するよりも、最初から仕様変更があるものと踏まえた上で非正規化テーブルで設計した方が仕様変更へ柔軟に対応できるため、開発効率的に有利である。

ただし、非正規形テーブルとして設計する際も以下の制約は守るべきである。

フォームデータのテーブルを非正規形テーブルとして扱うとフィールド数が膨大な数になるが、他テーブルから外部参照されないことが保証されていれば、単なるログテーブルでしかないので設計が複雑化することはない。

また、非正規形テーブルである以上、入力データの相関関係に関するバリデーションはプログラム側で行う必要がある。

とはいえ、MogoDBなどドキュメントDBが使えるのであれば、そちらを使った方がよい。