Подтвердить что ты не робот

Следует ли сделать столбец со ссылкой на внешний стол внешним ключом?

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

Если это внешний ключ? Какими будут преимущества/преимущества?

4b9b3361

Ответ 1

Да. Убедитесь, что у вас нет сироты (запись без родителя), и в зависимости от использования, если вы определяете каскадное удаление, когда родитель удален, все его дети также будут удалены.

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

Ответ 2

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

Вам понравятся преимущества, связанные с внешними ключами:

  • Предполагая правильный дизайн отношений, ограничения внешнего ключа затрудняют программисту введение несогласованности в базу данных.
  • Централизация проверки этих ограничений сервером базы данных делает ненужным выполнение этих проверок на стороне приложения. Это исключает возможность того, что разные приложения могут не проверять ограничения таким же образом.
  • Использование каскадных обновлений и удалений может упростить код приложения.
  • Правильно разработанные правила внешних ключей помогают документировать отношения между таблицами.

Недостатки:

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

Ответ 3

Да, вы должны.

Преимущества (как для любого внешнего ключа):

  • Обеспечивает, чтобы parent_id ссылался на реальную строку в таблице
  • Предотвращает случайное удаление родителя с дочерними элементами или гарантирует, что удаление каскадов также удалит дочерние элементы
  • Предоставляет информацию, которую оптимизатор может использовать

Я не могу представить никаких реальных недостатков.

Ответ 4

Да, вы должны сделать его внешним ключом.

Преимущества будут лучшей моделью данных с меньшей избыточностью.