Я использую 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
всеми внешними ключами для столбцов идентификаторов соответствующих таблиц.Это путь?Или я должен ограничить количество явно определенных внешних ключей по соображениям производительности за счет целостности отношений?