Что такое внешний ключ (foreign key) в SQL?

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

Вот пример:


CREATE TABLE Orders (
  order_id INT PRIMARY KEY,
  customer_id INT,
  order_date DATE,
  FOREIGN KEY (customer_id) REFERENCES Customers(customer_id)
);

CREATE TABLE Customers (
  customer_id INT PRIMARY KEY,
  customer_name VARCHAR(50)
);

В приведенном примере таблица "Orders" имеет столбец "customer_id", который является внешним ключом и ссылается на столбец "customer_id" в таблице "Customers". Это означает, что значения в столбце "customer_id" в "Orders" должны существовать в столбце "customer_id" в "Customers".

Детальный ответ

Что такое FK в SQL?

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

Определение внешнего ключа

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

Например, представим две таблицы: "Студенты" и "Оценки". В таблице "Студенты" есть столбец "ID" как первичный ключ, а в таблице "Оценки" есть столбец "Student_ID", который ссылается на первичный ключ таблицы "Студенты". В этом случае, "Student_ID" будет внешним ключом в таблице "Оценки".


CREATE TABLE Students (
    ID INT PRIMARY KEY,
    Name VARCHAR(50)
);

CREATE TABLE Grades (
    Grade_ID INT PRIMARY KEY,
    Student_ID INT,
    Grade VARCHAR(2),
    
    FOREIGN KEY (Student_ID) REFERENCES Students(ID)
);
    

В приведенном выше примере кода, мы создали две таблицы "Студенты" и "Оценки". В таблице "Оценки" столбец "Student_ID" является внешним ключом, ссылающимся на первичный ключ таблицы "Студенты". Это указывает на то, что каждая запись в таблице "Оценки" должна ссылаться на существующую запись в таблице "Студенты".

Зачем нужен внешний ключ?

Внешние ключи позволяют установить связь между таблицами и обеспечить целостность данных. Они выполняют следующие функции:

  1. Ограничение ссылочной целостности: Внешний ключ гарантирует, что ссылка на другую таблицу будет действительной, то есть существующей записью. Это помогает избежать вставки некорректных значений в таблицу.
  2. Связывание данных: Внешние ключи позволяют связывать данные из разных таблиц, создавая отношения между ними. Это позволяет строить связанные структуры данных и облегчает выполнение сложных запросов.
  3. Обновление и удаление: Внешние ключи определяют, каким образом изменения (обновление или удаление записей) в связанной таблице должны влиять на связанные с ней таблицы. Например, при удалении студента из таблицы "Студенты", связанные с ним оценки также могут быть автоматически удалены (согласно настройкам внешнего ключа).

Типы операций с внешним ключом

Операции, которые можно выполнять с внешним ключом в SQL, включают:

  1. Добавление внешнего ключа: Внешний ключ может быть добавлен в таблицу при создании ее структуры или позже через оператор ALTER TABLE.
  2. Удаление внешнего ключа: Внешний ключ может быть удален из таблицы с помощью оператора ALTER TABLE или DROP CONSTRAINT.
  3. Изменение внешнего ключа: Внешний ключ может быть изменен, например, при необходимости изменить столбец, на который он ссылается.
  4. Ограничения и правила: Внешний ключ может иметь дополнительные ограничения и правила, которые определяют его поведение при вставке, обновлении или удалении записей.

Заключение

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

Видео по теме

Начальный курс SQL.Первичный ключ и внешний ключ Типы связей между таблицами

Первичный ключ, внешний ключ, суррогатный ключ / Илья Хохлов

MySQL: FOREIGN KEYS are easy (kind of)

Похожие статьи:

Что значит SQL в автозвуке: подробный анализ и применение

Что такое внешний ключ (foreign key) в SQL?

Как избежать повторяющихся значений в SQL: советы и трюки

Зачем нужен foreign key SQL и как он повышает эффективность работы с базами данных