Updateowanie sredniej opinii przy wystawianiu recenzji

0

Hej zastanawiam sie jak poprawnie ustrukturyzowac baze danych i kod w React zeby moc wystawiac opinie danej firmie i wyswietlac srednia opinie. Obecnie planuje cos takiego:

  • do tabeli firmy dodac relacje do tabeli opinie
  • w tabeli opinie przechowywac opinie, zwlaszcza rating od 1 do 5.

Teraz pytanie jak obliczac srednia? Chce zeby w momencie w ktorym wchodze na profil firmy, widze srednia opinie. Uzywam typeorm i myslalem zeby do tabeli opinie dodac listener @AfterUpdate (https://orkhan.gitbook.io/typeorm/docs/listeners-and-subscribers#afterupdate) ktory po prostu w momencie w ktorym ktos przesyla opinie, pociagnalbym wszystkie opinie tej firmy i zapisal do tabeli firmy jako srednia i ewenautalnie liczbaOpinii. Czy tak to sie poprawnie rozwiazuje czy sa lepsze metody?

0

Dodać kolejną opinię do bazy a potem wyliczyć średnią.
Musisz mieć ilość opinii bo bez tej wartości nie masz możliwości policzenia średniej.
Oczywiście możesz nie zapisywać samych opinii ale licznik ilości jest niezbędny.

Ogólnie nowa_srednia = ( ilość_opinii * srednia_opinia + nowa_opinia ) / ( ilosc_opinii + 1 )

0

trzymanie średniej w tabeli to taki sobie pomysł. A co jak ktoś będzie chciał średnią z ostatnich 3 miesięcy?

BTW rozwiązanie: https://github.com/typeorm/typeorm/issues/673

0

Ogolnie myslalem zeby zapisywac wszystkie opinie w tabeli opinie ale dodatkowo w tabeli firmy trzymac srednia jako kolumne zeby na samej stronie zamiast najpierw ladowac dane firmy z tabeli firmy a potem same opinie z tabeli opinie i liczyc ich srednia, moc tylko zaladowac dane firmy i tam juz by byla srednia opinia (lub np. srednia i srednia3M dla sredniej z ostatnich 3 miesiecy). Ma to sens?

0
Kokos123 napisał(a):

Hej zastanawiam sie jak poprawnie ustrukturyzowac baze danych i kod w React zeby moc wystawiac opinie danej firmie i wyswietlac srednia opinie.

Popełniasz ogromny bład myśląc że to co chcesz zrobić ma cokolwiek wspólnego z bazą.

Nie musisz nic robić. Po prostu trzymaj oceny w bazie i tyle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1