Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skrypt grup czyli jak to zrobic
SiganPL
post 1.05.2010, 15:43:07
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 21.03.2010

Ostrzeżenie: (0%)
-----


Witam, rekreacyjnie robie skrypt grup (tematycznych) użytkowników

Stworzyłem to na zasadzie 2 tabel:

Tabela 1 (Przechowywanie informacji o grupach): GROUPS a w niej GROUP_ID i NAME
Tabela 2 (Użytkownicy): USERS a w niej ID, GROUP_ID, USERNAME

Istotna jest TABELA 2, ID to oczywiście identyfikator, GROUP_ID przechowuje informacje o tym do której grupy jest zapisany użytkownik z pola USERNAME

I teraz pytanko... czy są jeszcze inne metody na podobny skrypt?
Zakładając ze mamy 5 grup, a w każdej po 10 zapisanych userów daje to 50 rekordów (w tabeli 2)...

Zastanawiałem sie nad dodaniem do TABELI 1 pola USERS zamiast tabeli 2 i przechowywanie tam użytkowników, oddzielonych przecinkami z czego to skrypt php by ich wypisywał na ekranie w odpowiedniej formie. Nie mam problemu z kodem tylko z tym na jakiej zasadzie ma to działać... czy są jeszcze inne rozwiązania? znacie? jaka metoda jest najbardziej optymalna?

Szukałem na tym forum i ogólnie w necie ale nic ciekawego nie znalazłem... moze za słabo szukam smile.gif pomóżcie smile.gif Dzięki smile.gif
Go to the top of the page
+Quote Post
tehaha
post 1.05.2010, 15:52:59
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


jeżeli jeden użytkownik może przynależeć tylko do jednej grupy to to pierwsze rozwiązanie będzie ok, jeżeli do wielu grup to wtedy najlepiej 3 tabele: users, groups, user_group_assoc, to drugie rozwiązanie z dodanie kolumny users do groups nie jest dobre ponieważ gdybyś potrzebował pobrać jednocześnie nazwy użytkowników i nazwę grupy to już jednym zapytaniem tego nie zrobisz, a w pierwszym przypadku zrobisz to przy pomocy LEFT JOIN
Go to the top of the page
+Quote Post
SiganPL
post 1.05.2010, 15:58:55
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 21.03.2010

Ostrzeżenie: (0%)
-----


Chodzi o to żeby każdy user mógł należeć do każdej grupy smile.gif zależy jak będzie chciał smile.gif
Go to the top of the page
+Quote Post
tehaha
post 1.05.2010, 16:01:40
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


to wtedy 3 table w trzeciej trzymasz powiązanie użytkownika z grupą: user_id | group_id
Go to the top of the page
+Quote Post
Kshyhoo
post 1.05.2010, 16:09:28
Post #5





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Można by to rozwiązać jeszcze inaczej, przy stałej i znanej ilości grup, mianowicie, do dać w bazie pola z grupami jako enum('0', '1') od razu przy użytkownikach.


--------------------
Go to the top of the page
+Quote Post
Daniel Meger
post 1.05.2010, 17:56:39
Post #6





Grupa: Zarejestrowani
Postów: 20
Pomógł: 2
Dołączył: 30.04.2010
Skąd: PL

Ostrzeżenie: (0%)
-----


To, co chcesz wykonać jest relacją 'wiele do wielu'. Jako, że nie jest możliwe rozwiązanie tej relacji wprost, stosuje się trzy tabele: USERS, GROUPS, USERS_TO_GROUPS (nazwy nie mają oczywiście większego znaczenia) oraz stosuje się między USERS a USERS_TO_GROUPS relację 'jeden do wielu' a między USERS_TO_GROUPS a GROUPS 'wiele do jednego'.

USERS:
pola: id, imie, nazwisko, ...

GROUPS:
pola: id, nazwa, ...

USERS_TO_GROUPS:
pola: id, user_id, group_id

Do łączenia stosujesz polecenie JOIN
http://dev.mysql.com/doc/refman/5.0/en/join.html
http://forum.php.pl/index.php?showtopic=83702

Rozwiązanie z dodatkowymi polami nie jest skalowalne i dlatego bym raczej tego unikał.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 13:33