Czy dobrze wymyśliłem strukturę tabel do gry ?

0

Muszę zrobić mini grę w kości. Zasada jest prosta, rzucam na przemian raz ja , a raz komputer. Maksymalnie są 3 rundy. Zliczamy punkty suma z dwóch oczek. Jeśli ktos wyrzuci sume = 7 to dotychczasowe punkty się kasują i rzuca do skutku, aż nie wyrzuci sumy oczek innej niż 7. Przykładowa sesja z gry poniżej

Runda Gracz Komp
1 4 6
2 7 -
2 9 8
3 3 7
3 - 9
suma 12 9
Wygrał gracz

Teraz założenia do gry są takie, że wchodzi gracz i wciska START i od tej pory ma stworzoną sesję gry

Tabela: game_session

ID ID_USERS ROUND ACTIVE
1 22 1 1

Ta tabela pozwala by gracz mógł przerwać grę i wrócić ponownie w każdej chwili. Do tej tabeli potrzebuje zrobić tabele z wynikami rzutów którą to obmyśliłem tak

Tabela: game_result

ID ID_GAME_SESSIONS ROUND RESULT ID_USERS NOTICE
1 1 1 6 22
2 1 1 7 0 Wynik 7 czyli rzuca jeszcze raz
3 1 1 8 0 Teraz gracz klika runda druga tabela sesji wskakuje na runde 2
4 1 2 3 22
5 1 2 8 0 Teraz gracz klika ze runda 3 i game session update na runda 3
6 1 3 2 22
7 1 3 4 0

I to koniec. W tabeli z wynikami mozemy przesledzić przebieg gry dobre dla historii żeby zachować, Natomiast co mnie martwi to po pierwsze, że aktualizuje w tabeli z sesją gry te rundy ze wpisuje 1,2 lub 3 i potem ta liczba jest kopiowana do tabeli z wynikami, nie jako ID ale jako zwykly numer rundy. A druga rzecz to w tabelce z wynikami ID_USERS jest to w tabeli z sesją ale jeśli rzuca komp to ma ID_users = 0 i te dwie rzeczy nie dają mi spokoju. Czy to w ogóle ma sens taka tabelka ?

1

Na pewno logiczne jest umieszczenie informacji o graczu w game session, bo jeżeli nie ma rozegranych żadnych rund, to potrzebujesz informacji o graczu, także ja bym to zostawił. Przechowywanie rundy w game_session bym wywalił, bo pole trzeba update'ować i moim zdaniem jest sztuczne, a pobranie danych po joinie będzie bardzo szybkie, więc nie będzie spowalniało operacji na bazie. Już abstrahując od wielkości projektu ;)
Moim zdaniem jest ok, ale może ktoś będzie miał ciekawy pomysł, jak zlikwidować redundancję.

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