Основы внешних ключей в MySQL?

Есть ли хорошее объяснение того, как использовать внешний ключ MySQL?

Я не совсем понимаю это из самих документов MySQL. До сих пор я занимался такими вещами, как foreign keys, со связками и программным кодом.

И вторая часть вопроса, есть ли какие-либо улучшения, связанные с использованием встроенных внешних ключей MySQL?

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

Например, представьте, что вы программируете форум. У вас есть таблица «тем» с основными ключевыми topics.topic_id , и у вас есть таблица «posts», где сообщения прикрепляются к темам с помощью столбца posts.topic_id , который является внешним ключом в таблице тем.

Это отношение внешнего ключа гарантирует, что каждое сообщение прикреплено к действительной теме. Если у вас есть только одна тема, у вас есть ID # 1, невозможно создать пост в базе данных, прикрепленной к теме №2. База данных обеспечивает это.

Для каскадного преимущества вы можете настроить его так, чтобы, если тема была удалена из таблицы тем, firebase database автоматически удаляет все сообщения в таблице сообщений, которые были прикреплены к этой теме. Это хорошо, потому что он удаляет шаг, который вы должны помнить, делать вручную, что может стать довольно сложным, если у вас много таблиц, связанных друг с другом. С внешними ключами все отношения могут быть очищены автоматически.

1.FOREIGN KEYS просто гарантируют, что ваши данные будут согласованы.

2. Если мы применим к каскаду delete к определению внешнего ключа, ссылка на строку будет автоматически удаляться при удалении родительской строки.

3. Если мы применим обновление Update Cascade к определению внешнего ключа, дочерняя строка будет обновляться автоматически при обновлении родительской строки.

Запрос: ALTER TABLE дочерний ADD FOREIGN KEY (parent_id) ССЫЛКИ parent (id) ON UPDATE CASCADE ON DELETE CASCADE;

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

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

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

Это действительно отличная функция, использующая ваш код.

Interesting Posts

Как заставить Windows XP привязать окна к рабочему столу, например Vista?

Как объединить правила фильтрации в фильтрах сообщений в Thunderbird для создания более продвинутых критериев фильтра?

Ansible: фильтровать список по его атрибутам

Как проверить блокировку файлов?

Как использовать Container вместо ObjectFactory в StructureMap ServiceActivator?

MS Security Essentials не обновляется автоматически

Что вы делаете, когда вам нужен поиск целых слов в Firefox?

Как вы можете вводить пробелы с помощью scanf?

Как узнать, можно ли безопасно открывать файлы xlsx и docx?

Сбрасывание с RecyclerView + AppBarLayout

Аутентификация с помощью OAuth2 для приложения * и * веб-сайта

Повторить задачу несколько раз на основе пользовательского ввода в случае исключения в задаче

Как изменить / удалить нижнюю панель в Mac OS X?

MySQL – запрос UPDATE на основе запроса SELECT

Правильная идиома для управления несколькими связанными ресурсами в блоке try-with-resources?

Давайте будем гением компьютера.