Использовать внешний ключ в MySQL или не к?

Вот другой тот времени, который получает меня:

static void PrintHowLong(DateTime a, DateTime b)
{
    TimeSpan span = a - b;
    Console.WriteLine(span.Seconds);        // WRONG!
    Console.WriteLine(span.TotalSeconds);   // RIGHT!
}

TimeSpan. Секунды являются частью секунд промежутка (2 минуты, и 0 секунд имеет значение секунд 0).

TimeSpan. TotalSeconds является всем промежутком, измеренным в секундах (2 минуты имеет общее значение секунд 120).

6
задан ire_and_curses 15 December 2009 в 23:27
поделиться

5 ответов

A FOREIGN KEY служит двум целям:

  • Это гарантирует, что вы отношения всегда последовательны в стоимость некоторых проверки накладных
  • Это (спорно) упрощает Каскадированный обновляет и удаляет.

В большинстве случаев эту функцию можно более эффективно реализовать с помощью других инструментов.

3
ответ дан 10 December 2019 в 00:42
поделиться

С помощью внешних ключей вы

  • можете убедиться, что в эти поля помещаются только действительные user_id.
  • использовать каскады при удалении проще, не
  • не нужно определять вручную индексы этих полей (innodb)
1
ответ дан 10 December 2019 в 00:42
поделиться

В некоторых базах данных (не уверен в MySQL) FOREIGN KEY автоматически индексируется, что значительно ускоряет ваши соединения и запросы по внешним ключам. Кроме того, есть уже упомянутые преимущества каскадного удаления, ссылочной целостности и т. Д.

0
ответ дан 10 December 2019 в 00:42
поделиться

То, что вам не хватает, - это принудительная ссылочная целостность (то есть, если ваша другая таблица имеет user_id 27, в таблице пользователей ДОЛЖЕН быть идентификатор 27) и возможность автоматического каскадного обновления и удаления (т.е. если вы удаляете пользователя 27, соответствующие строки в другой таблице также автоматически удаляются и т. д.)

На мой взгляд, это того не стоит. Я вполне способен обеспечить ссылочную целостность своего кодового адреса, а работа с внешними ключами огромная неприятность при обслуживании.

0
ответ дан 10 December 2019 в 00:42
поделиться

Добавление внешних ключей - всегда хорошая идея - по крайней мере, я никогда не видел убедительной причины не использовать их.

  • обеспечивает ссылочную целостность (нельзя удалить родителя, если дочерний существует, не может вставить сирот или дочерний элемент с недопустимым родительским идентификатором)
  • работает как индекс
  • С внешними ключами, независимо от того, как осуществляется доступ к данным: через приложение, автоматизированный процесс или кто-то без кофеина в терминале правила применяются единообразно.
6
ответ дан 10 December 2019 в 00:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: