Saya tidak menggunakan phpmyadmin, tetapi saya akan mulai dengan
- batasan unik pada subject.name,
- batasan unik pada pasangan {teachers.name, teacher.subject_id},
- batasan unik di {events.venue, events.subject_id, events.teacher_id},
- batasan unik pada pasangan {teachers.id, teacher.subject_id}.
Tiga yang pertama berkaitan dengan identitas; yang terakhir memungkinkan Anda menargetkan {teachers.id, teacher.subject_id} dengan batasan kunci asing.
Dalam kasus umum, nama orang tidak unik. Jadi Anda bisa memiliki dua guru dengan nama yang sama yang mengajar mata pelajaran yang sama. Cara Anda menangani masalah semacam itu bergantung pada aplikasi.
Kemudian kunci asing
- dari teacher.subject_id ke subject.id, dan
- dari {events.teacher_id, events.subject_id} hingga {teachers.id, teacher.subject_id}
Itu setidaknya akan memberi Anda kesalahan jika Anda mencoba memasukkan ke dalam acara seorang guru dengan mata pelajaran yang salah.
Anda perlu menggunakan mesin INNODB untuk menegakkan batasan kunci asing. Mesin lain akan menguraikannya, tetapi mengabaikannya.
Klausa FOREIGN KEY dan REFERENCES didukung oleh mesin InnoDBstorage, yang mengimplementasikan ADD [CONSTRAINT [symbol]] FOREIGN KEY[index_name] (...) REFERENCES ... (...). Lihat Bagian 14.6.6, “Kendala Utama InnoDB dan ASING”. Untuk mesin penyimpanan lain, klausa diurai tetapi diabaikan.