Sql 在DB中存储列表的解决方法-有什么想法吗?

Sql 在DB中存储列表的解决方法-有什么想法吗?,sql,Sql,我正在为我的曲棍球队创建一个数据库,存储各种统计数据。我特别想问的是如何存储每个玩家玩的游戏 我将深入了解有关统计数据的详细信息,在这些信息中,我将能够优化搜索,以查看任何玩家都玩过哪些特定游戏(因此,不可能简单地为玩过的总游戏设置一个通用整数-我需要追溯到每一场游戏) 我有一个玩家和游戏桌(游戏的日期是桌上游戏的PK,因为在给定的一天只能玩一场游戏,而球衣是桌上游戏的PK,因为即使在玩家离开球队后也不允许重复使用数字),这对我来说是一个诱惑,只要在游戏桌里存储一个列表,列出在那场比赛中谁在场,

我正在为我的曲棍球队创建一个数据库,存储各种统计数据。我特别想问的是如何存储每个玩家玩的游戏

我将深入了解有关统计数据的详细信息,在这些信息中,我将能够优化搜索,以查看任何玩家都玩过哪些特定游戏(因此,不可能简单地为玩过的总游戏设置一个通用整数-我需要追溯到每一场游戏)

我有一个玩家和游戏桌(游戏的日期是桌上游戏的PK,因为在给定的一天只能玩一场游戏,而球衣是桌上游戏的PK,因为即使在玩家离开球队后也不允许重复使用数字),这对我来说是一个诱惑,只要在游戏桌里存储一个列表,列出在那场比赛中谁在场,但这是一个糟糕的做法

有人对如何存储每位玩家玩的游戏有什么想法吗

我曾想过制作一个“WhosPresent”表,我可以将玩家和游戏日期作为列,并为每个玩家存储一个“礼物”或“客场”值,但随后出现了一个问题,人们可能会离开团队,或者新玩家将添加到团队中,这会弄乱表列


任何想法都将不胜感激

在我看来,您应该有一个GamePlayers表,将您的Players表与您的Games表关联起来。您可以存储一个“present”或“not present”标志,也可以在玩家在场时填充他们的表,这意味着不浪费空间。也就是说,如果玩家在GamePlayers表中没有条目,那么你已经知道他们不存在了。我假设大多数统计数据都是以个人级别和每场比赛为基础的,因此它们也可能存在于GamePlayers表中,并且您可能有单独保存的团队级别统计数据,或者通过聚合GamePlayers表中的结果来计算

如果您希望遵循规范化规则并避免嵌套表(列表方法),那么确实需要GamePlayers表(WhosPresent表)。如果您想跟踪哪个玩家在哪个时段玩游戏,您甚至可以将其扩展到GamePeriodPlayer。您的GamePlayer表还可以有GameID、PlayerID、Period1、Period2、Period3列,其中period列可以是true/false,也可以是整数来跟踪每个时段玩的分钟数。我同意Tim的观点,这是映射表的典型用例。您可能还想考虑游戏的ID,而不是仅仅使用日期。如果你参加比赛,你在一天中可能有不止一场比赛。另外,我也遇到过这样的情况,一场比赛必须重新安排,结果一天中会有不止一场比赛。只是一个想法…谢谢大家的意见!这就是我想我必须要做的,只是想看看我是否遗漏了什么。每个人似乎都同意这个观点,所以我选择了这个答案。再次感谢!