Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Normalizacja a wydajność
alamik
post 10.01.2011, 17:58:33
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
mail
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ń


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: 12.06.2025 - 22:12