Mysql 我如何才能最好地调整我的数据库,以记录每次战斗的回合数和战斗结束的回合/分钟数?
我正在存储战斗结束时间的统计数据,如果它真的结束了。并不是所有的战斗都会结束,那些不会成为决定的战斗也不会结束 例如: 北岛通过屈服打败了琼斯 (钥匙锁)在第1轮的2:14 从这段数据中,我想存储3件东西:Mysql 我如何才能最好地调整我的数据库,以记录每次战斗的回合数和战斗结束的回合/分钟数?,mysql,database-design,Mysql,Database Design,我正在存储战斗结束时间的统计数据,如果它真的结束了。并不是所有的战斗都会结束,那些不会成为决定的战斗也不会结束 例如: 北岛通过屈服打败了琼斯 (钥匙锁)在第1轮的2:14 从这段数据中,我想存储3件东西: 如果战斗结束了,结束的时间是什么 如果战斗结束了,它在哪一轮结束 然而,复杂的是,因为我跟踪多个组织的战斗,不是每个组织每轮的分钟数都是一致的,所以我不能为secondsPerRound列一列。因此,我似乎需要创建一个单独的表来跟踪所有可能的回合/分钟组合。。。示例a战斗回合类型表格: id
secondsPerRound
列一列。因此,我似乎需要创建一个单独的表来跟踪所有可能的回合/分钟组合。。。示例a<代码>战斗回合类型<代码>表格:
id organization_id num_rounds
1 9 5
2 10 3
还有一张地图
id fight_rounds__types_id round_num mins
1 1 1 5
2 1 2 5
3 1 3 5
4 1 4 5
5 1 5 5
6 2 1 10
7 2 2 5
8 2 3 5
然后使用这种类型的表模式:
CREATE TABLE `fights` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`event_id` int(10) unsigned DEFAULT NULL,
`winner_id` int(10) unsigned DEFAULT NULL,
`referee_id` int(10) unsigned DEFAULT NULL,
`championship_match` enum('1','0') DEFAULT '0',
`weight_class` int(10) unsigned DEFAULT NULL,
`finish_id` int(10) unsigned DEFAULT NULL,
`loser_id` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `w` (`winner_id`),
KEY `e` (`event_id`),
KEY `f` (`finish_id`),
KEY `l` (`loser_id`),
CONSTRAINT `l` FOREIGN KEY (`loser_id`) REFERENCES `fighters` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `e` FOREIGN KEY (`event_id`) REFERENCES `events` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `f` FOREIGN KEY (`finish_id`) REFERENCES `finishes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `w` FOREIGN KEY (`winner_id`) REFERENCES `fighters` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8
我可以将外键添加到fight\u rounds
id,并用于我想要跟踪的内容:
分钟,如果战斗结束
如果战斗结束,就轮到我了
我将创建一个tinyint列,round\u ended
,该列可以为空,time\u ended
列,以及一个外键引用,fight\u rounds\u types\u id
,它将引用要使用的分钟/轮次规则的类型
我的问题是:
就规范化而言,我的战斗轮次
和分钟轮次
模式是否理想?还是有更好的设计方法
什么列类型可以用于时间\u结束
列?我想跟踪说,2:14
。我现在用的是时间
,这样理想吗
为什么不跟踪两列:finish_round和finish_seconds
然后,无论使用什么系统,您都可以适当地填写它们。我的Fights表中会有总计延时秒数和秒数的列。然后,完成的轮数可以通过前一轮除以后一轮来计算。最后一轮的长度可以通过后一轮的模量计算。一张单独的表格似乎有点过分。与时间结束的
和回合结束的相比有什么区别?除了finish_seconds
带来更多的工作,因为在确定秒数时,我可以简单地跟踪2:14
,例如,额外的计算步骤?但问题是,不是每一轮都有相同的时间。在PRIDE组织中,他们进行了10分钟的首轮比赛和5分钟的后续比赛。。。还有一种可能性是,有一些比赛有这样的定制规则。。。这是整件事的关键…你说“不是所有的战斗都会结束。”你确定吗?好吧,有些人会做出决定,所谓“结束”,我的意思是以一种不依赖于时间流逝的方式结束。