Foreign Key в MySQL: что это такое и как использовать

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

Создание foreign key можно выполнить на уровне создания таблицы или альтернативно через ALTER TABLE. Например, создадим две таблицы users и orders. Таблица users будет содержать пользователей, а таблица orders будет содержать заказы, которые они сделали:


CREATE TABLE users (
  id INT(11) PRIMARY KEY,
  name VARCHAR(50),
  email VARCHAR(50)
);
CREATE TABLE orders (
  id INT(11) PRIMARY KEY,
  user_id INT(11),
  order_date DATE,
  FOREIGN KEY (user_id) REFERENCES users(id)
);

Приведенный выше код создает две таблицы, связанные между собой через foreign key. Ключ user_id в таблице orders связан с ключом id в таблице users.

Теперь, когда foreign key создан, вы не можете вставить запись в таблицу orders, если соответствующий пользователь не существует в таблице users. Если попытка вставки такой записи все же происходит, MySQL выдаст ошибку.

Вот несколько примеров использования foreign key:

1. Делегирование удаления. Когда у нас есть две связанные таблицы, мы может делегировать удаление соответствующих записей MySQL. Например, если пользователь был удален, все его связанные заказы будут автоматически удалены:


CREATE TABLE orders (
  id INT(11) PRIMARY KEY,
  user_id INT(11),
  order_date DATE,
  FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

2. Создание связь многие-ко-многим. Foreign key также может использоваться для создания связи многие-ко-многим, используя промежуточную таблицу:


CREATE TABLE authors (
  id INT(11) PRIMARY KEY,
  name VARCHAR(50)
);
CREATE TABLE books (
  id INT(11) PRIMARY KEY,
  title VARCHAR(50)
);
CREATE TABLE author_books (
  author_id INT(11),
  book_id INT(11),
  FOREIGN KEY (author_id) REFERENCES authors(id),
  FOREIGN KEY (book_id) REFERENCES books(id)
);

3. Использование индексов. Foreign key использует индексы, чтобы обеспечить скорость выполнения запросов. Если вы часто используете join операции, foreign key может существенно ускорить их выполнение.

В целом, foreign key является мощным механизмом для обеспечения целостности данных в MySQL, который помогает избежать ошибок и обеспечивает эффективность выполнения запросов на выборку данных из связанных таблиц.

Похожие вопросы на: "foreign key mysql "

Java Super - ускоренное обучение языку программирования Java
Создание и настройка Slider на JavaScript
Что такое varchar и как его использовать в программировании и базах данных
Bootstrap Select: Создание красивых выпадающих списков и селекторов форм в Bootstrap 5
Creating the Perfect Address Line: Tips and Tricks
Как узнать версию Python на своем компьютере?
Работа с функцией "COUNT" в SQL
Assembler mul - эффективная операция умножения в ассемблере
OpenJDK 17
Mastering the Input Value Feature: Boosting User Experience and Functionality