Recimo da imam dvije "bitne" tabele koje nisu direktno povezane (user i sport_event), već se nalazi 2-3-4 tabele "između" njih koje se referiraju na jednu ili drugu.
E sad, treba mi npr. koji user prisustvuje nekom događaju i ja to mogu da dobijem tako što spojim 3 ili 4 tabele između po FK, ali me zanima da li je ipak bolje da stavim u tabelu sport_event direktno user_id i zdravo?
Baza je tek u dizajn fazi, tako da je odgovor na sva pitanja odrečan :-)
Pitam unapred baš da bih izbjegao eventualne probleme koji po defaultu mogu iz toga proizaći. Svi indeksi su postavljeni kako treba (bar ja mislim), biće tu i keširanja ovoga-onoga, ali me zanimao baš neki generalni odgovor.
Ne samo iz perspektive performansi, već i sa praktične strane.
Skolski odgovor je da ides na normalizaciju, normalne forme i dizajn bez redudanse.
Iskustveni je da denormalizacija cesto pomaze :). S'druge strane, ako ne moras, drzi se normalizovane baze, a na denormalizaciju odvoj vreme za refactoring kad (i ako) ti bude trebala.
Tyler Durden:
Baza je tek u dizajn fazi, tako da je odgovor na sva pitanja odrečan :-)
Onda definitivno ne dupliraj podatke.
Prerana optimizacija je zaista ogroman problem - pričam iz svog iskustva.
Nemoj se bojati upita sa više JOIN-ova. Na kraju krajeva uvek možeš da pojednostaviš upite pisanjem VIEW-ova (nadam se da ih MySQL ima). A kad jednom otvoriš kutiju sa crvima zvanu denormalizacija, nema nazad. :)
Super za odgovore, jer tako sam i krenuo od početka. I sad radim pregled čitavog modela prije nego krenem sa kodom, i ovo mi je zapalo za oko pa sam htio da provjerim.