我正在开发一个在线多人棋盘游戏并且有一个 SQL 服务器问题。
让我们假设游戏允许两个玩家。创建游戏时,创建者被添加为第一个用户。
此时,两个用户可以尝试同时加入游戏。这些用户之一应该被阻止。
我的数据库架构如下:
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.
我觉得我需要两件事:
- 一种基于 GameId 锁定 tbPlayersInGame 的方法。这将在将玩家添加到游戏时使用。从我读过的内容来看,这听起来像是一个键范围锁(在 GameId 上)是合适的。
- 一种强制 1 对 2 关系的方法,这样尝试添加第三个玩家就会失败。