0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Machiken’sAdvent Calendar 2024

Day 12

データベース設計 E-R図とデータモデルの表現

Last updated at Posted at 2024-12-17

はじめに

こんにちは!今日はE-R図(Entity-Relationship Diagram, 実体関連図)についてまとめます。E-R図は、データ中心アプローチにおける概念データモデルを可視化し、エンティティ(実体)とリレーションシップ(関係)を明確にします。これにより、データ構造や相互関係を理解しやすくなり、論理・物理データモデルへの移行や実装時のガイドとなります。

本文

E-R図の基本

E-R図は、以下の基本要素からなります。

  • エンティティタイプ(実体型):データとして管理する物や概念。長方形で表記し、その中にエンティティタイプ名を記入します
  • リレーションシップ(関連):エンティティタイプ同士の関係性を示します。線で結び、カーディナリティ(1対1、1対多、多対多など)を明示します

image.png

「顧客」エンティティと「受注」エンティティは、1人の顧客に対して複数の受注が紐づくため、1対多の関係を示します。

カーディナリティと表記法

  • 1対1(1:1):片方の主キーをもう一方で外部キーとして保持
  • 1対多(1:N):1側の主キーを多側で外部キーとして保持
  • 多対多(M:N):直接テーブル同士を多対多に結ぶ関係は存在しないため、中間となる「関連エンティティ」を導入して1対多+多対1に分解するケースが多い

存在必須性を表すため、必須の場合は「●(塗りつぶし)」、任意の場合は「○(空)」で表す記法もあります(記法はツールや手法による差異あり)

(必須)●----○(任意)

左側が必須、右側が任意であることを示します。

多対多リレーションシップと関連エンティティ

多対多関係は、関係モデルでは直接表現できません。そのため、多対多を解消するための関連エンティティを導入します。

image.png

「商品」-「受注」の間に「商品受注明細」という中間エンティティを設けることで、多対多を1対多と多対1に分解します。

UMLによる表記

オブジェクト指向開発で用いられるUML(クラス図)を用いる方法もあります。

  • エンティティタイプをクラスとして表し、リレーションシップをクラス間の関連として描画
  • カーディナリティは多重度で表し、1, 0..1, 1..*, 0..*などを用います
  • 多対多は*..*で表現し、必要に応じて関連クラス(中間クラス)を導入します

image.png

スーパータイプ・サブタイプ(汎化・特化)

E-R図では、汎化・特化関係(スーパータイプ・サブタイプ)を表すことができます。

  • スーパータイプ:共通属性・共通主キーを持つ上位概念
  • サブタイプ:スーパータイプを特定化(特化)した下位概念
  • サブタイプ間に排他性(あるタプルは1つのサブタイプにしか属さない)や共存性(複数サブタイプに所属可能)を表すことが可能
  • 完全・不完全サブタイプ:すべてのスーパータイプのタプルがサブタイプに存在する場合は完全、一部がどのサブタイプにも属さない場合は不完全。サブタイプが1つしかないスーパータイプは包含関係という

image.png

ここで△は汎化・特化を示す記号。
実装時にはサブタイプごとにテーブルを分けたり、1つのテーブルでタイプ区分列を設けて管理するなど、状況によって様々です。

階層構造

同じエンティティ間で階層構造(親子関係)を表すことも可能です。
たとえば「組織」エンティティ内で上位部門と下位部門が1対多の関係で表せます。

image.png

組織テーブルには親組織IDカラムを持たせることで、ツリー構造を表現できます。

同じエンティティ間の複数リレーションシップ

同じ2つのエンティティ間に、複数の異なるリレーションシップが存在する場合も、E-R図上で複数の関係線を描くことで表現できます。

image.png

上司-部下関係と、メンター-メンティー関係など、同一エンティティ間で異なる意味の関係を2本のリレーションで表します。

まとめ

今回は、E-R図を用いたデータモデルの表現方法を整理しました。

  • E-R図でエンティティタイプとリレーションシップを明確にすることで、データ構造を直感的に理解可能になります
  • カーディナリティ、関連エンティティ、スーパータイプ・サブタイプ、階層構造など、様々な概念を図示して問題を早期発見・解決できます
  • UMLクラス図を用いる方法や実装時のテーブル分解など、実装フェーズへの橋渡しとしても有効です

E-R図の理解は、データベース設計やアプリケーション開発において重要です。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?