Mysql 跟踪不同季节球队/球员的变化

Mysql 跟踪不同季节球队/球员的变化,mysql,database-design,Mysql,Database Design,考虑下表:赛季、俱乐部、球队和球员 一支球队属于一个俱乐部,有球员,但每个赛季俱乐部的球队和球员都会发生变化。我希望能够跟踪每个赛季俱乐部/球队/球员的所有变化 目前,我创建的关系表如下所示: 季节俱乐部(季节id,俱乐部id) 赛季球队球员(赛季id、球队id、球员id) 球队直接属于俱乐部(有外键栏) 这是实现这一目标的最佳方式,还是为每个赛季创建一个新的俱乐部并将赛季直接存储在俱乐部中更好?我这样做是因为俱乐部的数据在赛季之间不会发生变化,我希望跟踪俱乐部的球队/球员变化,同时跟踪每个球员

考虑下表:赛季、俱乐部、球队和球员

一支球队属于一个俱乐部,有球员,但每个赛季俱乐部的球队和球员都会发生变化。我希望能够跟踪每个赛季俱乐部/球队/球员的所有变化

目前,我创建的关系表如下所示:

季节俱乐部(季节id,俱乐部id)
赛季球队球员(赛季id、球队id、球员id)

球队直接属于俱乐部(有外键栏)

这是实现这一目标的最佳方式,还是为每个赛季创建一个新的俱乐部并将赛季直接存储在俱乐部中更好?我这样做是因为俱乐部的数据在赛季之间不会发生变化,我希望跟踪俱乐部的球队/球员变化,同时跟踪每个球员的球队变化

我希望我的问题有点清楚

提前谢谢

目前,我创建的关系表如下所示:

赛季俱乐部(赛季id,俱乐部id)
赛季球队球员(赛季id、球队id、球员id)

球队直接属于俱乐部(有外键栏)

第二张表格对我来说很有意义:连同你的四张主要表格,这应该提供你需要的所有信息:你知道哪些球员在哪个赛季在哪个球队踢球。你甚至可以看到哪个球队在一个赛季中有任何球员,从中可以得出该赛季存在哪些球队,从俱乐部的钥匙可以得出该赛季哪些俱乐部活跃。所以我认为第一张表没有任何必要,除非你的第二张表不完整,也就是说,有些俱乐部你没有现有球队的数据,或者你不知道个别球员

就性能而言,可能需要更多的冗余,但就优雅而言,上面的方案以及一系列漂亮的视图应该能很好地满足您的需求

这是实现这一目标的最佳方式,还是为每个赛季创建一个新俱乐部并将赛季直接存储在俱乐部中更好


我建议不要这样做,除非您想跟踪俱乐部数据本身的变化,例如地址的变化或其他。如果你能在不同的季节确定同一个俱乐部,而不必比较俱乐部的名字,我会认为这是一个很大的优势。你可能会发现以[赛季俱乐部俱乐部球员]表格的形式接受一定程度的冗余会更简单,但替代版本(赛季俱乐部id,赛季,俱乐部),(赛季俱乐部俱乐部id,赛季俱乐部id,球队id),(赛季俱乐部球队id,球队id),(赛季俱乐部俱乐部id,球员id)-也可以。如果球员在赛季中期更换俱乐部会发生什么?球员不能在赛季中期更换俱乐部