Zum Inhalt springen

Fremdschlüssel und PHPmyAdmin


mkScheller

Empfohlene Beiträge

sers,

nachdem ich verstanden habe, was ein Foreign Key [=Fremdschlüssel(?)] ist, stellt dich mir die Frage, ob dies in phpMyAdmin irgendwie 'symbolisiert' wird?

Ich habe 2 Tabellen: Kunde und Termin, jeder Kunde hat n Termine, also gehört in Termin der PrimaryKey von Kunde als ForeignKey, richtig?

Wie realisiert man das in phpMyAdmin?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Select wird doch schon durch Foreign Keys beeinflusst. Ein Join ist zwar manchmal langsamer eine Wherebedingung aber auf jedenfall effektiver.

Beim Insert ist es wirklich schnuppe, da hier eh erst der Primary Key geschrieben wird und dann der Primary Key wieder ausgelesen und dann in die referenzierten Tabellen als Foreign Key geschrieben werden muss. In php zum Beispiel mit mysql_insert_id() - liefert den zuletzt eingefügten Autowert, also den Primärschlüssel, wenn es ein autoincrement Feld ist.

Ab der neuen phpmyadmin- Version ist es auch möglich die Referenzen über die Oberfläche zuerstellen. Verwirrend ist da nur, dass es auch bei den MyIsam Tabellen anscheinend funktioniert. Ich war bis jetzt auch der Meinung, dass ein cascade on delete oder update nur mit InnoDB möglich ist.

Die SQL- Synatax für einen Foreign Key ist übrigens:

ALTER TABLE tabellenname ADD FOREIGN KEY (Foreign Key in Tabelle B) REFERENCES tabelle a (Primary Key aus Tabelle A) ON DELETE CASCADE

Durch das ON DELETE oder ersatz bzw. ergänzungsweise ON UPDATE CASCADE wird erst das ermöglicht wieso ein Fremdschlüssel so sinnvoll sein kann. Ich lösche durch mein Programm einen Primärschlüssel aus Tabelle A und nun geht das DBMS für mich her und löscht alle Datensätze, die mit einem aus Tabelle A durch Fremdschlüssel verknüpft sind. Erst dadurch wird eine referentielle Integrität erreichbar, da ich auch die DELETES auf die Fremdschlüssel durch mein Programm erledigen könnte, nur was passiert, wenn mein Programm abschmiert? Es könnten leichen zurückbleiben, die ich nur noch schwer bzw. nur noch manuell ausfiltern könnte. Und bei mehreren Tausend Datensätzen ist das schon eine Menge Arbeit.

Die referentielle Integrität sagt einfach nur aus, dass alle Kinder (Fremdschlüssel) des Vater (Primärschlüssel) Datensatzes mit dem Vater in Beziehung stehen müssen. Sollte es Kinder ohne Vater geben, so ist die Datenbank inkonsistent.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Noch als Ergänzung (doofe 15 Minuten Regelung)

Die Theorie zur refentiellen Integrität könnte man nun noch um eine nicht obligatorische (kann) Beziehung ergänzen. Oben habe ich eine obligatorische (muss) Beziehung beschrieben.

Bei der nicht obligatorischen Beziehung darf es zwar einen Vater ohne Kinder geben aber keine Kinder ohne Vater.

Das sollte aber für den Anfang aber schon fast zuviel an Theorie sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...