2
我一直在使用MyISAM,直到最近我決定開始擔心引用完整性等問題時才定義顯式外鍵關係。在MySQL中使用InnoDB時,顯式定義每個外鍵是否很常見?
我正在處理存儲戰鬥事件,戰士等統計數據的數據庫,所以我認爲這符合使用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時,你是否總是使用InnoDB?即使MyISAM有專業人士? – 2011-03-29 05:41:10
MyISAM計劃在版本6中添加外鍵約束,但爲了回答你的問題,我使用InnoDB的原因有兩個不同的原因,例如支持事務和外鍵約束。 – 2011-03-29 05:45:15