こんにちは。今回は、データベーススペシャリスト試験に向けた勉強内容から、「データモデル」についてまとめた内容をご紹介します。基本的な概念から、リレーションシップの種類、そして連関エンティティまで、図や表に強く出題されるポイントを押さえています。
データモデルとは?
データモデルとは、情報を抽象化したものです。
システムで取り扱う現実世界の対象(例えば「社員」や「注文」など)を、モデル化して表現します。
このモデル化された対象を「エンティティ(Entity)」と呼びます。
エンティティの例
例えば、「社員」というエンティティには以下のような属性を持たせることができます。
- 社員番号
- 氏名
- 電話番号
- 出身地
このような構造は、データベースで言えばテーブルのようなもので、
実際に値が入っている一行一行は「インスタンス(Instance)」と呼ばれます。これは、テーブルの「行」に相当します。
エンティティ間の関係:リレーションシップ
複数のエンティティ間には関係(関連性)があります。
この関係性を「リレーションシップ(Relationship)」と呼び、以下の3つのパターンに分類されます。
1. 一対一(1対1)
あるエンティティのインスタンスに対して、相手のインスタンスが常に1つに決まる関係です。
例:
- ある見積に対して、対応する注文は常に1つ
- ある注文に対して、対応する見積もりも1つ
このような関係は、1本線のリレーションシップで表現されます。
2. 一対多(1対N)
あるインスタンスに対して、相手のインスタンスが複数存在する可能性がある関係です。
例:
- ある部署に所属する社員は複数いる可能性がある
- ただし、1人の社員は1つの部署にしか所属できない
この場合、多側のエンティティに矢印(→)や「*」がつくことで表現されます(ER図などで使用)。
3. 多対多(N対N)
お互いに複数の関係が存在する場合を指します。
例:
- あるプロジェクトには複数の社員が関わる
- 一方で、1人の社員が複数のプロジェクトに関与する可能性もある
このような多対多の関係は、通常のリレーションシップではデータベース構造としてそのまま表現できません。
そこで、「連関エンティティ(連携エンティティ)」という仕組みを使って表現します。
連関エンティティとは?
多対多の関係を正規化して表現するためのエンティティです。
- 関連する2つのエンティティの主キーを組み合わせて、新たな主キーとします
- 新しく作成されたこのエンティティが、「連関エンティティ」です
- 名称は、元のエンティティを組み合わせた名前にするのが推奨されます
例:社員_プロジェクト
、Student_Course
など
この連関エンティティによって、正規化されたテーブル構造で多対多の関係を表現できるようになります。
まとめ
データモデルの基本は、エンティティ・インスタンス・リレーションシップの理解にあります。
特にER図やテーブル設計に関する問題では、1対1、1対多、多対多の違いをしっかり把握し、
連関エンティティによる正規化を適切に行えることが重要です。
本記事が、データベーススペシャリスト試験の理解に少しでも役立てば幸いです。
引き続き、勉強の進捗や気づきをブログで共有していきます。
コメント