最近、自社プロダクトの設計に着手しました。今回は仕様策定とDB設計を同時に進めています。
今回のプロダクトは凝れるだけ凝ってみるつもりです。
凝ったシステムは、多くの複雑な仕様を盛り込むので、設計の甘い箇所が発生しやすくなります。そこで、仕様策定と並行してDB設計を行い、データモデルを明確にすることで、仕様や設計の曖昧さを排除していくのです。
データモデルはシステム全体の複雑度に大きく影響します。より優れたプロダクトを、適切な範囲で小さめの複雑度に納めるように仕様のバランスをとるために、この仕様策定とDB設計を同時に進める方法は優れています。
例えば、Aの機能を入れるならBの機能を入れても、データモデルの複雑度はほとんど変わらないので、一緒に設計しておくべきだとか、Cの機能を入れるなら、Dの概念を検討すべきだとか。データモデルを設計することで、いろいろなことが明らかになります。
現在設計中のデータモデルはこんな感じです。詳細はお見せできないので、テキストを消したダイアグラムを貼り付けました。本当は長方形の中にデータベースのテーブル名が書いてあります。
データベースのテーブルは、「商品」や「売上」、「顧客」などの単位になっています。上から下に向かって1:Nの関係です。
テーブルの関係に0:Nの関係があり得るかなどを詳しく表現する方法や、主キーをはじめとしたDBの項目まで記入する方法もあるのですが、その書式には拘らず、この方法を採用しています。
逆に拘っているのは把握しやすさ。ダイアグラム内にテーブルをバランス良くレイアウトすることを大切にしています。システムが一定以上の規模になると、データ構造が完全に頭に入った状態を維持し続けるのは難しいので、この図が見やすいことは、とても重要なのです。
【補足】
DB設計は、その全要素が開発時の生産性や拡張性、性能に大きく影響するので、大事なのは見た目だけではなく、DB設計の全てです。微細なところも大事な範囲に含まれます。逆に良好にDBが設計されていても、ダイアグラムがきれいに書かれていないシステムは時々見かけます。