dedlfix: Wie Abfrage logisch richtig gestalten.

Beitrag lesen

Hi!

Die Parameter des zu speichernden Eintrags dürfen nicht die selben Werte haben wie h_id, g_id, t_id und style zusammen als ein Tupel.

Leg einen Unique Index über diese Felder. (Einen über alle, nicht einen pro Feld.)

Die Artikelnummer darf überhaupt nur einmal in allen Einträgen vorkommen, ist aber kein Pflichtfeld.

Lösbar mit einem Unique Index und die Spalte darf NULL-Werte enthalten.

Müsste ich hier mit 2 SELECT-Anweisungen arbeiten indem ich zuerst prüfe ob artikelnr schon mal vorkommt, und dann prüfe, ob die 4 Parameter einem Tupel entsprechen, oder geht das irgendwie eleganter?

Das händische Prüfen mit vorherigem SELECT ist so ohne weiteres nicht empfehlenswert, da zwischen Prüfung und Insert jemand anderes bereits ebenfalls etwas eingefügt haben könnte.

Die Artikelnummer kann nicht als PK definiert werden, da
2.) a_id nicht weggelassen werden kann, da h_id öfter als ein Mal vorkommen darf. Somit ist man auf a_id angewiesen.

Nicht unbedingt. Wenn die Eindeutigkeit mit den vier anderen Feldern gegeben ist, könnten diese zusammen den Primärschlüssel ergeben. Das ist jedoch umständlicher zu handhaben, braucht man doch dazu alle vier Felder, um einen Datensatz individuell anzusprechen. Das a_id dient hier eigentlich nur der besseren Handhabbarkeit.

3.) die Artikelnummer kein Pflichtfeld ist. Somit kann die Artikelnummer kein Schlüssel sein.

Doch, aber eben nullable und kein primärer.

Lo!