*Markus: (MYSQL) Verzwicktes Problem mit referenzieller Integrität

Beitrag lesen

Hallo,

im Grunde geht es um 4 Tabellen:

In ArtikelProSortiment soll es so sein, dass entweder a_id, oder z_id NULL sein darf, d.h. ich will erreichen, dass in eines der beiden Felder keine Werte eingefügt werden müssen. (Ideal wäre es, wenn entweder nur das eine oder nur das andere befüllt sein darf, aber es genügt mir, wenn das Ganze generell mal klappen würde, dass ich nicht einfügen muss, wenn ich nicht will).

Ich kann zwar die Tabellen so anlegen, dass ich in ArtikelProSortiment und Klicks diese beiden Felder auf default NULL setze, jedoch kann ich trotzdem nicht nichts einfügen (sql-mode ist STRICT_ALL_TABLES, daran wird nicht gerüttelt). Hier greift nämlich immer natürlich die referenzielle Integrität der anderen Tabellen, da der PK zB in Zubehoer NOT NULL ist, selbst dann wenn die Felder in ArtikelProSortiment NULL sind.

Die Legitimität hierbei ist mir nicht ganz klar: Wenn z_id in Zubehoer NOT NULL ist, und ich in ArtikelProSortiment z_id als NULL definiere und einen Wert dort nicht einfügen will, müsste mir das ja eigentlich erlaubt sein, denn durch die referenzielle Integrität bin ich ja nur insoweit beschränkt, dass im Falle eines Einfügens nur Werte eingefügt werden dürfen, die auch in "Zubehoer" stehen. Das Verhalten, dass ich auch nichts einfügen kann, müsste ja irgendwie herbeigeführt werden können, oder?

Als Workaround könnte ich natürlich Dummywerte 0 als PK in allen referenzierten Tabellen einfügen, um im Falle, dass ich nichts einfügen will, einfach 0 einfüge, aber das scheint mir etwas unprofessionell zu sein.
Außerdem sind es ja nicht nur diese 4 Tabellen, die ich mit Dummywerten beglücken müsste, sondern noch einige andere. Diese "Lösung" will ich aber wenn möglich vermeiden.

Irgendwelche Ideen dazu, wie ich das gewünschte Verhalten herbeiführen könnte?

Ich wünsche auch gleich mal Frohe Weihnachten,

Markus