Skip to main content

データベース関係の概要

データベース教材 データベース基礎 第1章 データベースの概要 (六月 2026)

データベース教材 データベース基礎 第1章 データベースの概要 (六月 2026)
Anonim

データベース用語「リレーショナル」または「関係」は、テーブル内のデータの接続方法を示します。

データベースの世界への新規参入者は、データベースとスプレッドシートの違いを見るのに苦労することがよくあります。彼らはデータの表を見て、データベースは新しい方法でデータを整理して照会することを可能にしますが、そのデータの重要性を理解することはできません。 データ間の関係 それはリレーショナルデータベース技術にその名前を与えます。

リレーションシップを使用すると、さまざまなデータベーステーブル間の接続を強力な方法で記述できます。これらの関係を活用して、結合と呼ばれる強力なクロステーブルクエリを実行できます。

データベース関係のタイプ

3つの異なるタイプのデータベース関係があり、それぞれが関係に関係する可能性のあるテーブル行の数に基づいて命名されます。これらの3つの関係タイプはそれぞれ、2つのテーブルの間に存在します。

  • 1対1の関係 第1のテーブルの各エントリが、第2のテーブル内の対応するエントリを1つしか持たない場合に発生する。 1対1の関係は、ほとんどの場合、すべての情報を1つのテーブルに格納するほうが効率的であるため、ほとんど使用されません。一部のデータベース設計者は、別の表のデータのサブセットを含む表を作成することによって、この関係を利用します。
  • 1対多の関係 最も一般的なタイプのデータベース関係です。表Aの各レコードが表Bの1つ以上のレコードに対応する場合に発生しますが、表Bの各レコードは表Aの1つのレコードに対応します。たとえば、小学校のTeachersテーブルとStudentsテーブルの関係各生徒には1人の教師しかいないが、各教師には複数の生徒がいるため、データベースは1対多の関係になる可能性が高い。この1対多の設計は、重複したデータを排除するのに役立ちます。
  • 多対多の関係 表Aの各レコードが表Bの1つ以上のレコードに対応し、表Bの各レコードが表Aの1つ以上のレコードに対応する場合に発生します。たとえば、教師とコースの表の関係は、各教師は複数の講座を指導することができ、各講座には複数の講師が参加できるため、多対多になります。

自己参照の関係:特殊なケース

自己参照関係は、1つのテーブルのみが関与する場合に発生します。一般的な例として、各従業員の監督者に関する情報を含むEmployeesテーブルがあります。各スーパーバイザは従業員でもあり、自分のスーパーバイザを持っています。この場合、各従業員には1人の監督者がいるので、1対多の自己参照関係がありますが、各監督者には複数の従業員がいることがあります。

外部キーとの関係の作成

外部キーを指定することによって、テーブル間の関係を作成します。このキーは、テーブルがどのように関連しているかをリレーショナルデータベースに伝えます。多くの場合、表Aの列には、表Bから参照される主キーが含まれています。

再びTeachers and Studentsテーブルの例を考えてみましょう。 Teachersテーブルには、ID、名前、およびコースの列だけが含まれています。

教師
インストラクターID教員名コース
001ジョン・ドウ英語
002ジェーン・シュモエ数学

Studentsテーブルには、ID、名前、および外部キー列が含まれます。

学生の
学生証学生の名前Teacher_FK
0200ローウェルスミス001
0201ブライアンショート001
0202コルキー・メンデス002
0203モニカ・ジョーンズ001

列 Teacher_FK 「生徒」テーブルの「教師」テーブルの講師の主キーの値が参照されます。

データベース設計者は、主キーまたは外部キー列を簡単に識別するために、列名に「PK」または「FK」を使用することがよくあります。

これらの2つの表は、教師と生徒の1対多の関係を示していることに注意してください。

関係と参照整合性

テーブルに外部キーを追加すると、2つのテーブル間の参照整合性を強制するデータベース制約を作成できます。これにより、テーブル間の関係が一貫して維持されます。 1つの表に別の表への外部キーがある場合、参照整合性の概念は、表Bの外部キー値が表Aの既存のレコードを参照する必要があることを示します。

関係の実装

データベースに応じて、テーブル間の関係をさまざまな方法で実装します。 Microsoft Accessには、テーブルをリンクしたり、参照整合性を強化したりするためのウィザードが用意されています。

SQLを直接作成する場合は、最初にテーブルの教師を作成し、ID列を主キーとして宣言します。

CREATE TABLE教師(

インストラクターID INT AUTO_INCREMENT PRIMARY KEY、 Teacher_Name VARCHAR(100)、 コースVARCHAR(100));

Studentsテーブルを作成すると、TeacherのテーブルのInstructorID列を参照する外部キーにTeacher_FK列が宣言されます。

CREATE TABLEの学生( StudentID INT AUTO_INCREMENT PRIMARY KEY、 Student_Name VARCHAR(100)、Teacher_FK INT、 外部キー(Teacher_FK)参考教員(InstructorID)));

リレーションシップを使用した表の結合

データベースに1つ以上のリレーションシップを作成したら、SQL JOINクエリを使用して複数のテーブルの情報を結合することで、力を活用できます。最も一般的な結合のタイプは、SQL INNER JOINまたは単純な結合です。このタイプの結合は、複数の表から結合条件を満たすすべてのレコードを戻します。たとえば、このJOIN条件は、Studentsテーブルの外部キーがTeachersテーブルのプライマリキーと一致するStudent_Name、Teacher_Name、およびCourseを返します。

生徒を選択します。受講生の名前、先生。先生の名前、先生。コース学生からINNER JOIN教師生徒の皆さん.Teacher_FK = Teachers.InstructorID;

この文は、次のようなテーブルを生成します。

SQL結合ステートメントから返されるテーブル

スチューデント_ネームティーチャー_名コースロウェルスミスジョンドゥエングリッシュブライアンショートジョンドーン英語コークーメンデスジェーンSchmoeMathMonica JonesJohn DoeEnglish