Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Usuwanie konta użytkownika, a ilość znajomych u innych użytkowników
Kamil Rybczyński
post
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 smile.gif

Oczywiście otwarty jestem na wszelkie alternatywne sugestie co do rozwiązania tego problemu smile.gif


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
AxZx
post
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ę
  1. UPDATE user SET u_friend = u_friends - 1 WHERE id IN ($tablica_userow)


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
Go to the top of the page
+Quote Post
phpion
post
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).
Go to the top of the page
+Quote Post
Kamil Rybczyński
post
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
  1. UPDATE user SET u_friend = u_friends - 1 WHERE id IN ($tablica_userow)
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
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 Aktualny czas: 19.08.2025 - 15:38