【问题标题】:How to design my database with Laravel?如何使用 Laravel 设计我的数据库?
【发布时间】:2018-08-02 19:29:06
【问题描述】:

总的来说,我只是在 Laravel 和 Web 开发方面迈出了第一步。对于我项目的这一步,我正在为锦标赛网站设计数据库。

我最终需要的是:每场比赛都有 3 张地图。每张地图都有每支球队的得分(score_left_team -Map_name - score right team)。而且每场比赛都有总分(left_team_score - right_team_score) 完美例子:https://overwatchleague.com/en-us/match/10223

如何在下面创建正确的关系并改进我的设计?

Team::
 id
 name

Player:: 
 id
 team_id (belongsTo Team::class)
 name

Map:: 
 id
 name
 photo

Match_Map:: 
 id
 map_id (belongsTo Map::class)
 match_id (belongsTo Match::class)
 score_left
 score_right

 Match:: 
  id
  date
  stage_name
  group_name
  left_team_id (belongsTo Team::class)
  right_team_id (belongsTo Team::class)
  score_left
  score_right
  winner (How to create here relationship?)
  status 

感谢任何提示!

【问题讨论】:

  • 您遇到了具体问题吗?如何设计数据库是一个广泛的话题:-)
  • 是的,问题是,我不明白如何建立正确的关系以获得胜利者(从 left_team_id 和 right_team_id 中选择)。

标签: mysql database laravel voyager


【解决方案1】:

看起来相当正确,如果您在创建记录时拥有两支球队的得分,您可以让一个winner_id 作为球队ID 的外键。这可能在match_mapmatch 上。除此之外看起来还不错。

【讨论】:

  • 您能否详细解释一下获奖者的情况。仍然不知道如何建立关系。理想情况下,它应该从 'left_team_id' 和 'right_team_id' 中获取值,这样我就可以选择两支比赛球队中的一支作为获胜者。我不熟悉外键的确切含义。谢谢!
  • 所以 left_team_id 是一个外键,指的是团队表 id 列。如果您在记录之前知道得分,您就可以确定哪支球队的得分更高。 winner_id 也将引用团队表列 ID。
  • 我知道了,但是我在做记录之前不知道分数,这是我不知道如何解决的最大问题。也许我会留下一个 varchar 作为获胜者的价值,并在获得分数后手动添加 team_id。
猜你喜欢
  • 1970-01-01
  • 2013-06-19
  • 1970-01-01
  • 2023-01-02
  • 2019-08-27
  • 1970-01-01
  • 2016-11-26
  • 2021-11-08
  • 2020-11-21
相关资源
最近更新 更多