なにができるようになっていたらデータモデリングできていると言えるか?
テーブル間の関係をつくること
データとデータの関係があれば、データの関係を使って演算できるようになる。
参考図書
T字型モデリングでできること
- 一定の方法論に基づいてデータモデリングを行うことができるようになる
- データモデリングの代表パターンを活用することができる
データモデリングの手順
- エンティティをつくってみる
- エンティティを分類する
- エンティティ間の関係を作る
- 個体が集合として正しいか調べる
- 事実と対比する
エンティティをつくってみる
- 情報を仕訳する/単語を転記する
エンティティを分類する
- 情報を分類する
エンティティ間の関係を作る
- E-R型/E-E型/R-R型/再帰
個体が集合として正しいか調べる
- 部分集合(区分コード)/多値(OR、AND)
事実と対比する
- 業務の流れを実現できるか?
- エンティティ間の関係から隠れた事実を発見できるか?
エンティティの分類
- E:イベント(「日時」のある「出来事・行為」)
- R:リソース(イベント以外のもの)
エンティティの関係
E-R型
- 行為者(resource)が行為・出来事(event)に関与する
- 基本的に「1対多」しかない
E-E型
- 選考・後続の関係(1対多)
- 「受注してから請求する」
- 対応表(多対多)
- 受注と請求に組み合わせの関係がある場合
- 複数の受注を1本の請求にする
- 1本の受注を複数の請求にする
- 受注と請求に組み合わせの関係がある場合
R-R型
- 対照表(多対多)しかない
- 対照表はイベントになることが多い
- 「従業員」「部門」との県警の対照表で「配属」
- 対照表は制約の可能性を広げる
- 「顧客」と「商品」の対照表は業務上何と呼べばいいか?
再帰
- ある集合の中の集合を構成する
- ツリー構造
- 赤伝/黒伝
- フォロー
- 「再帰表」をつくる
個体が集合として正しいか調べる
部分集合
- 区分コード
- コード間に一切交わりがない
- 「正社員」であり、「パート」ということはない
- カラムに定義して良い
- 多値
- 複数の状態を取りうる
- 「請求先」であり、「支払先」である
- エンティティに分ける
- 複数の状態を取りうる
データモデリングの原則
UPDATEをできる限り排除する
- 1つのレコードが様々な業務により様々な更新のされ方をすると、複雑性が上がる
- データの更新を極限まで削るとシンプルになる
NULLをできるかぎり排除する
- NULLにはINDEXを適用できない
- 関数INDEXで適用する裏ワザはある
- NULLには複数の意味がある、存在自体が複雑
- undefined / unknown
エンティティ間の制約はモデル化する
- コードが減る、パフォーマンスが上がる
まとめ
エンティティを定義し、分類し、関係を築き、集合としての整合性を確認する。このプロセスを繰り返すことで、現実に即した堅牢なデータモデルを構築できます。