0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

まっさらな新人研修コーチAdvent Calendar 2024

Day 16

はじめてのデータモデリング講座1

Posted at

なにができるようになっていたらデータモデリングできていると言えるか?

テーブル間の関係をつくること

データとデータの関係があれば、データの関係を使って演算できるようになる。

参考図書

T字型モデリングでできること

  • 一定の方法論に基づいてデータモデリングを行うことができるようになる
  • データモデリングの代表パターンを活用することができる

データモデリングの手順

  1. エンティティをつくってみる
  2. エンティティを分類する
  3. エンティティ間の関係を作る
  4. 個体が集合として正しいか調べる
  5. 事実と対比する

エンティティをつくってみる

  • 情報を仕訳する/単語を転記する

エンティティを分類する

  • 情報を分類する

エンティティ間の関係を作る

  • E-R型/E-E型/R-R型/再帰

個体が集合として正しいか調べる

  • 部分集合(区分コード)/多値(OR、AND)

事実と対比する

  • 業務の流れを実現できるか?
  • エンティティ間の関係から隠れた事実を発見できるか?

エンティティの分類

  • E:イベント(「日時」のある「出来事・行為」)
  • R:リソース(イベント以外のもの)

エンティティの関係

E-R型

  • 行為者(resource)が行為・出来事(event)に関与する
  • 基本的に「1対多」しかない

E-E型

  • 選考・後続の関係(1対多)
    • 「受注してから請求する」
  • 対応表(多対多)
    • 受注と請求に組み合わせの関係がある場合
      • 複数の受注を1本の請求にする
      • 1本の受注を複数の請求にする

image.png

R-R型

  • 対照表(多対多)しかない
  • 対照表はイベントになることが多い
    • 「従業員」「部門」との県警の対照表で「配属」
  • 対照表は制約の可能性を広げる
    • 「顧客」と「商品」の対照表は業務上何と呼べばいいか?

image.png

再帰

  • ある集合の中の集合を構成する
    • ツリー構造
    • 赤伝/黒伝
    • フォロー
  • 「再帰表」をつくる

image.png

個体が集合として正しいか調べる

部分集合

  • 区分コード
    • コード間に一切交わりがない
    • 「正社員」であり、「パート」ということはない
    • カラムに定義して良い
  • 多値
    • 複数の状態を取りうる
      • 「請求先」であり、「支払先」である
      • エンティティに分ける

データモデリングの原則

UPDATEをできる限り排除する

  • 1つのレコードが様々な業務により様々な更新のされ方をすると、複雑性が上がる
  • データの更新を極限まで削るとシンプルになる

NULLをできるかぎり排除する

  • NULLにはINDEXを適用できない
    • 関数INDEXで適用する裏ワザはある
  • NULLには複数の意味がある、存在自体が複雑
    • undefined / unknown

エンティティ間の制約はモデル化する

  • コードが減る、パフォーマンスが上がる

まとめ

エンティティを定義し、分類し、関係を築き、集合としての整合性を確認する。このプロセスを繰り返すことで、現実に即した堅牢なデータモデルを構築できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?