Burada gördüğüm şey biraz çelişkili, çünkü inning dolaylı hariç, gerçekten doğrudan oyunların bir özelliği değil. Ama belki bu sadece benim. Şahsen bir RunsScored tablosu gibi bir şey önermek ve geri bir çeşit GamesHeader tabloya bağlantı var, bu yüzden düşünün:
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'
Bu size belirli bir oyun için oynanan maksimum Inning'i verir ve isterseniz daha fazla ayrıntı bulmak için PlayerID -> TeamID ile daha da hassaslaştırabilirsiniz. Bunlar ne olabilir emin değilim.
Muhtemelen ikinci tabloyu RunsScored değil, AtBat hakkında bir şey olacak şekilde geliştiririm çünkü gerçekten izlediğiniz şey budur. Sadece oyun masasından tonlamayı nasıl denormalize edebileceğinizi göstermek istedim. Modelimi böyle akacak şekilde düzenlerdim, bu benim projem olsaydı. HTH. YMMV.
Ayrıca TSQL'li bir adam olduğumu unutmayın, ancak aşağıda ifade edilen kavramların konseptimi açıklamak için oldukça iyi çalıştığını düşünüyorum. Dil semantiği muhtemelen sıraya girmez.