DBMSにおけるエンティティ関係(リレーションシップ)の種類を徹底解説
DBMSにおけるエンティティとは
DBMSにおけるエンティティとは、実体を持つ現実世界のオブジェクトを指します。例えば、会社(Company)のデータベースであれば、「従業員」「部署」「プロジェクト」などがエンティティに該当します。また、大学(College)のデータベースであれば、「学部・専攻」「学生」「成績」「課外活動」などがエンティティとなります。
ER図において、エンティティは以下のように1つの長方形(四角形)で表現されます。

エンティティ間の関係(リレーションシップ)には、主に以下の3種類があります。
1対1(One-to-One:1:1)の関係
1対1(1:1)の関係では、エンティティPの1つのインスタンスが、エンティティQの1つのインスタンスと対応し、その逆もまた成り立ちます。
具体例:
1人が持てるパスポートは1冊のみであり、1冊のパスポートが割り当てられる人物もまた1人だけです。

1対多(One-to-Many:1:N)の関係
1対多(1:N)の関係では、エンティティPの1つのインスタンスが、エンティティQの複数のインスタンスと対応します。一方、エンティティQの1つのインスタンスは、エンティティPの1つのインスタンスにのみ対応します。
具体例:
1人は複数の銀行口座を持つことができますが、1つの銀行口座の名義人になれるのは最大で1人だけです。

多対多(Many-to-Many:N:N)の関係
多対多(N:N)の関係では、エンティティPの複数のインスタンスが、エンティティQの複数のインスタンスと対応し、その逆もまた同様です。
具体例:
1人は複数のスキルを持つことができ、同じ1つのスキルは複数の人によって習得され得ます。
まとめ
エンティティ間の関係は「1対1(1:1)」「1対多(1:N)」「多対多(N:N)」の3種類に大別されます。データベース設計において、これらの関係を正しく見極めることは、適切なテーブル構造や外部キーの設計を行う上で非常に重要です。実際の業務データに置き換えて、どの関係が成り立つかを常に意識して設計しましょう。
-
DBMSの機能依存性とは?基本概念から種類・アームストロングの公理まで解説
機能依存性(Functional Dependency)とはDBMSにおける機能依存性とは、その名の通り、テーブル内の属性同士が互いに依存し合う関係を指します。リレーショナルデータベースの提唱者であるE.F.コッド(E. F. Codd)によって導入されたこの概念は、データの冗長性を防ぎ、不良なテーブル設計を発見するための重要な手がかりとなります。概念を正確に理解するために、属性AとBを持つ関係Rを考えてみましょう。機能依存性は「→(矢印)」で表現されます。例えば、次のように記述した場合:A → Bこれは「BはAに関数的に依存している」ことを意味します。つまり、属性Aの値が決まれば、属性Bの値
-
DBMSのデッドロックとは?発生条件と対策手法をわかりやすく解説
デッドロックとはデッドロックとは、2つ以上のプロセスが、それぞれ実行の完了に必要なリソースを相手側が保持しており、互いに待ち続けてしまう状態を指します。上記の図では、プロセス1がリソース1を保持しており、リソース2を必要としています。同様に、プロセス2はリソース2を保持し、リソース1を必要としています。どちらのプロセスも相手の持つリソースがなければ処理を完了できないにもかかわらず、自分のリソースを手放そうとしないため、プロセス1とプロセス2はデッドロック状態に陥ります。コフマン条件(Coffman Conditions)デッドロックが発生するのは、次の4つのコフマン条件がすべて成立している場合