Jag använder inte phpmyadmin, men jag skulle börja med
- en unik begränsning för subjects.name,
- en unik begränsning för paret {teachers.name, teachers.subject_id},
- en unik begränsning för {events.venue, events.subject_id, events.teacher_id},
- en unik begränsning för paret {teachers.id, teachers.subject_id}.
De tre första har med identitet att göra; den sista låter dig rikta in dig på {teachers.id, teachers.subject_id} med en främmande nyckel-begränsning.
I det allmänna fallet är människors namn inte unika. Så du kunde har två lärare med samma namn som undervisar i samma ämne. Hur du kan närma dig den typen av problem är applikationsberoende.
Sedan främmande nycklar
- från teachers.subject_id till subjects.id och
- från {events.teacher_id, events.subject_id} till {teachers.id, teachers.subject_id}
Det kommer åtminstone att ge dig ett fel om du försöker infoga en lärare med fel ämne i händelser.
Du måste använda INNODB-motorn för att upprätthålla begränsningar för främmande nyckel. Andra motorer kommer att analysera dem, men ignorera dem.
Klausulerna FOREIGN KEY och REFERENCES stöds av InnoDBstorage-motorn, som implementerar ADD [CONSTRAINT [symbol]] FOREIGN KEY[index_name] (...) REFERENCES ... (...). Se avsnitt 14.6.6, "InnoDBand FOREIGN KEY Constraints". För andra lagringsmotorer tolkas satserna men ignoreras.