Vì vậy, những gì tôi thấy ở đây là một chút mâu thuẫn bởi vì các hiệp đấu không thực sự trực tiếp là một thuộc tính của trò chơi, ngoại trừ một cách gián tiếp. Nhưng có lẽ đó chỉ là tôi. Cá nhân tôi sẽ đề xuất một cái gì đó giống như bảng RunsScored và để nó liên kết trở lại bảng GamesHeader, vì vậy hãy cân nhắc:
CREATE TABLE GamesHeader (
GameID INT IDENTITY(1,1),
HomeTeamID INT, --FK to teams table, naturally
AwayTeamID INT, --FK to teams table, naturally
FinalInningsCount BYTE, -- for faster reporting after the game is over
FinalHomeScore BYTE, -- for faster reporting after the game is over
FinalAwayScore BYTE, -- for faster reporting after the game is over
--Other attribs
)
CREATE TABLE RunsScored (
RunsScoredID BIGINT IDENTITY(1,1), -- for faster reverse traversal, possibly. May not be needed, this depends on your setup, as the normalization will show a composite key anyways
PlayerID INT, --FK to players table naturally
GameID INT, --FK to GamesHeader table naturally
Inning BYTE, --wait for the payoff
RunsEarned, --because you may want to track this by the player ... really the problem is that there's not a single naturalized setup for this, so you may be intersecting this table to another stats table elsewhere. idk, it depends on your model. I'm going for fairly simplistic atm. Wanted to demonstrate something else entirely, but this needs to be accounted for.
-- other attribs
)
SELECT MAX(r.Inning) FROM RunsScored r JOIN GamesHeader g ON g.GameID = r.GameID WHERE GameID = 'x'
Điều đó sẽ cung cấp cho bạn Inning tối đa được chơi cho một trò chơi cụ thể và bạn có thể tinh chỉnh thêm bằng PlayerID -> TeamID để tìm hiểu thêm chi tiết nếu bạn muốn. Những gì có thể là tôi không chắc chắn.
Tôi thực sự có thể tinh chỉnh bảng thứ hai đó không phải là RunsScored mà là một cái gì đó về AtBat bởi vì đó thực sự là những gì bạn đang theo dõi. Tôi chỉ muốn cho thấy làm thế nào bạn có thể làm bất thường hóa các hiệp đấu từ bàn trò chơi. Tôi sẽ điều chỉnh mô hình của mình để lưu chuyển như vậy, đây có phải là dự án của tôi không. HTH. YMMV.
Cũng lưu ý rằng tôi là một người TSQL, nhưng tôi nghĩ các khái niệm được trình bày dưới đây hoạt động khá tốt để giải thích khái niệm của tôi. Ngữ nghĩa ngôn ngữ có lẽ sẽ không xếp hàng.