Hi Andreas,
Transaktionsfähigkeit ist bei mySQL eine Eigenschaft eines Tabellentyps,
nicht der Datenbank an sich.
Was würdest Du denn für meinen Fall machen? Meinst Du ich brauche
keine Transaktionen?
Das kann ich nicht beantworten. Ich habe nicht den gesamten Thread
im Detail gelesen - ich wollte nur Cheatahs Aussagen an dieser Stelle
korrigieren.
Ob Du Transaktionen brauchst oder nicht, das hängt nicht vom Format
Deiner Tabellen ab, sondern von der Art und Weise, in der Du darin
Änderungen vornehmen mußt.
Wenn Du beispielsweise in zwei Tabellen nur 'gleichzeitig' etwas
ändern darfst (also Deine Datenbank inkonsistent wird, wenn Dein
Programm zwischen zwei INSERTs abstürzt, weil dann ein Datensatz auf
irgendwas zeigt, das es nicht gibt), dann solltest Du Transaktionen
in Erwägung ziehen.
Und wenn Datenverlust schlimm ist (beispielsweise, weil Du Bestellun-
gen eines Shops protokollierst), dann erst recht (sonst bekommt der
Kunde seine Ware, Du aber kein Geld ;-).
Die ist bei MySQL grundsätzlich ein Problem, da Foreign Keys
(bisher) nicht unterstützt werden.
InnoDB kann das also schon in mySQL 3.23.44 ...
Hm, aber ich habe noch nie verstanden was Foreign-keys wirklich
bringen?
Konsistenz. Statt in 47 verschiedenen Zugriffsprogrammen immer wieder
zu prüfen, ob der Inhalt der Datenbank in sich stimmig ist, kannst Du
Dich einfach darauf verlassen, weil die Datenbank selbst sich darum
kümmert.
Selbst wenn Du 47 mal die Prüfung korrekt programmiert hast - was ist,
wenn ein Operateur sich per Terminal anmeldet und einen Datensatz
manuell ändert (weil ein Kunde am Telefon ihn dazu nötigt)? Futsch
ist die schöne Konsistenz. Und wie viele von Deinen 47 Programmen dann
noch korrekt laufen, weiß der Himmel.
Constraints machen dumme Tabellen zu intelligenten Tabellen - also
darfst Du mit dümmeren Programmen darauf zugreifen. ;-)
Wenn ich mir dieses Beispiel angucke, was bringt hier der Foreign-
key? Dasselbe kann ich doch auch ohne machen, oder?
Weder mit demselben niedrigen Aufwand noch in derselben hohen Qualität.
Viele Grüße
Michael