データベース関係の概要

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

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

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

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

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

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

自己参照関係は、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

StudentsテーブルのTeacher_FK列は、Teachersテーブルのインストラクタの主キー値を参照します。

データベース設計者は、主キーまたは外部キー列を簡単に識別するために、列名に「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