【发布时间】:2011-03-14 19:09:18
【问题描述】:
我正在为一个用于垒球联盟网站的数据库建模。我在 DB 建模方面没有那么丰富的经验,而且我很难回答有关未来的问题。
现在我有以下表格:
玩家表(player_id、姓名、性别、电子邮件、team_id)
球队表(team_id、姓名、队长[player_id]、标志、wins_Regular_season、loss_regular_season)
regular_season 表(game_id, week, date, home[team_id], away[team_id], home_score, away_score, rain_date)
季后赛表(pgame_id、日期、home[team_id]、away[team_id]、home_score、away_score、winnerTo[pgame_id]、loserTo[pgame_id])
为了使数据在不同季节保持不变,但也有一种简单的方法来访问数据,我应该:
A) 在表中包含一个年份列,然后按年份过滤我的查询? B)每年创建新表? C) 做一些更有意义但我想不到的事情。
【问题讨论】:
-
您不需要团队表中的赢/输 - 您可能会在此处出现完整性问题,并且您已经在
regular_season表和playoff表中记录了赢/输。 -
所以当显示排名页面时,我会查询常规赛季表中的球队参加的比赛以及得分是多少,然后从中计算出输赢记录?每次加载该页面时似乎都需要做很多工作。
-
@Jeremy - 如果您只需要赢/输的计数,那么它只是一个较长的 WHERE 子句,类似于
WHERE (home = XX AND Home_Score > away_Score) OR (away = xx AND away_score > home_score) -
@JNK - 我什至没有想到这一点。谢谢你,这真的很漂亮。
-
@Jeremy - 将这些数据放在两个地方的危险在于您没有在其中一个地方更新它。当您在
teams表中记录了 5 胜 3 负但regular_season表显示 4 胜 4 负时,您是否在regular_season表中记错了一场,或者在teams表中输入错误或两者都有?
标签: sql sql-server