MySQL композитный уникальный на ФК - PullRequest
3 голосов
/ 25 июля 2011

Вопрос, основанный на этом вопросе Состав MySQL, уникальный для FK

БД MySQL, механизм хранения: InnoDB.

У меня есть план стола:

  1. ID * +1010 *
  2. clubber_id (внешний ключ к таблице clubbers)
  3. event_id (внешний ключ к таблице событий)

Каждый член клуба может создать только один план на событие. То есть clubber_id и event_id в идеале должны быть уникальным составным ключом.

Есть ли смысл создавать такой составной ключ с помощью clubber_id и event_id? У меня уже есть внешние ключи, и уникальность проверяется в моей бизнес-логике.

1 Ответ

2 голосов
/ 25 июля 2011

На самом деле это не производительность, но определение уникального составного ключа для внешних ключей гарантирует уникальность базы данных. Если вы сделаете это, вы можете пропустить проверку в вашей бизнес-логике (если вы справитесь с ситуацией сбоя при попытке добавить дубликат). В общем, проверка уникальности составного ключа в MySQL очень быстрая; выполнение этого в базе данных обычно не является проблемой производительности, и это может немного очистить вашу бизнес-логику, удалив лишнюю проверку. По сути, выполнение такого рода проверки уникальности - это то, что находится в области базы данных; почему бы не позволить вашей базе данных выполнить проверку с ограничением уникальности?

...