Все или почти все слышали что есть такое понятие как внешний ключ, но не все его умеют использовать. Поэтому я выкину теорию “зачем это нужно” и “на сколько это полезно” и сразу перейду к практике. Давайте разберемся что нам необходимо для создания внешнего ключа в MySQL:
1. Движок(engine) обеих связываемых таблиц должен быть InnoDB.
2. Связываемые поля должны быть проиндексированы и иметь один тип ( размер и знак должен быть один )
Из основного это все.
Теперь синтаксис взятый из официального мануала:
[CONSTRAINT [symbol
]] FOREIGN KEY [index_name
] (index_col_name
, ...) REFERENCEStbl_name
(index_col_name
,...) [ON DELETEreference_option
] [ON UPDATEreference_option
]reference_option
: RESTRICT | CASCADE | SET NULL | NO ACTION
Где:
symbol
- имя ключаindex_name
- имя поля в таблице, которое мы хотим сделать ключомtbl_name - таблица, с которой осуществляем связывание index_col_name - имя поля, с которым связываем наш ключ reference_option - какое действие осуществляем в случае чего
Для пользователей phpmyadmin все это можно осуществить кнопочкой Relation view в структуре таблицы, в которой хотим задать внешний ключ.
Дальше только выбрать что мы с чем хотим связать и какие действия выполнять в случае удаления или обновления одной записи из связки.