Mehrere 1:m bzw. 1:1 Beziehungen in einer Tabelle

Hallo Leute,

eine kurze Frage zu SQL:

Ich habe eine tabelle bild, sowie rezept, lokation und buch.

Nun will ich zu jedem buch und rezept ein bild speichern und zu lokation bis zu fünf.

Jedoch kann jedes bild nur zu einer dieser drei dinge gehören.

wie ist hier die vorgehensweise bzg. der foreign keys.
lege ich in bild drei an, lokation_id,buch_id und rezept_id und setze dann jeweils nur einen und die anderen null?

oder ist es üblicher in den anderen tabellen das bild zu speichern also in buch ein foreign key bild_id?

Danke für die Hilfe.

mfg sque

Moin, sque,

wenn kein Bild mehrfach verwendet werden darf, ist der Ansatz

lege ich in bild drei an, lokation_id,buch_id und rezept_id
und setze dann jeweils nur einen und die anderen null?

korrekt.

oder ist es üblicher in den anderen tabellen das bild zu
speichern also in buch ein foreign key bild_id?

Damit wäre niemand gehindert, ein Bild beliebig oft zu verknüpfen. In einer Lokation könnte übrigens das gleiche Bild 5-mal angebunden werden.

Gru0 Ralf

Hallo Ralf, vielen Dank für dieAntwort.

Wie wird dann jedoch beim ersten Ansatz verhindert das ein Bild mehreren Datensätzen der drei Tabellen zugeordnet wird. Es könnte ja dann zb bei Buch_id und bei Rezept_id etwas Sinn stehen. Danke.

Hi sque,

Wie wird dann jedoch beim ersten Ansatz verhindert das ein
Bild mehreren Datensätzen der drei Tabellen zugeordnet wird.

da ist keine Absicherung per Datenbank möglich, das geht nur mit Klimmzügen, zB einem Vermerk beim Bild à la (oder heißt das á la?) „Bin schon weg“. Den Vermerk muss das Anwendungsprogramm setzen!

Beim sauberen Modell steht die Info ja beim Bild: Das FS-Attribut ist belegt oder nicht. Steht die Beziehung auf dem Kopf, muss die Info trotzdem irgendwo untergebracht werden. Anmerkung: 1:1 ist immer hakelig :wink:

Gruß Ralf