Hi Philipp!
shame on me, ich sollte mehr Doku lesen.
;-)
Dass Foreign Keys und auch einfache
Constraints definiert werden können, war mir bewusst, aber dass die Funktionen schon
so ausgereift sind habe ich übersehen.
Ja, in MyISAM sind sie nur aus Kompatibilitätsgründen mit ODBC-Treibern drin, aber sie haben keinerlei Funktions, sie sind nur da, machen aber nichts.
Und unter obigem Link ist genau erklärt wie das funkitoniert. Ist das jetzt referenzielle Integrität oder nicht? Ich habe es noch nie verwendet, will das aber demnächst mal machen, aber zur Zeit habe ich keinen Server der InnoDB - Tabellen anbietet...
*ARGS* ich habe mein schlaues SQL-Buch (SQL the complete reference) vorgestern nach
Hause verlegt und habe somit mein externes Hirn verloren, daher kann ich grad nicht
wirklich fundiert und wissend aussagen. :-)
Sollte ich mir vielleicht auch mal zulegen, die einziegn Bücher die ich habe sind ++ber PERL und C++, aber wirklich durchgearbeitet habe ich die noch nicht ;-)
Aber ja, ich glaube die Constraints dürften die referenzielle Integrität sicherstellen,
soweit ich das jetzt beurteilen kann. Ich werde es morgen mitnehmen, dann kann ich
ggf. noch andere Integritäten nennen (die kenne ich jetzt nicht alle auswendig).
Das weiß ich auch nicht, aber es besteht die Möglichkeit beim Löschen eines Datensatzes aus der Parent-Tabelle automatisch alle referenzierten Datensätze aus der/den Child-Tabellen zu löschen. Das ist doch schonmal was, das könnte ich _sehr_ gut gebrauchen!
Naja, wenn ich das richtig verstehe kann das MySQL also grundlegend bei InnoDB Tabellen, aber noch lange nicht so ausgefeilt wie Oracle & Co., Wobei mir das eigentlich fürs erste reicht...
- so nebenbei - SHOW INNODB STATUS könnte die von Lude gewünschten Infos enthalten...
Nun, ich will jetzt ja auch nicht den Glauben verbreiten, dass referenzielle Integrität
genau definiert ist; es ist IMHO ein Sammelbegriff für eine mögliche Anomalie.
Wie gesagt habe ich davon wenig Ahnung, aber mein Verständnis davon ist, dass referenzielle Integrität einfach bedeutet, dass verknüpfte Datensätze nicht isoliert betrachtet werden müssen, sondern dass wie oben beschreiben wenn ein Datensatz gelöscht wird alle verknüpften ebenfalls gelöscht werden. Oder geht das noch weiter? Ich bin gespannt was Dein schlaues Buch dazu sagt ;-))
Viele Grüße
Andreas