DB ch4 WIP
テーブルが多すぎる!
- 実務: 何百ものテーブル
- 管理するためにER図を作る
- それぞれのテーブルがどういう意味を持つか
- テーブル同士がどういう関係にあるのか
- 流派
- IE: Information Engineering
- 通称「鳥の足」
- IDEF1X
- 米国で規格化されたもの
- 多機能
- IE: Information Engineering
テーブル同士の関連を見抜く
- あるテーブルの主キーが他のテーブルに列として含まれているか
- 含まれていれば、それらのテーブルの間には意味的な関連がある
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の世界でご法度
- なぜ
- 両者のエンティティが共通のキーとなる列を保持していない
- そのため、両エンティティを結合した情報を得ることができない