![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 1 Dołączył: 21.11.2006 Skąd: Ozorków Ostrzeżenie: (0%) ![]() ![]() |
Witam,
jestem w trakcie projektowania systemu komunikacji między użytkownikami oraz listy znajomych. W zasadzie wszystko jest zakończone, problem tylko jeden. Każdy użytkownik ma możliwość usunięcia konta i mam problem z rozwiązaniem problemu zmniejszania ilości znajomych o osobę, która usuwa konto. W tabeli 'users' (tabela danych użytkownika) jest pole 'u_friends', które zmienia swoją wartość zawsze po dodaniu lub usunięciu nowego znajomego. Ponad to jest tabela 'friends', która zawiera numery id zapraszającego i osoby zaproszonej. Oczywiście z usunięciem wszystkich wpisów z tabeli 'friends' nie ma problemu, ale jak mam zmniejszyć ilość znajomych u wszystkich osób, którzy mają użytkownika usuwającego swoje konto w znajomych (pole 'u_friends' w tabeli 'users')? Przecież nie zrobię 500 razy selecta, który sprawdzi pole 'u_friends' i update jeśli osoba ma 500 znajomych ![]() Oczywiście otwarty jestem na wszelkie alternatywne sugestie co do rozwiązania tego problemu ![]() Swoją drogą, gdybym zrezygnował z pola 'u_friends' w tabeli 'users' i za każdym razem zliczał, np. za pomocą count() ile znajomych posiada użytkownik, to byłoby ciężkie dla typowego serwera ( www.iq.pl - 10 GB ) rozwiązanie? -------------------- Wykonujemy strony www, wśród naszych produktów są także system rezerwacji online oraz system monitorowania pozycji w wyszukiwarkach
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
1. pobierasz liste ID osób, które mają tego usera w friends
gdy już masz tablicę userów w php to 2. aktualizujesz bazę
razem 2 zapytania. Cytat Swoją drogą, gdybym zrezygnował z pola 'u_friends' w tabeli 'users' i za każdym razem zliczał, np. za pomocą count() ile znajomych posiada użytkownik, to byłoby ciężkie dla typowego serwera ( www.iq.pl - 10 GB ) rozwiązanie? zależy ile userów. na początku to rozwiązanie może być. ale dobrze jest od razu zaprojektować i zrobić app tak żeby było optymalnie nawet i przy 100000 userów. Ten post edytował AxZx 17.03.2009, 01:07:27 -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Jeżeli korzystasz z w miarę nowego MySQL to proponuję:
- utworzenie odpowiednich relacji usuwających rekordy z tabeli powiązanych (ON DELETE CASCADE ale działa tylko w InnoDB), - utworzenie triggera do automatycznej aktualizacji liczników przyjaciół (odpalany ON DELETE). |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 1 Dołączył: 21.11.2006 Skąd: Ozorków Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za tak szybkie odpowiedzi.
Użyłem rozwiązania użytkownika AxZx. Sprawia wrażenie najmniej skomplikowanego. -------------------- Wykonujemy strony www, wśród naszych produktów są także system rezerwacji online oraz system monitorowania pozycji w wyszukiwarkach
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 15:38 |