私はオンラインのマルチプレイヤーボードゲームに取り組んでおり、SQLサーバーに関する質問があります。
ゲームで2人のプレーヤーが許可されていると仮定しましょう。ゲームが作成されると、作成者が最初のユーザーとして追加されます。
その時点で、2人のユーザーが同時にゲームに参加しようとする可能性があります。これらのユーザーの1人をブロックする必要があります。
私のデータベーススキーマは次のとおりです。
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.
私は2つのものが必要だと感じています:
- GameIdに基づいてtbPlayersInGameをロックする方法。これは、ゲームにプレーヤーを追加するときに使用されます。私が読んだことから、(GameIdの)キー範囲ロックが適切であるように聞こえます。
- 3人目のプレーヤーを追加しようとして失敗するように1対2の関係を強制する方法。