Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 13 Dołączył: 16.06.2007 Ostrzeżenie: (0%)
|
Witam,
otóż tworząc pewien projekt zapewniam sobie spójność danych kilkoma warunkami w kodzie (a w zasadzie odpowiednim zapytaniem). Ale w procesie optymalizacji całej aplikacji zacząłem większość rzeczy wrzucać do bazy (triggery, indeksy na wielu polach itp). Zastanawiałem się też nad pewną kwestią - nazwijmy to znajomość użytkowników. Przykład: Użytkownik A (user_a w DB) jest znajomym z Użytkownikiem B (user_b). Tym samym B jest znajomym z A. Do opisania tej zależności potrzebny jest jeden rekord z id znajomości, id user_a, id_user_b i np created_at. Jak założyć taki indeks aby unikalna była para (user_a, user_b) oraz (user_b, user_a). Zakładając że user_a ma id 1 a user_b - 100 to unikalne muszą być 2 pary (1,100) oraz (100,1). Mam nadzieję że jasno opisałem problem. PS. Sprawdzenie w kodzie czy już istnieje znajomość jest banalne - "SELECT COUNT(*) FROM relations WHERE (user_a = 1 AND user_b = 100) OR (user_b=1 AND user_a=100)" ale chciałbym dodatkowo zabezpieczyć bazę. |
|
|
|
Riggs Unikalna para wartości 10.12.2013, 12:19:01
sowiq Możesz założyć zwykły index UNIQUE, a w kodzie apl... 10.12.2013, 12:35:03
Riggs Tak nie do końca bo np. przyjmuję że user_a zapros... 10.12.2013, 12:49:44
vermis Z punktu widzenia bazy danych rekordy (1,100) i (1... 10.12.2013, 14:39:27
Riggs W sumie racja, może za bardzo chce na siłę "u... 10.12.2013, 14:56:19
phpion Stosując rozwiązanie ~sowiq zwróć uwagę w jaki spo... 10.12.2013, 15:26:44 ![]() ![]() |
|
Aktualny czas: 24.12.2025 - 13:23 |