![]() |
1
5
对于RDBMS,我认为最简单的方法仍然足够灵活以适应大多数情况,是执行以下操作:
要设置初始括号,请将适当的种子相互匹配。当比赛进行时,注意哪个队 结果=获胜者 对于一个特定的比赛,这个队与另一场比赛的胜利者配对。填写括号,直到没有更多的获胜队伍。 |
![]() |
2
10
自然的倾向是按照游戏的顺序看一个括号。从外到内阅读传统的图表。但让我们换个角度来考虑。每场比赛都是两队之间进行的。一个赢,另一个输。 现在,不仅仅是这个。在另一场比赛中,某一对比赛的胜利者相互对峙。所以游戏本身也有关系,不管谁在玩这些游戏。也就是说,在每场比赛中对峙的球队(第一轮除外)是前两场比赛的胜利者。 因此,您可能会注意到,每个游戏前面都有两个“儿童游戏”,并确定在该游戏中谁将面临挑战。这听起来就像一个二叉树:每个根节点最多有两个子节点。如果你知道谁赢了每场比赛,你可以很容易地确定“家长”游戏中的球队。
因此,要设计一个数据库来建模,您实际上只需要两个实体:
另外,正如我前面提到的,你可以很容易地通过看谁赢了前两场比赛来确定在每场比赛中面对面的球队。所以你只需要追踪每场比赛的胜利者。所以,给
现在,播种支架的小问题。也就是说,为第一轮比赛建模。你可以用一个
因此,总体模式是:
当然,你可以将你想要的所有其他信息添加到实体中:位置、分数、结果(以防游戏被没收或其他不正常的情况下赢得)。 |
![]() |
3
2
既然你没有指定RDBMS,我会有一点不同,并且使用CouchDB方法,因为我这个周末读到了这个问题。这是我想出的代表游戏的文档结构。
一个更有趣或更完整的应用程序可能也在某个地方存储了团队、排名等数据。约翰的方法似乎很好地涵盖了这个角度。我欢迎那些对我的沙发技术更了解的人的评论。 |
![]() |
4
2
我用下表创建了一个小系统: 游戏:gameid、tournid、roundid、sequence、date、visitorid、visitorscore、homeid、homescore、winnerid、winnergameid、winnerhome(位) 预测:predid、userid、gameid、predvisitorid、predhomeid、predwinnerid 轮次:圆形,图尔尼,圆形,头部1,头部2 球队:teamid,tournid,gename,seed,moreinfo,url 锦标赛:锦标赛、锦标赛 用户:tournid,用户名 Winnergameid将一个游戏的赢家连接到下一个游戏。winner home告诉你胜利者是下一场比赛的主场还是客场。除此之外,我认为这是非常不言自明的。 |
![]() |
5
1
提出模型Proposed ER Diagram http://img257.imageshack.us/img257/1464/ncaaer.jpg 团队表我们只需要知道一个团队的名字和种子。因此,我们需要一个“团队”表来存储种子值。唯一的候选键是团队名称,所以我们将使用它作为主要的元素来保持简单。NCAA的球队名称不太可能在一场比赛中改变,也不可能包含副本,所以它应该是一把足够的钥匙。 匹配表可以使用“匹配”表将团队配对到每个匹配中。“团队”的外键(fk1、fk2)将确保团队的存在,而这些值的主键将确保团队之间只有一次匹配。 从“匹配”表到“团队”表的外键(FK4)将记录获胜者。从逻辑上讲,获胜者需要是参加比赛的两支球队中的一支。针对主键的检查约束可以确保这一点。 一旦确定了比赛结果,就可以从小组表中检索出胜利者的种子,以便与其他胜利者的种子进行比较,以确定后续的比赛结果。这样做之后,可以将结果匹配的FK(FK3)写入确定匹配,以描述锦标赛的进度(尽管此数据可能在任何时候都可以得到)。 游戏桌我还模拟了每一场比赛的比赛。一个游戏是由比赛来识别的,它是比赛的一部分,是一个序列号,基于比赛中的顺序。游戏有一个队表(fk2)的赢家。分数也可以记录在这个表中。 |
![]() |
6
1
4张表: 团队 (团队、区域、种子) 用户 (用户ID、电子邮件、blablablabla) 支架 (括号、用户ID、点数) 拾取 (bracketid、gameid、team、points)
每个人提交的括号在选择表中都有63行。
括号表中的“点”列可以在每次更新pick表之后更新,以便包含该括号的点的总和。最看重的是排名,不想每次有人想看领导班子的时候再加上排名。 您不需要保留一张包含所有实际玩过的游戏或其结果的表,只需在每次游戏后更新选择表。您甚至可以通过查看pick表中的points列来突出显示正确/错误的pick。 |
![]() |
7
1
在跟踪大量不同等级的预测时:您可以使用67位来跟踪每个游戏的结果。(也就是说,在锦标赛中的67场比赛中,每一场都有一点代表性,1=“A队获胜”,0=“B队获胜”)。要显示任何给定的括号,可以使用非常简单的函数将67位映射到UI。函数知道团队名称及其初始位置,然后在跟踪“bitboard”时通过括号跟踪他们的移动。 |
![]() |
8
-4
我对所有数据库使用相同的模式。
然后在我的代码中:
@1是我正在获取的数据的ID。如果[2]不为空,我再次选择,将@1设置为[2]。 这使得很容易模拟你发布的情况。 |