Autor Zpráva
Lorin
Profil *
Dobrý den, pro svůj web chci k některým položkám přidat možnost hodnocení pro přihlášené uživatele. Protože se tyto položky mohou časem měnit, je potřeba, aby se mohl uživatel vrátit a popřípadě hodnocení změnit. V souladu s tím mne napadl následující vzhled tabulky:

id -> ID hodnocení, vlastně nepotřebný
autor_id -> ID uživatele, který hodnocení provedl
polozka_id -> ID hodnocené položky
hodnoceni -> samotné hodnocení 0-100%
datum -> datum hodnocení, použije se pro seřazení nejnovějších hodnocení.

Jednotlivých položek, které půjde hodnotit nebude mnoho, v řádu desítek. Naopak hodnocení jako takových lze očekávat tisíce, možná desetitisíce. A z toho plyne moje otázka. Nestane se při vyšším počtu hodnocení tento návrh spíše přítěží, nebude příliš pomalý?
Děkuji.
scheras
Profil *
Ja osobně v tom nevidím problém.
Kajman
Profil
Sloupec id je zbytečný. Udělejte si primární klíč na kombinaci autor_id a polozka_id. Při větším počtu hodnocení bude vhodné mít předpočítané údaje v pomocné tabulce, pokud z toho budete např. dělat průměr pro každou položku a ten zobrazovat nebo podle něho řadit.
tiso
Profil
Lorin: pri správnych indexoch to nebude pomalé, miesto dátumu môžeš radiť podľa id (ak ho tam necháš)
lorin
Profil
Kajman:
Při větším počtu hodnocení bude vhodné mít předpočítané údaje v pomocné tabulce
Tím myslíte to, že bych si uložil průměr a ten bych dejme tomu každý den o půlnoci (nebo v jiném intervalu) cronem aktualizoval? Tím by odpadla nutnost po každém načtení stránky vypočítat průměr...
Kajman
Profil
Buď se může automaticky předpočítávat v nějakém pravidelném intervalu (klidně jen u těch položek, kde je nějaké novější datum). Nebo mít v pomocné tabulce i součet hodnocení a počet a pomocí triggerů si přepočítat průměr hned po úpravě dat v hodnotící tabulce. Oboje bude u velkých dat svižnější, než výpočet při každém zobrazení.

Pokud v hodnocení budou jen ty tisíce řádků a bude tam i index nad polozka_id, tak bych to předpočítávání snad ani neřešil.
lorin
Profil
Děkuji za odpověď.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: