sql >> Database teknologi >  >> Database Tools >> phpMyAdmin

Hvordan indstilles en fremmednøgle, som er afhængig af forholdet mellem to andre tabeller?

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.




  1. Powershell:SQL Server Management Studio Script Generator

  2. Vælg en post, bare hvis den før den har en lavere værdi tager for lang tid og mislykkes

  3. SQL Server Management Studio vil ikke starte - Typebiblioteket blev ikke fundet

  4. Streng blev ikke genkendt som en gyldig DateTime phpMyAdmin