Andreas: Datenhaltung - Datenbankstruktur

Beitrag lesen

hi!

Daten-Konsistenz...
Die ist bei MySQL grundsätzlich ein Problem, da Foreign Keys (bisher) nicht unterstützt werden.
Kann ich nicht manuell in jede Tabelle entsprechende Spalten mit den verknüpften Ids für andere Tabellen einfügen?
Du kannst nicht nur, Du musst.

Nein, das meinte ich nicht. Das ist klar! Ich meine eben doch "Redundanzen" zu schaffen, um das Problem der Inkonsistenz zu vereinfachen!
Beispiel:
Ich habe die Tabelle Angaben, da referenziere ich nicht nur auf dei Artikel_ID und auf die Kunden_ID, sondern auch auf die Event_ID, so dass ich es einfacher habe alle Angaben zu einem Event zu bearbeiten, zu löschen. Halt nur um Fehler in SQL-Statements, denen ich nicht vorgebeugt habe zu begegnen, indem ich einfach alle Angaben lösche, mit event_ID = xyz! Aber eigentlich sollt man gerade das ja nicht machen, oder?

Vor allem kannst Du aber in Kunden_zu_Event auf Event_id=42 referenzieren, auch wenn ein solcher Datensatz in Event nicht existiert. Um dies zu vermeiden, sind Foreign Keys da - leider (noch) nicht bei MySQL.

Aber was könnte ich da machen? Es muß ja einen Grund haben wenn Event 42 nicht mehr exisitiert, und wenn Event 42 gelöscht wird müsssen auch  alle andeen damit zusammenhängenden Datensätze aus anderen Tabellen gelöscht werden, halt manuell, gibt es eigentlich delete... select?

Aber was machen eigentliche Foreign Keys in einem solchen Fall? Also wenn ich jetzt einen Foreign key auf die EventID in der Tabelle Artikel hätte, würden dann alle Datensätze mit entsprechendem Foreign Key mitgelöscht? automatisch?

Es gibt insert-select, mal gucken ob das was bringt!

Eine Art
INSERT INTO tabelle VALUES (1,2,3), (4,5,6), (7,8,9), ...
wäre hilfreicher. Für einen Select brauchst Du die Daten ja schon in der DB, und Du willst sie ja gerade erst hineinschreiben.

Wußte gar nicht das das geht, das ist in der Tat sinnvoller ;-) Nur ein Delete mit Select wäre nicht schlecht, aber das geht IMHO nicht!

Grüße
Andreas