Jaka struktura bazy danych dla agregacji lub kompozycji

0

Witajcie
W jaki sposób powinno przechowywać się dane zagregowane (np Kontenery obiektow).
Załóżmy że mamy dwie takie klasy, które chcemy zrzutować na encje w bazie danych:

 
class Zawodnik{
int id;
String imie;
String nazwisko;

}

class Druzyna{
int id;
String nazwa;
ArrayList<Zawodnik> sklad =  new ArrayList<Zawodnik>(); //agregacja - Druzyna posiada zawodnikow
}

W kontenerze 'sklad' przechowujemy obiekty typu 'zawodnik'. Moje pytanie jest więc nastepujace: Jak powinna wygladac struktura tabel takiej bazy danych? Czy serializowac obiekt 'sklad' i przechowywac go jako jakis blob? Czy moze zawodnik powinien miec atrybut 'druzyna' i przez niego zapelniac konener 'sklad' podczas pobierania danych z bazy danych?

1

dodatkowa tabela z zawodnik_id i druzyna_id

0

rozumiem, czyli pobierając dane z bazy, tworze własny mechanizm zapełniania kontenera.
Tworze jakieś zapytanie do bazy, które zwróci dane zawodnika

 
SELECT z.imie, z.nazwisko ... FROM Zawodnik z, Druzyna d, Zawodnik_Druzyna zd
WHERE z.id = zd.id_Zawodnik AND d.id = zd.id_Druzyna AND d.id = 1553

I kazdy element, ktory zostanie zwrocony, pakuje w obiekt klasy Zawodnik, a następnie
dodaje obiekty po kolei do kontenera. Tak to powinno mniej więcej przebiegać?

0

mniej więcej :)

1

dzieki

0

Zgadza się, jeśli zawodnik może należeć do kilku drużyn. Jeśli należy tylko do jednej, to w tabeli Zawodnicy dajesz idDruzyny. Proste.

Zgadza się, jeśli zawodnik może należeć do kilku drużyn. Jeśli należy tylko do jednej, to w tabeli Zawodnicy dajesz kolumnę idDruzyny. Proste.

ja dobrze mówi. Dodatkową tablicę tworzy się w przypadku relacji wiele-do-wielu. Tutaj jest klasyczny przykład relacji jeden-do-wielu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1