我一直在使用 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
我计划将 referee_id
、winner_id
、event_id
设为各自表 id 列的外键。这是要走的路吗?或者,出于性能原因,我应该以关系完整性为代价限制显式定义的外键数量?
最佳答案
永远、永远不要放弃正确的数据,永远。请保持引用完整性。
关于mysql - 在 MySQL 中使用 InnoDB 时,显式定义*每个*外键是否很常见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5468308/