[DB論理設計tips]ISA関連(職員 is a エンジニアの関係性が生まれる職員TBLとエンジニアTBL)

これはなに

データベース論理設計のtips

職員に営業さんとエンジニアがいてそれぞれ独自の属性を持ちたい時どうするか

職員テーブル:各職種テーブルでN:1にする

基本的な情報を職員テーブルに納めて、職種独自の情報はエンジニアテーブルとか営業職テーブルとかに納める。んで、職種テーブルのほうから職員テーブルを参照する。

採用しなかった別の手段

  • 職員テーブルに各職種テーブルの属性も全て詰め込む
  • 職員テーブルに職種ごとのIDを登録する属性を持たせる

余談

  • こういうのをISAと呼ぶらしい
    • 職員はエンジニアの汎化、エンジニアは職員の特殊化
    • is-a relationshipとなる、エンジニア is-a 職員、てこと
  • ER図上での表現
    • 関連型はISAとだけ書いておく
    • 特殊化された実体型についても、職員型にある属性はエンジニア型には定義せず、エンジニア型特有の属性のみを定義する