You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在父表games中使用子表teams主键?求最佳实践建议

游戏获胜方标记的数据库设计方案分析

方案一是否有效?

方案一完全有效。每个游戏结束后只会产生一个获胜队伍,在games表新增winner字段存储teams表的主键值,能直接建立游戏与获胜队伍的关联,逻辑清晰,完全能满足查询和数据记录的需求。

哪种是数据库设计的最佳实践?

方案一是更符合最佳实践的选择,原因如下:

  • 从业务逻辑看,“获胜方”是游戏的属性,而非队伍的属性——一个队伍可能参与多场游戏,有的赢有的输,把获胜标记放在games表才更贴合业务本质。
  • 方案二存在数据歧义问题:teams表的is_winner字段无法对应到具体游戏,比如某队伍赢了游戏A、输了游戏B,这个字段根本无法同时准确记录这两种状态,会导致数据混乱。
  • 方案一更符合数据库设计范式:每个表只存储与自身核心属性相关的数据,games表记录游戏的关键信息(包括获胜方),teams表专注记录队伍本身的信息,职责划分清晰,数据一致性更容易维护。
  • 查询效率更高:要获取某场游戏的获胜队伍,直接通过games.winner关联teams表即可,无需额外过滤is_winner字段,避免不必要的逻辑判断。

内容的提问来源于stack exchange,提问作者Rushabh Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:15:16