Внешний ключ: что это такое и как использовать в базах данных
Внешний ключ (Foreign Key) – это понятие, используемое для описания отношения между двумя таблицами в реляционной базе данных. В соответствии с этим понятием, в таблице, которая находится в отношении с другой таблицей, имеется столбец, соответствующий столбцу первичного ключа таблицы, к которой устанавливается отношение.
Конкретный пример можно рассмотреть на базе данных для онлайн магазина. В БД могут быть две таблицы: категории товаров и сами товары. В таблице категорий будет первичный ключ (категория_id), а в таблице товаров вместо полного названия категории можно хранить только id (категория_id), который будет ссылаться на id категории из первой таблицы.
Пример создания внешнего ключа в MySQL:
CREATE TABLE `Категории` (
`Категория_id` INT(11) NOT NULL AUTO_INCREMENT,
`Название_категории` VARCHAR(255) NOT NULL,
PRIMARY KEY (`Категория_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `Товары` (
`Товар_id` INT(11) NOT NULL AUTO_INCREMENT,
`Название_товара` VARCHAR(255) NOT NULL,
`Цена` DECIMAL(10, 2) NOT NULL,
`Категория_id` INT(11) NOT NULL,
PRIMARY KEY (`Товар_id`),
CONSTRAINT `Товары_Категории_fk` FOREIGN KEY (`Категория_id`) REFERENCES `Категории` (`Категория_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Данный код создаст две таблицы: "Категории" и "Товары", а также создаст связь между ними, где поле "Категория_id" таблицы "Товары" связано со столбцом "Категория_id" таблицы "Категории".
Внешние ключи позволяют поддерживать целостность данных в базе и делать более глубокие запросы к БД. Без использования внешних ключей возможны ошибки при удалении или изменении данных, что может привести к нарушению целостности базы данных.