はじめに
最近ジュニアエンジニアに教えることが多いのですが、エンティティや属性を洗い出すときに漏れなくするにはどうすればいいか言語化してみたメモです。小難しい話は排除しています。
なお、この記事は一部情報収集に生成AIを使っていますが、執筆は人間の温もりと優しさでできています。
業務分析をきちんとする
そもそもですが、システム対象の業務をきちんと見える化できているかが大事で、カッチリやるならBPMN (Business Process Model and Notation)やユースケース図で業務プロセスを図式化したり、アジャイルなアプローチだとユーザーストーリーマッピング、最近であればLLMでモックアップ駆動なケースもあるので、画面ベースで作っていくようなパターンもあるかと思います。
基本的な落とし込み
業務分析をもとに5W1Hで分析したり、マスタ・イベント・サマリといった種別で考えたり、今出ている属性を分割する(例:氏名を姓・名など)にするといったアプローチがあります。
制約やルール
業務分析に近いところもありますが、監査やコンプライアンス、慣習など、ルールによって保持しないといけないものがないか、少し頭を切り替えてみるとまた違った思考で考えられます。
システム管理
作成日時や操作履歴、エラー情報などシステム的な観点で必要なデータはないか。
データベース設計から生まれるもの
交差テーブルやNULLを排除するためにイベントを分けたりなど、設計上の考慮から生まれるものもあります。ここは長くなるので参考文献のところをご参照ください。
参考文献
できるエンジニアになるためのちょい上DB術/第2章 概念設計
Types of Attributes in ER Model
データベース設計におけるNULL