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

Hoe stel je een externe sleutel in die afhankelijk is van de relatie van de andere twee tabellen?

Ik gebruik geen phpmyadmin, maar ik zou beginnen met

  • een unieke beperking op subject.name,
  • een unieke beperking voor het paar {teachers.name, docenten.subject_id},
  • een unieke beperking voor {events.venue, events.subject_id, events.teacher_id},
  • een unieke beperking voor het paar {teachers.id, docenten.subject_id}.

De eerste drie hebben te maken met identiteit; met de laatste kun je {teachers.id, docenten.subject_id} targeten met een externe sleutelbeperking.

In het algemeen zijn de namen van mensen niet uniek. Dus je zou twee docenten met dezelfde naam hebben die hetzelfde vak doceren. Hoe u dat soort problemen kunt aanpakken, is afhankelijk van de toepassing.

Dan buitenlandse sleutels

  • van docenten.subject_id naar subject.id, en
  • van {events.teacher_id, events.subject_id} tot {teachers.id, docenten.subject_id}

Dat geeft je in ieder geval een fout als je probeert een leraar met het verkeerde onderwerp in evenementen in te voegen.

U moet de INNODB-engine gebruiken om externe sleutelbeperkingen af ​​te dwingen. Andere engines zullen ze ontleden, maar negeren ze.

De FOREIGN KEY- en REFERENCES-clausules worden ondersteund door de InnoDBstorage-engine, die ADD [CONSTRAINT [symbol]] FOREIGN KEY[index_name] (...) REFERENCES ... (...) implementeert. Zie Paragraaf 14.6.6, “InnoDBand FOREIGN KEY-beperkingen”. Voor andere opslag-engines worden de clausules geparseerd maar genegeerd.




  1. Maak een root-wachtwoord voor PHPMyAdmin

  2. Waarom kan ik niet inloggen op MYSQL met phpmyadmin?

  3. XAMPP PhpMyAdmin Error 1045, Toegang geweigerd voor gebruiker 'root'@'localhost'

  4. Is het mogelijk om te concluderen of MySQL wordt uitgevoerd vanaf de PhPMyAdmin-verbindingsfoutpagina?