最終更新
データベースにおける外部キーとは、2つのテーブルのデータ間のリンクを確立するために使用されるフィールド(またはフィールドのコレクション)です。リレーショナルデータベースでは外部キーの概念が重要な役割を果たします。他のテーブルの主キーを参照することでテーブル間の相互参照として機能し、それによってテーブル間のリンクが確立されます。
HackATAは、IT技術を習得する人のために広く開かれたオンラインコミュニティです。 現在、無料コミュニティとして開放していますので、ご気軽に参加してください。
✓ 再立ち上げ
✓ コミュニティの方向性について意見募集中
例えば、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テーブルで参照されている学生またはコースを削除しようとすると、データベースはデータの一貫性と整合性を維持するために阻止します。