データベース関係の概要
データベース用語 関連した と 関係 テーブル内のデータが接続される方法を説明します。 リレーショナルデータベースは、特定のキーでリンクされた一連の2つ以上のテーブルで構成されます。 リレーショナルデータベースは、ビッグデータイニシアチブで一般的な非構造化データベースとは異なります。 リレーショナルデータベースは、テーブルの定義方法とテーブル間の有効な関係を構成するものについて厳密なルールを必要とする傾向があります。
データベース関係の種類
リレーションシップを使用すると、データベーステーブル間の接続を強力な方法で記述できます。 これらの関係を利用して、JOINと呼ばれる強力なクロステーブルクエリを実行できます。
がある 3種類のデータベース関係、それぞれは、関係に関係するテーブル行の数に応じて名前が付けられます。 これらの3つの関係タイプはそれぞれ、2つのテーブル間に存在します。
- 1対1の関係 最初のテーブルの各エントリに、2番目のテーブルの対応するエントリが1つしかない場合に発生します。 すべての情報を単一のテーブルに配置する方が効率的であることが多いため、1対1の関係が使用されることはめったにありません。 一部のデータベース設計者は、別のテーブルのデータのサブセットを含むテーブルを作成することにより、この関係を利用しています。
- 1対多の関係 最も一般的なタイプのデータベース関係です。 これらは、表Aの各レコードが表Bの1つ以上のレコードに対応しているが、表Bの各レコードが表Aの1つのレコードにのみ対応している場合に発生します。 たとえば、小学校のデータベースのTeachersテーブルとStudentsテーブルの関係は次のようになります。 各生徒には教師が1人しかいないため、1対多の関係になる可能性がありますが、各教師には複数の教師がいます。 学生。 この1対多の設計は、重複データを排除するのに役立ちます。
- 多対多の関係 表Aの各レコードが表Bの1つ以上のレコードに対応し、表Bの各レコードが表Aの1つ以上のレコードに対応する場合に発生します。 たとえば、TeachersテーブルとCoursesテーブルの関係は多対多である可能性があります 各教師が複数のコースを指導する可能性があり、各コースに複数のコースがある可能性があるためです インストラクター。
自己参照関係:特殊なケース
自己参照関係は、関係するテーブルが1つしかない場合に発生します。 一般的な例の1つは、各従業員のスーパーバイザーに関する情報を含むEmployeesテーブルです。 各上司も従業員であり、上司がいます。 この場合、各従業員には1人のスーパーバイザーがいますが、各スーパーバイザーには複数の従業員がいる可能性があるため、1対多の自己参照関係があります。
外部キーとの関係の作成
テーブル間の関係を作成するには、 外部キー. このキーは、テーブルがどのように関連しているかをリレーショナルデータベースに通知します。 多くの場合、表Aの列には、表Bから参照される主キーが含まれています。
TeachersテーブルとStudentテーブルの例を考えてみましょう。 Teachersテーブルには、ID、名前、およびコース列が含まれています。
インストラクターID | 教員名 | コース |
001 | ジョン・ドウ | 英語 |
002 | ジェーンシュモー | 算数 |
Studentテーブルには、ID、名前、および外部キー列が含まれています。
学生証 | 学生の名前 | Teacher_FK |
0200 | ローウェル・スミス | 001 |
0201 | ブライアンショート | 001 |
0202 | コーキーメンデス | 002 |
0203 | モニカ・ジョーンズ | 001 |
コラム Teacher_FK Studentテーブルでは、 主キー Teachersテーブルのインストラクターの値。 多くの場合、データベース設計者は、列名にPKまたはFKを使用して、主キーまたは外部キー列を識別します。
これらの2つの表は、教師と生徒の間の1対多の関係を示しています。
関係と参照整合性
テーブルに外部キーを追加した後、2つのテーブル間の参照整合性を強制するデータベース制約を作成します。 この手順により、テーブル間の関係の一貫性が保たれます。 あるテーブルに別のテーブルへの外部キーがある場合、参照整合性では、テーブルBの外部キー値がテーブルAの既存のレコードを参照する必要があります。
関係の実装
データベースに応じて、さまざまな方法でテーブル間の関係を実装します。 MicrosoftAccessはウィザードを提供します これにより、テーブルをリンクし、参照整合性を適用することもできます。
SQLを直接記述している場合は、最初にテーブルTeachersを作成し、ID列を主キーとして宣言します。
CREATE TABLE Teachers(InstructorID INT AUTO_INCREMENT PRIMARY KEY、
Teacher_Name VARCHAR(100)、
コースVARCHAR(100)
);
Studentテーブルを作成するときは、Teacher_FK列をTeachersテーブルのInstructorID列を参照する外部キーとして宣言します。
CREATE TABLE学生(
StudentID INT AUTO_INCREMENT PRIMARY KEY、
Student_Name VARCHAR(100)、Teacher_FK INT、
FOREIGN KEY(Teacher_FK)REFERENCES Teachers(InstructorID))
);
リレーションシップを使用したテーブルの結合
データベースに1つ以上の関係を作成した後、SQL JOINクエリを使用してそれらの能力を活用し、複数のテーブルからの情報を結合します。 最も一般的なタイプの結合は、単純な結合であるSQL INNERJOINです。 このタイプの結合は、1つ以上のテーブルから結合条件を満たすすべてのレコードを返します。
たとえば、このJOIN条件は、Student_Name、Teacher_Name、およびCourseを返します。ここで、Studentsテーブルの外部キーは、Teachersテーブルの主キーと一致します。
学生を選択します。 Student_Name、Teachers。 Teacher_Name、Teachers。 コース
学生から
インナージョインティーチャーズ
ON学生。 Teacher_FK = Teachers。 InstructorID;
このステートメントは、次のようなテーブルを生成します。
学生の名前 | 教員名 | コース |
ローウェル・スミス | ジョン・ドウ | 英語 |
ブライアンショート | ジョン・ドウ | 英語 |
コーキーメンデス | ジェーンシュモー | 算数 |
モニカ・ジョーンズ | ジョン・ドウ | 英語 |