# Frage zu Datenmodellierung



## internet (29. Dez 2013)

Hallo zusammen,

ich bin wirklich am verzweifeln und würde mich sehr über Hilfe freuen.
Also folgendes:

Ich habe 3 Tabellen.

a) Warengruppe(ID, Name, Beschreibung)
b) Artikel (ID, Name, Warengruppe_FK)
c) ArtikelVerliehen(ID, von, bis, artikel_fk)

So habe ich die Beziehung aufgebaut: warengruppe 1....n artikel 1.....n ArtikelVerliehen

Nun möchte ich aber eine Liste erstellen, die mir mir folgendes ausgibt:



> Warengruppe1
> - artikel.name |  artikel.artikelVerliehen.von  |  artikel.artikelVerliehen.bis
> 
> Warengruppe2
> - artikel.name |  artikel.artikelVerliehen.von |   artikel.artikelVerliehen.bis



Mein Problem ist nun, dass *ArtikelVerliehen* in einer Liste von *Artikel* und Artikel wiederum in einer Liste von *Warengruppe* ist, also sprich 2 Listen.

Ich habe mir schon gedacht auch einen Schlüssel von *Warengruppe* in *ArtikelVerliehen* zu machen, aber das macht kein Sinn (Stichwort Redundanz). Denn was ist wenn ein *Artikel* einer anderen *Warengruppe* zugeordnet wird, dann muss das Update auch in *ArtikelVerliehen* geschen.

Kann mir bitte jemand weiterhelfen, wie ich das lösen kann?
Freue mich über jede Hilfe:bahnhof:


----------



## stg (29. Dez 2013)

Worauf genau zielt deine Frage ab? Willst du Hilfe dabei eine passende SQL-Abfrage zu formulieren? Dann solltest du mindestens erwähnen, welche DB du verwendest.. Oder hast du die Daten schon in deiner Java-Application vorliegen (über Standard-JPA) und suchst nur eine Möglichkeit die gewünschten Daten auszugeben?
Oder doch was ganz anderes?


----------



## internet (29. Dez 2013)

Die Daten liegen schon in der Java-Application vor (JPA) vor. 
Ja, nun suche ich eine Möglichkeit, wie ich dies ausgeben kann.

Also quasi so:


----------



## stg (29. Dez 2013)

Ich sehe das Problem nicht wirklich. Du musst doch nur über alle drei Listen iterieren?


```
for(Warengruppe w : wList) {
   ... // Baue hier die "äußere Tabelle" auf..
   for(Artikel a : w.aList) {
      ...
      for(ArtikelVerliehen av : a.avList) {
         ... // Baue hier die "innere Tabelle" auf
      }
   }
}
```


----------

