Datenbankentwurf Bildverwaltung - Grundgerüst steht

beten

Lt. Junior Grade
Registriert
Juni 2003
Beiträge
286
Hallo Community.

Ich soll ne Datenbank entwerfen, nur hab ich gerad irgendwie ein Brett vorm Kopf, bzw sehe den Wald vor lauter Bäumen nicht :rolleyes:
Es soll ne Bildverwaltung realisiert werden.

- Es gibt mehrere Bereiche
- Es gibt mehrere Alben. Jedes Album ist einem Bereich zugewiesen
- Es gibt mehrere Bilder. Jedes Bild ist einem Album zugewiesen

3 Tabellen

tab_Bereich
id | name

tab_Album
id | name | id_bereich

tab_Bilder (nich entgültig)
id | name | id_album


Jetzt zu dem Problem.
Es gibt jeweils Vorher- / Nachherbilder die zusammengehören. Dieses kann jeweils eins sein, oder auch mehrere. Es können auch noch Zusatzbilder vorkommen:

Vorher 1 | Nachher 1
Vorher 2 | Nachher 2
Zusatzbild

Vorher 1 | Nachher 1
Zusatzbild
Zusatzbild

Vorher 1 | Nachher 1
Vorher 2 | Nachher 2
Vorher 3 | Nachher 3

usw.


Habe mir jetzt gedacht, noch eine zusätzliche Tabelle zu erstellen, in welcher die Zusammenhänge der Vorher- / Nachherbilder (mittels IDs) abgebildet werden.

tab_Zusammenhang
id | vorher(bild_id) | nachher(bild_id)


Nur was mache ich mit den Zusatzbildern? Noch ne Tabelle? (finde das irgendwie ein bisschen overhead...kann mich aber täuschen)

Für Vorschläge (und Verbesserungen ;-)) wär ich sehr dankbar.

Gruß
 

Anhänge

  • db_sketch.jpg
    db_sketch.jpg
    55,4 KB · Aufrufe: 198
Zuletzt bearbeitet:
Hi beten,

ich hoffe, ich habe es richtig verstanden. Du hast also eine Relation tab_Bilder mit Bildern und möchtest noch den Bildern in dieser Relation andere Bilder zuordnen, die nachher-Bilder. Dabei können jedem Bild u.U. mehrere (0 bis n) Bilder zugeordnet sein. Zudem sollen noch die besagten Zusatzbilder, die nicht unbedingt nachher-Bilder sind , mit diesen verknüpft werden.
Wenn das so ist, dann sollte Dir vielleicht das weiterhelfen:

etwas Theorie:
(Das mit der Zusatzrelation tab_Zusammenhang war schon gar keine schlechte Idee.)
Du hast also eine 1 zu N Beziehung. Einem Bild sollen N andere zugeordnet sein UND jedes zugeordnete Bild hat sozusagen NUR EIN Elternbild. Dabei ist N >= 0, denn das Bild kann, aber muss keine anderen Bilder zugeordnet bekommen.
In diesem Fall brauchst Du eine zusätzliche Relation, die diese Verknüpfungen festhält. Für solche Relationen nimmst du die Schlüsselattribute der daran teilnehmenden Relationen (hier z.B. tab_Bilder und tab_Zusatzbilder) als Attribute. Diese Relation z.B. tab_zugehörigeBilder enthält nur Tupel mit der Elternbild-ID und der ID des zugeordneten Bildes. Wenn jetzt die Elternbilder mit der ID 1 und 2 existieren und Du IDs für die anderen Bilder auch hast, dann könnten die enthaltenen Tupel folgendermaßen aussehen: (1, nb1),(1,nb3534),(2,nb1),(2,zb1),... [nb:nachher-Bild, zb: Zusatzbild]. Der linke Wert entspricht dem Wert der Spalte ElternbildID und der rechte der Spalte KindbildID, d.h. Du verweist in tab_zugehörigeBilder mit dem Attribut BildID auf die ID des Elternbildes und mit ZusatzbildID auf die ID des Bildes, das zugeordnet werden soll.
In einer 1 zu N Beziehung bildet dann das Schlüsselattribut der N-Seite den Schlüssel der neuen Relation (KindbildID).

Solltest Du aber beabsichtigen, dass einige nachher-Bilder zu mehr als einem Bild zugeordnet werden können, dann haben wir hier eine N zu M Beziehung (N >= 0 und M >= 0). Jetzt wird das Schlüsselattribut der tab_zugehörigeBilder Relation von beiden Attributen gebildet, ein zusammengesetzter Schlüssel.

Nun zu der Frage, ob man eine zusätzliche Relation für die anderen Bilder braucht: Nein.
Du kannst alle deine Bilder in der selben Realtion abspeichern und diese, falls nötig, um die Attribute nachherBild und zusatzbild erweitern. Die würden als Flags fungieren ,um die spezielle Bedeutung der Bilder zu signalisieren.
Man sollte deswegen nicht eine zusätzliche Relation erstellen,weil wie Du es selbst intuitiv erkannt hast, es dazu führen würde, dass wir zwei gleiche Relationen hätten. In beiden wären nur Bilder abgespeichert und die selben Attribute.
In diesem Fall bietet es sich an alle Bilder in einer Relation zu haben und eine rekursive Beziehung zu benutzen, d.h. in der tab_zugehörigeBilder Relation verweist Du auf die Schlüsselattribute der tab_Bilder Relation.

Ich vermute, Du hast noch keine großen Erfahrungen mit (relationalem) Datenbankentwurf, da kann ich Dir das Buch "Datenbanksysteme" von A.Kemper und A.Eickler (Oldenbourg Verlag) sehr empfehlen. Ansonsten solltest Du Dir zuerst mal die Thoerie, die hinter dem relationalen Datenbanksystem steckt, aneignen.

Ich hoffe, das hat Dir etwas geholfen.
Viel Erfolg!

Schöne Grüße
munchkin
 
Vielen Dank.

Das hilft mir ersmal weiter. Ich versuche den Entwurf mal umzusetzen.

Und danke für den Buchtipp. Das werde ich mir mal besorgen :)


Gruß
 
Zurück
Oben