Jeg bruger ikke phpmyadmin, men jeg ville starte med
- en unik begrænsning på emner.navn,
- en unik begrænsning på parret {teachers.name, teachers.subject_id},
- en unik begrænsning på {events.venue, events.subject_id, events.teacher_id},
- en unik begrænsning for parret {teachers.id, teachers.subject_id}.
De tre første har med identitet at gøre; den sidste lader dig målrette mod {teachers.id, teachers.subject_id} med en fremmednøglebegrænsning.
I det generelle tilfælde er folks navne ikke unikke. Så du kunne har to lærere med samme navn, der underviser i samme fag. Hvordan du kan gribe den slags problemer an er applikationsafhængig.
Derefter fremmednøgler
- fra teachers.subject_id til subjects.id, og
- fra {events.teacher_id, events.subject_id} til {teachers.id, teachers.subject_id}
Det vil i det mindste give dig en fejl, hvis du forsøger at indsætte en lærer med det forkerte emne i begivenheder.
Du skal bruge INNODB-motoren at håndhæve fremmednøglebegrænsninger. Andre motorer vil analysere dem, men ignorere dem.
FOREIGN KEY og REFERENCES-sætningerne understøttes af InnoDBstorage-motoren, som implementerer ADD [CONSTRAINT [symbol]] FOREIGN KEY[indeks_navn] (...) REFERENCES ... (...). Se afsnit 14.6.6, "InnoDBand FOREIGN KEY Constraints". For andre lagermotorer parses klausulerne, men ignoreres.