gpt4 book ai didi

MySQL::Edge Case::混合类型外键::可能还是做梦?

转载 作者:行者123 更新时间:2023-11-30 23:37:42 24 4
gpt4 key购买 nike

有一个我希望解决的边缘案例。

我们运行一份体育报告,其中记录了可能涉及非联赛/非名单对手的拳击得分结果等统计数据。我的意思是,在某些情况下,Foo 对手在我们的系统中没有名册(他们也永远不会)。

与其简单地省略对手球队的任何统计数据,所有者很久以前就要求我们内置允许输入球员姓名的选项(相对于从现有名单的球员姓名下拉列表中选择 [playerID]) .因此,我们的名册表有一个 int playerID PK 列,但我们的统计表(进攻和防守)有 varchar playerID 列。

这允许我们在花名册表上进行外部连接,并获取匹配的记录,无论球队花名册是否存在(如果不存在,我们只需打印出 varchar stat 表 playerID 作为球员的名字)。肯定是被黑了,但确实有用。

现在,我在结果表和统计表之间有一个 FK,所以如果一个游戏结果被删除,相关的统计数据也会被删除。然而,我们缺少一个重要的约束条件:名册 >> 统计数据。由于 playerID 列类型不匹配,我无法添加我需要填充约束间隙的 FK(即从名册中删除一名球员,他/她的所有统计数据都将被孤立,不好)。

关于如何解决这个问题有什么想法吗?

最佳答案

我的经验是,这是开发人员会遇到的问题,但在实践中通常不会出现太多。

删除玩家是实际用例吗?用户是否想返回查看游戏而不是看到“历史”玩家名称?

我建议进行两个更改:

  1. 标记玩家不活跃,然后你可以用某种方式显示他们不活动标志的名称,而不是删除。
  2. 在统计表中添加一个 StatsPlayerName 列,并将所有“文本”玩家名称从 playerID 列移到其中。然后,统计数据应具有 playerID 或 StatPlayerName。现在,您可以进行加入,如果 RosterPlayerName 为空,则显示 StatsPlayerName。这将使您可以在 playerID 上添加外键约束。

关于MySQL::Edge Case::混合类型外键::可能还是做梦?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6162906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com