データベースにおける外部キーとは、2つのテーブルのデータ間のリンクを確立するために使用されるフィールド(またはフィールドのコレクション)です。リレーショナルデータベースでは外部キーの概念が重要な役割を果たします。他のテーブルの主キーを参照することでテーブル間の相互参照として機能し、それによってテーブル間のリンクが確立されます。
例えば、Students
という名前のテーブルとCourses
という名前のテーブルの2つのテーブルがあるとします。各生徒は複数のコースに登録できます。
Students
テーブルは次のようになります。
StudentID | FirstName | LastName |
---|---|---|
1 | Taro | Yamada |
2 | Hanako | Tanaka |
Courses
テーブルは次のようになります。
CourseID | CourseName | Teacher |
---|---|---|
101 | Math | Mr. X |
102 | English | Mrs. Y |
どの学生がどのコースに在籍しているかを追跡したい場合、Enrollments
という名前の新しいテーブルを作成することになるでしょう。このテーブルにはStudentID
フィールドとCourseID
フィールドがあり、これらはそれぞれStudents
テーブルとCourses
テーブルの主キーにリンクする外部キーとなります。
Enrollments
テーブルは以下のようなものです。
EnrollmentID | StudentID | CourseID |
---|---|---|
1 | 1 | 101 |
2 | 1 | 102 |
3 | 2 | 101 |
このEnrollments
テーブルでは、StudentID
はStudents
テーブルのStudentID
を参照する外部キーであり、CourseID
はCourses
テーブルのCourseID
を参照する外部キーとなります。
これらの外部キーの関係は、存在しない学生やコースを参照するレコードをEnrollments
テーブルに追加できないためデータの整合性を保証します。さらにEnrollments
テーブルで参照されている学生またはコースを削除しようとすると、データベースはデータの一貫性と整合性を維持するために阻止します。