Tôi đang làm việc trên trò chơi trên bảng trò chơi muiltiplayer trực tuyến & có câu hỏi về máy chủ SQL.Cách thực thi mối quan hệ 1 đến n
Giả sử trò chơi cho phép hai người chơi. Khi trò chơi được tạo, người tạo sẽ được thêm làm người dùng đầu tiên.
Tại thời điểm đó, hai người dùng có thể thử tham gia trò chơi cùng một lúc. Một trong những người dùng này sẽ bị chặn.
schema cơ sở dữ liệu của tôi là như sau:
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.
Tôi cảm thấy như tôi cần hai điều:
- Một cách để khóa tbPlayersInGame dựa trên GameId. Điều này sẽ được sử dụng trong khi thêm người chơi vào trò chơi. Từ những gì tôi đã đọc nó âm thanh giống như một khóa tầm quan trọng (trên GameId) sẽ phù hợp.
- Cách để thực thi mối quan hệ 1 đến 2 để nỗ lực thêm người chơi thứ 3 sẽ không thành công.
Tôi đã sử dụng phương pháp này. Truy vấn là một cái gì đó như: 'SET GIAO DỊCH cô lập CẤP SERIALIZABLE BEGIN TRANSACTION IF (SELECT COUNT (*) FROM PlayersInGame ĐÂU GameId = @GameId
Buurin