在MySQL中使用InnoDB时,明确定义*every*外键是否常见?

med*_*iev 2 mysql innodb foreign-keys

直到最近,当我决定开始担心参照完整性等时,我一直在使用MyISAM并且没有定义明确的外键关系.

我正在研究一个存储战斗事件,战斗机统计数据的数据库,所以我认为这符合使用InnoDB和明确定义外键的标准.

我有一个战斗机表,其中有多个列是外键.我想知道是否建议始终明确定义外键关系,无论表中引用了多少外键?

特别是,对于这个表我有:

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 NULL,
  `weight_class` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)

我打算做referee_id,winner_id,event_id所有外键各自表ID列.这是要走的路吗?或者,为了性能原因,我是否应该以关系完整性为代价限制明确定义的外键数量?

Mik*_*wis 6

从来没有永远放弃正确的数据.请保持您的参考诚信.