konto usunięte

Temat: Generowanie schematu z bazy danych - problem z MtM, a...

Witam

mam bazę danych, 14 tabel, cały jej schemat w sensie SQL robię w MySQL Workbench bo łatwiej ogarnąć całość, poza tym elegancko automatycznie można tworzyć relacje dwoma kliknięciami itp.

Polecenie generate schema wszystkie relacje 1:1 i 1:n(n:1) odwzorowuje elegancko jednak ani troszkę nie oddaje relacji n:n.

Może nie potrzebuję mieć ManyToMany ale właśnie dlatego chcę spytać.
Użytkownik może być członkiem wielu grup, stąd chciałem mieć tabelę Membership która zawierałaby user_id, group_id, active(0-nieaktywne,1-aktywne,-1 -ban),describe(miejsce np. na notkę od admina, coś w stylu co aktualnie z twoim członkostwem,ale to tylko detal)

Potem w aplikacji będę potrzebował wyświetlać user'owi wiele różnych rzeczy powiązanych z grupą, której członkostwo w danym momencie jest aktywne dla user'a. Jak to rozwiązać, żeby uniknąć pisania w aplikacji co chwilę user->membership->group .. itd.

Myślałem by użytkownik miał kolumnę z active_membership lub coś w tym stylu i na tej podstawie system mu podawał informacje ale nie wiem jak to dobrze rozwiązać i główkuje nad tym od paru dni i nic mądrego nie wymyśliłem, a zapewne ktoś z kolegów tutaj nie raz się z takim czymś spotkał i robił to może podzieli się doświadczeniem ?

konto usunięte

Temat: Generowanie schematu z bazy danych - problem z MtM, a...

Jak dla mnie to n:n jest w sam raz, a wręcz wymagane. W momencie pobierania usera (tam gdzie potrzebujesz dostęp do jego grup) robisz Join, żeby pobrać obiekty grup i odwołujesz się właśnie w ten sposób: user->membership->group Jak Ci się nie chce tyle pisać to możesz sobie to wpisać na początku w zmienną:
groups = user->membership->group

konto usunięte

Temat: Generowanie schematu z bazy danych - problem z MtM, a...

Tomasz Ignatiuk:
Jak dla mnie to n:n jest w sam raz, a wręcz wymagane. W momencie pobierania usera (tam gdzie potrzebujesz dostęp do jego grup) robisz Join, żeby pobrać obiekty grup i odwołujesz się właśnie w ten sposób: user->membership->group Jak Ci się nie chce tyle pisać to możesz sobie to wpisać na początku w zmienną:
groups = user->membership->group

ale jak rozwiązac problem aktywności członkostwa?
Krzysztof Krakowiak

Krzysztof Krakowiak Software Developer

Temat: Generowanie schematu z bazy danych - problem z MtM, a...

przecież możesz poprawić scheme w ymlu i dopisać tą relację, tez na początku próbowałem workbencha, ale teraz zdecydowanie odpowiada mi dopisywanie tabel i relacji w yamlu (doctrine).Krzysztof Krakowiak edytował(a) ten post dnia 20.07.10 o godzinie 13:21

konto usunięte

Temat: Generowanie schematu z bazy danych - problem z MtM, a...

Marek Urbanowicz:
ale jak rozwiązac problem aktywności członkostwa?
Nie wiem czy dobrze rozumuję, ale:
1. W Workbenchu tworzysz sobie relację n:n
2. Edytujesz tabelę i dodajesz te swoje pola: aktywny itd.
3. A potem jak trzeba aktywnych to robisz JOIN z warunkiem aktywny = 1. Wtedy zwraca ci userów którzy są aktywni w danej grupie.
Krzysztof Krakowiak

Krzysztof Krakowiak Software Developer

Temat: Generowanie schematu z bazy danych - problem z MtM, a...

zamiast $grups = user->membership->group

w modelu tworzysz metode np get_active_grups() i $grups = user->get_active_grups()

A w tej metodzie właśnie piszesz zapytanie które pobiera grupy z tym warunkiem. Umieszczenie tych informacji w tabeli przesiadce jest ok.

Następna dyskusja:

[SF 1.4, Doctrine] Problem ...




Wyślij zaproszenie do