T800 Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 Witam Mam następujący problem z bazą danych na mojej stronie. Przedstawie krótko sytuację: 1. Strona docelowo będzie zawierać ok 700 produktów. 2. Każdy produkt będzie podlegać ocenie przez uzytkowników. 3. Wszyscy użytkownicy, którzy wyświetlą dany produkt będą widzieć jego oceny Uzytkownicy zapisani są w jednej tabeli (id_uzyt, login, hasło) Teraz dylemat Czy na każdy z 700 produktów tworzyć osobną tabelę (id_uzyt, ocena 1). Do szukania będzie np. select * from tabela345 Czy może zrobić jedną tabelę zawierającą wszystkie oceny wszystkich produktów (id_uzyt, id_prod, ocena). Do szukania będzie select * from tabela_glowna where id_prod =xxx Dużo wygodniejszy jest dla mnie sposób 2, ale martwię, że wtedy wraz z przyrostem liczby ocen znacznie spadnie szybkość ich wyszukiwania, bo zapytania będą składane do coraz większej tabeli. Proszę o radę, który wariant lepiej wybrać z punktu widzenia wydajnośći Pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Inco Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 Albo tu czegoś nie rozumiem albo nie ma się nad czym zastanawiać i wybrać wariant drugi tylko zakładać odpowiednie indeksy i wszystko będzie chodzić bardzo wydajnie. Pierwszy wariant jest mocno przekombinowany, chciałbyś mieć 700 tabel w których zapisane były tylko oceny? Przy każdym dodaniu nowego produktu tworzyłaby się kolejna tabela? Nie sądzę by było to wydajne, a na pewno będzie to bardzo nie wygodne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PawelC Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 lepiej jest mieć jedną tabelę i w niej wszystko, niż 700 tabel, bo wtedy burdel niesamowity w bazie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
T800 Opublikowano 13 Czerwca 2009 Autor Udostępnij Opublikowano 13 Czerwca 2009 Dzięki za rady, też się skłaniam ku jednej dużej tabeli, tylko chciałem się upewnić, ze nie spadnie wydajnośc gdy uzbiera się iles tysięcy rekordów i trzeba bedzie select wykonać Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PawelC Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 Ja mam w bazie jedną tabelę gdzie jest 300K rekordów, i nie zauważyłem żeby coś wolniej chodziło. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Inco Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 Musisz sobie indeksy pozakładać na user_id i na id_prod i wszystko będzie hulać bez problemu, możesz też sumować ocenę w jednym z pul produktu, tak by za każdym razem nie sumować jej z tabeli ocen, gdy będziesz wyciągał dane do prezentacji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Zarchiwizowany
Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.