データベース設計の話し
仕事ではほぼデータベースを使ったアプリケーションを作っています。 経験上、データベース設計がよろしくないとアプリケーションも引きずられて複雑になってしまうことが多い気がします。
当たり前なことばかりだと思いますが、 データベース設計する時に個人的に気をつけているポイントです。
今必要ない列は削除する
今不要ない列はサックリ削除しちゃいます。 いつか使うかもしれないとかいう理由で残していると、そんなこと知らない人がそれを見た時に混乱します。 質問して説明を受ければ結果的には問題ないかもしれませんが、そもそもそんなこと質問する時間が無駄です。 YAGNI的にも必要になった時に追加すれば良いことですし、今要らないのであればサックリ削除しちゃいましょう。
テーブル、列の命名
物理名をローマ字で付けるか英語で付けるかとか、例えば日付の列名の最後には「_date」を付けるとか、 統一しとかないと実装する時に余計な混乱をします。 実際は数秒の混乱かもしれませんけど、その数秒の混乱が勿体無いです。 そもそも最初から統一しておけばそんな混乱は発生しません。
型、桁数
マスタのコードが入るトランザクションテーブルの列の型と桁数はそのマスタの列の型と桁数と同じにしときましょう。 同じであれば、マスタとトランザクションを見た時にここにはこのマスタのコードが入るんだなと認識できます。 もちろんマスタの列名とトランザクションの列名が合っているという前提です。 また、数値しか入らないのであれば数値型にし、日付しか入らないのであれば日付型にというように可能な限り型を明確にしておきたいですね。
まとめ
あと、外部キーとかもしっかり使っておくとリレーションが分かっていいですね。
データベース設計の細かな不統一などは実装時にじわじわとマイナスに効いてきます。 このじわじわが後に大きなマイナスになる気がします。 メンテナンスのし辛さとか。
データベースについては面倒臭がらずにしっかりとレビューをしながら設計をして行きたいですね。 (当然ですね)
photo credit: Tim Morgan via photopincc