業務フローを整理せずテーブル設計をしようとして失敗した話
業務で初めてのテーブル設計をしました。 「業務フローの整理を行ってからテーブル設計をしよう」という話です。
失敗の内容としては、業務フローの整理を行わずにテーブル設計を始めたため 追加が必要なテーブルの洗い出しできず、設計が進まなかったというものです。
失敗の原因
なぜそうなってしまったか?原因を考えてみました。
まず一つには、テーブル設計の経験がなかったことが挙げられます。
これまでは、既存のテーブルを使うことや都度追加するというやり方をしていたため、 実装段階でしかテーブルを追加したことがありませんでした。 なので、当初どのようなフローで設計を考えていけば良いか分からず エンティティの抽出を行わずにテーブル設計を始めてしまいました。
また、テーブル設計を言われるがままに進めてしまったことが挙げられます。 指示の内容は、このテーブルを作ってくださいというもので、他に必要なテーブルがあれば追加してくださいというものでした。 ここでいきなりテーブルを作成することになり、エンティティの抽出を行わずにテーブル設計を始めてしまいました。
どうすれば良かったか
今回の問題に関しては、業務フローの整理を行ってからテーブル設計を行うことができれば解決できたと考えています。 なので、テーブル設計の基本の流れを意識していれば、問題を回避できたはずです。
体系的に学ぶために、達人に学ぶDB設計という書籍を読んでみることにしました。 テーブル設計は基本的に以下のフローで進めるのが良いということです。
- エンティティの抽出
- エンティティの定義
- 正規化を行う
- ER図の作成
今回は、エンティテティの抽出に焦点を当てて書いていきます。
エンティティの抽出
エンティティとは
まず初めにエンティティとは何か?について整理します
- エンティティとは、日本語で「実体」と訳される
- 物理的なものだけでなく、概念的なものも含まれる
- 例えば、記録や注文のような実体を持たないものもエンティティとして扱う
エンティティの抽出の仕方
エンティティの抽出は、業務フローを考えることが重要です。 業務フローを考えることで、どのようなデータが必要かを抽出することができます。 これは要件定義とも関連しており、要件定義を行うことで、エンティティの抽出が行えるということです。
まとめ
テーブル設計において、まず業務フローを考えることがエンティティの抽出するために重要ということを学びました。 基本的なことですが、これまでテーブル設計をせずに実装中にテーブル追加をしていたためこの点を意識できていませんでした。 次回は、エンティティの定義について書いていきます。
KJR020's Blog