Является ли распространенным явное определение * каждого * внешнего ключа при использовании InnoDB в MySQL? - PullRequest
2 голосов
/ 29 марта 2011

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

1 Ответ

6 голосов
/ 29 марта 2011

Никогда, никогда не сдавай правильные данные, никогда. Пожалуйста, сохраните вашу ссылочную целостность.

...