我一直在使用MyISAM,并没有定义显式的外键关系,直到最近我决定开始担心引用完整性之类的问题。
我正在开发一个数据库,该数据库存储了战斗事件和战斗人员的统计数据,因此我认为这符合使用InnoDB和显式定义外键的标准。
我有一个fighters表,它有多个外键列。我想知道是否建议总是显式地定义外键关系,而不管表中引用了多少外键?
特别是,对于这个表,我有:
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列的所有外键。这是要走的路吗?或者,出于性能原因,我是否应该以关系完整性为代价限制显式定义的外键的数量?
发布于 2011-03-29 13:39:59
永远不要放弃正确的数据,永远不要。请保持您的引用完整性。
https://stackoverflow.com/questions/5468308
复制相似问题