勉強日記

チラ裏

DB ch4 WIP

www.shoeisha.co.jp


テーブルが多すぎる!

  • 実務: 何百ものテーブル
  • 管理するためにER図を作る
    • それぞれのテーブルがどういう意味を持つか
    • テーブル同士がどういう関係にあるのか
  • 流派
    • IE: Information Engineering
      • 通称「鳥の足」
    • IDEF1X
      • 米国で規格化されたもの
      • 多機能

テーブル同士の関連を見抜く

  • あるテーブルの主キーが他のテーブルに列として含まれているか
  • 含まれていれば、それらのテーブルの間には意味的な関連がある

1対1、1対多、多対多

  • 1対1
    • あまりない
      • 分ける必要がないため
      • 少なくとも正規化の過程で出てくるものではない
  • 1対多
    • 最頻出
    • 「0または1対多数」サブカテゴリ含む
    • 「多」にも「0以上」「1以上」が両方含まれる
    • これらはER図で表現可能
  • 多対多
    • 業務要件的にはある
    • RDBで作ってはならない
      • 関連エンティティ切ってほぐす

ER図の書き方

IE表記法でER図を描く

IE表記法のカーディナリティは以下の通り。 ◯: 0 ―: 1 /|: 多

TODO: 写真はる

IDEF1XでER図を描く

TODO: 写真はる

エンティティ

独立エンティティと従属エンティティの区別は主キーに外部キーが含まれているかでわかる

  • 独立エンティティ
    • 角四角で表記
    • 他のテーブルに依存することなくデータを保持できる
      • 主キーがFKを含まない
  • 従属エンティティ
    • 角丸四角で表記
    • 他のテーブルにデータが存在しなければデータを保持することができない
      • 主キーがFKを含む
      • 主キーはNULL不許可なので、外部キーは非NULLである必要がある
      • したがって、参照されるデータが他のテーブルにに登録済である必要がある

カーディナリティ

IDEF1Xでは、黒丸(●)がIE表記法の「鳥の足」にほぼ近い意味を持つ

表記 意味
--- 1
●-- 0以上
●P- 1以上
●Z- 0または1
●n- n(特定の定数)
  • ◇--
    • カーディナリティは1だが、外部キーがNULLableなため決まらない可能性がある

リレーションシップ

  • 依存リレーションシップ
    • 実線
    • 外部キーにNULLを許さない
      • ため、必ず所属がある
  • 非依存リレーションシップ
    • 点線
    • 外部キーにNULLを許す
      • ため、所属がなくても良い

「多対多」と関連実体

学生コード(PK) 学生名
... ...
講義コード(PK) 講義名
... ...
  • 多対多はRDBの世界でご法度
  • なぜ
    • 両者のエンティティが共通のキーとなる列を保持していない
    • そのため、両エンティティを結合した情報を得ることができない