![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 10.01.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Jestem na etapie tworzenia serwisu, którego ideą jest ocenianie przez użytkowników produktów z pewnej kategorii. Każdy użytkownik jest opisany trzema cechami i ocenia w skali od 1 do 10 produkty, którę są dodatkowo określone dwiema cechami. Wszystko jest zapisywane do bazy i potem przez php na stronie wyświetlają się oceny poszczególnych produktów pogrupowane wg cech użytkowników i produktów, np. |cecha1 uzytk|cecha2 uzytk|cecha3 uzytk|cecha1 produktu|cecha2 produktu|średnia ocena-7.8|Liczba ocen - 42| Teraz problem: Mam dwie tabele: UZYTKOWNICY - tworzona przy rejestracji id_user dane_user cecha1_user cecha2_user cecha3_user PRODUKTY - rekordy są dodawane za każdym razem, gdy ktoś oceni produkt id_prod id_user dane_prod cecha1_prod cecha2_prod cecha1_user cecha2_user cecha3_user ocena W tej chwili przy wyświetlaniu listy ocen dla poszczególnych produktów mam jednego prostego selecta do tabeli PRODUKTY. Przy coraz większej liczbie uzytkowników i ocen, w tabeli PRODUKTY zaczną mi się powtarzać cechy poszczególnych uzystkowników. Prostym rozwiązaniem jest znormalizowanie tabel, wywalenie z PRODUKTY cech użytkownika, a potem wyciąganie ich przez join z tabeli uzytkownicy. Teraz moje pytanie - jeśli będzie kilka tysięcy użytkowników i kilkadziesiąt tysięcy ocen produktów, które rozwiązanie będzie wydajniesze? Jeśli użyję joina, to będę mógł odchudzić tabelę PRODUKTY i zaoszczędzę sporo miejsca, z drugiej strony czytałem, że złączanie tabel ma negatywny wpływ na wydajność zapytań |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 22:12 |