Ответ
В столбец с ограничением FOREIGN KEY (внешний ключ) нельзя вставить значение, которое отсутствует в связанном столбце PRIMARY KEY или UNIQUE родительской таблицы.
Исключение: Если столбец с внешним ключом допускает NULL, то в него можно вставить NULL, что означает отсутствие связи.
Пример на SQL:
-- Родительская таблица
CREATE TABLE departments (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
-- Дочерняя таблица с внешним ключом
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department_id INT,
CONSTRAINT fk_department
FOREIGN KEY (department_id)
REFERENCES departments(id) -- Ссылается на departments.id
);
-- Допустимые операции:
INSERT INTO departments (id, name) VALUES (10, 'IT');
INSERT INTO employees (id, name, department_id) VALUES (1, 'Alice', 10); -- OK, 10 есть в departments
INSERT INTO employees (id, name, department_id) VALUES (2, 'Bob', NULL); -- OK, если столбец допускает NULL
-- НЕДОПУСТИМАЯ операция вызовет ошибку нарушения внешнего ключа:
INSERT INTO employees (id, name, department_id) VALUES (3, 'Charlie', 99); -- 99 нет в departments.id
Это правило обеспечивает целостность ссылочных данных (referential integrity) в базе.