2011-03-29 47 views
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_idwinner_idevent_id所有外鍵各自表ID列。這是要走的路嗎?還是應該爲了性能原因而限制顯式定義的外鍵的數量,但要以關係完整性爲代價?

回答

6

從來沒有放棄過正確的數據。請保持您的參考完整性。

+0

當你使用MySQL時,你是否總是使用InnoDB?即使MyISAM有專業人士? – 2011-03-29 05:41:10

+0

MyISAM計劃在版本6中添加外鍵約束,但爲了回答你的問題,我使用InnoDB的原因有兩個不同的原因,例如支持事務和外鍵約束。 – 2011-03-29 05:45:15

相關問題