Pracuję nad grą planszową do gry samiliplayer online & z pytaniem o serwer SQL.Jak wymusić relację od 1 do n
Pozwala założyć, że gra pozwala dwóm graczom. Po utworzeniu gry twórca zostaje dodany jako pierwszy użytkownik.
W tym momencie dwóch użytkowników może spróbować dołączyć do gry jednocześnie. Jeden z tych użytkowników powinien być zablokowany.
Mój schemat bazy danych jest następujący:
tbGame - contains a list of all games. PrimaryKey is GameId
tbPlayers - contains a list of all registered users. PrimaryKey is PlayerId
tbPlayersInGame - contains a list of all players in each game. Foreign key
relations to tbGame and tbPlayers.
czuję, że potrzebne są dwie rzeczy:
- sposób, aby zablokować tbPlayersInGame na podstawie GameID. Będzie to używane podczas dodawania gracza do gry. Z tego, co przeczytałem, wynika, że odpowiednia byłaby blokada z kluczem (na GameId).
- Sposób na wymuszenie relacji 1 do 2, aby próba dodania trzeciego gracza zakończyła się niepowodzeniem.
Skończyło się na tym podejściem. Zapytanie było coś takiego: „Ustaw TRANSAKCJI IZOLACJA POZIOM SERIALIZABLE rozpocząć transakcji IF (SELECT COUNT (*) FROM PlayersInGame GDZIE GameID = @GameId