Вместо отношения 1 к n вы можете настроить свою таблицу так, чтобы она имела столбцы - вероятно, помеченные host_player
и visitor_player
или необходимый эквивалент (как в шахматах - black
и white
). Преимущество этого состоит в том, чтобы свести к минимуму забавные вещи и показать естественное состояние отношений.
Это, конечно, работает только в том случае, если предполагается, что постоянно ограничено игроков - для большинства случаев настольных игр это, вероятно, будет работать нормально ...
Если вы пытаетесь создать игру, в которой верхний предел является изменяемым (по любой причине), вы можете «обнаружить» свободные слоты, доступные с помощью следующего оператора:
INSERT INTO game_players (game_id, player_id)
SELECT VALUES (:GAME_ID, :PLAYER_ID)
WHERE :MAX_PLAYER_COUNT > (SELECT COUNT(*)
FROM game_players
WHERE game_id = :GAME_ID)
Если вы получите код ошибки 100 («Нет выбранных / обновленных строк»), список игроков будет заполнен. Возможно, вам придется добавить другие условия (чтобы игроки не могли присоединиться дважды), но концепция все равно должна работать.