[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-bazy-dannykh-chto-takoe-vneshniy-klyuch":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":17,"progress":18,"seo":19},1133,"chto-takoe-vneshniy-klyuch",35,"bazy-dannykh","Базы данных","🗄️","Что такое внешний ключ?","Внешний ключ (foreign key) — атрибут или набор атрибутов таблицы, значения которых ссылаются на потенциальный ключ (обычно первичный) другой таблицы, устанавливая связь между записями двух таблиц.\n\n> Аналогия из жизни: внешний ключ — это как номер паспорта в договоре. Сам паспорт (запись) хранится в таблице «Люди», а в договоре указан только номер для ссылки на конкретного человека.\n\n### Назначение внешнего ключа\n\n- Обеспечение ссылочной целостности (referential integrity) — нельзя сослаться на несуществующую запись\n- Определение связей между таблицами (один-к-одному, один-ко-многим)\n- Каскадное обновление и удаление связанных данных\n\n### Пример\n\n```sql\nCREATE TABLE orders (\n    id BIGINT PRIMARY KEY,\n    user_id BIGINT NOT NULL,\n    amount DECIMAL(10,2),\n    FOREIGN KEY (user_id) REFERENCES users(id)\n        ON DELETE CASCADE\n        ON UPDATE CASCADE\n);\n```\n\n### Действия при удалении\u002Fобновлении родительской записи\n\n| Стратегия | Поведение |\n|-----------|-----------|\n| CASCADE | Удалить\u002Fобновить все дочерние записи |\n| SET NULL | Установить FK в NULL |\n| SET DEFAULT | Установить FK в значение по умолчанию |\n| RESTRICT | Запретить удаление\u002Fобновление, если есть дочерние записи |\n| NO ACTION | Аналогично RESTRICT, но проверка отложена до конца транзакции |\n\n> **На собеседовании:** интервьюер хочет услышать, что внешний ключ обеспечивает ссылочную целостность на уровне СУБД. Частая ошибка — считать, что FK автоматически создаёт индекс (в PostgreSQL — нет, нужно создавать вручную).","","junior",[15,16],"databases","основы",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":34,"featuredSnippetReady":35},"Что такое внешний ключ (foreign key) — Gymterview","Внешний ключ (foreign key): определение, назначение, ссылочная целостность, стратегии CASCADE, SET NULL, RESTRICT. Пример создания FK в SQL.","Внешний ключ (foreign key): определение и стратегии — Gymterview","Что такое внешний ключ, ссылочная целостность, стратегии ON DELETE\u002FUPDATE: CASCADE, SET NULL, RESTRICT.",[25,26,27,28,29,30,31,32,33],"внешний ключ","foreign key","ссылочная целостность","CASCADE","RESTRICT","SET NULL","referential integrity","SQL","Java","Внешний ключ (foreign key) — атрибут или набор атрибутов таблицы, значения которых ссылаются на потенциальный ключ другой таблицы, устанавливая связь между записями. Обеспечивает ссылочную целостность на уровне СУБД. Стратегии при удалении\u002Fобновлении: CASCADE, SET NULL, SET DEFAULT, RESTRICT, NO ACTION.",true]