Понятие внешнего ключа онлайн урок.


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

Рассмотрим пример. Пусть у нас есть две таблицы

  • countries (id, name) - таблица, которая содержит названия стран

  • cities (id, name, country_id) - таблица, которая содержит названия городов, а также значения поля id таблицы countries.


Наполненные таблицы будут выглядеть следующим образом:

countries
+----+---------+
| id | name |
+----+---------+
| 1 | Ukraine |
| 2 | Poland |
| 3 | Belarus |
| 4 | Germany |
+----+---------+

cities
+----+-----------+------------+
| id | name | country_id |
+----+-----------+------------+
| 1 | Kyiv | 1 |
| 2 | Krakov | 2 |
| 3 | Karlsruhe | 4 |
| 4 | Minsk | 3 |
| 5 | Lviv | 1 |
| 6 | Warsaw | 2 |
+----+-----------+------------+

Во второй таблице внешний ключ - это поле country_id, значения которого - это значения поля id в таблице countries. Таким образом мы каждому городу поставили в соответствие свою страну.

Целостность данных в данном случае следует понимать следующим образом: СУБД будет реагировать на попытки изменения поля id некоторой записи (или удаление всей записи) таблицы countries, поскольку значения этого поля задействованы в другой таблице. Как вариант, при удалении записи из таблицы countries, будут удалены те записи таблицы cities, в которых фигурирует удаленное значение из таблицы countries.

Более детально об этом в следующих уроках, которые будут посвящены внешним ключам в MySQL.