Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中存储锦标赛括号的关系方式是什么?_Sql_Mysql_Database Design_Tree_Relational Database - Fatal编程技术网

在MySQL中存储锦标赛括号的关系方式是什么?

在MySQL中存储锦标赛括号的关系方式是什么?,sql,mysql,database-design,tree,relational-database,Sql,Mysql,Database Design,Tree,Relational Database,现在我有一个比赛表格,每场比赛都有两名参赛者和一名获胜者的参考,但没有办法存储回合的顺序。是否有任何东西阻止您创建名为“回合顺序”的字段?你知道顺序吗?只要在匹配表中存储一个“整数”字段就足够了。您可能希望按相反顺序分配轮数,即:决赛1轮,半决赛2轮,四分之一决赛3轮,以此类推,而不是第一轮1轮,第二轮2轮,以此类推 这样做还有一个额外的优点,即您可以立即从整数中获取信息。例如,查询所有半决赛将非常容易。。。其中轮数=2,并且将独立于锦标赛轮数的总部门。事实上,我不确定我是否同意 如果“匹配”表

现在我有一个比赛表格,每场比赛都有两名参赛者和一名获胜者的参考,但没有办法存储回合的顺序。

是否有任何东西阻止您创建名为“回合顺序”的字段?你知道顺序吗?

只要在匹配表中存储一个“整数”字段就足够了。您可能希望按相反顺序分配轮数,即:决赛1轮,半决赛2轮,四分之一决赛3轮,以此类推,而不是第一轮1轮,第二轮2轮,以此类推


这样做还有一个额外的优点,即您可以立即从整数中获取信息。例如,查询所有半决赛将非常容易。。。其中轮数=2,并且将独立于锦标赛轮数的总部门。

事实上,我不确定我是否同意

如果“匹配”表中有一个“round”字段,则会引入完整性问题的可能性,因为每一轮的表中都有一行(这没有什么意义,因为这是“match”表,所以每个匹配只应有一行)

如果这样做,每一行中可能会有一组不同的参与者,这可能不是您的意图,表明您应该将“四舍五入”输入到不同的表中。引入的其他诚信问题可能是“赢家领域”,例如,如果您在比赛表格中列出了本轮的赢家,您如何知道谁赢得了比赛?如果你只是把比赛的获胜者放在所有的行上,你就失去了关于谁赢了这一轮的信息

为了适当地正常化,创建一个“MatchRound”表

为匹配表提供一个主键(例如称之为Match_Id) 然后你的圆桌会议可以有: Round_Id(自动编号或类似的唯一主键)、Match_Id(匹配表的外键)以及RoundOrder和RoundType(Final、Semi等)。你也可以把赢家和输家加到这张桌子上


虽然半决赛/四分之一决赛等的轮数字段具有双重用途,但只有在比赛中拓扑结构一致时才有效,例如,总有四分之一决赛?例如,有些运动会累积分数,然后只进行决赛。出于这个原因,我只需要创建RoundType文本字段。

括号是否是种子,如网球(或三月疯狂锦标赛)中的括号,如果是,您是否需要回答诸如“在哪一轮,如果有的话,费德勒和纳达尔会相互比赛?”之类的问题,然后您需要将括号存储在数据库中。

也许?这是一个非常简单的工具,用户可以输入参与者姓名,配对,然后可以一次又一次配对每场比赛的获胜者,直到只剩下获胜者。