FOREIGN в Oracle SQL — как задавать внешние ключи

🟢 FOREIGN в Oracle SQL. Введение

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

С его помощью можно:

  • привязать одну таблицу к другой

  • запретить удаление или изменение родительских записей

  • гарантировать согласованность ссылок


🔤 Написание

sql
FOREIGN KEY (child_column) REFERENCES parent_table(parent_column)

Можно указывать внутри CREATE TABLE или с помощью ALTER TABLE.


🔄 Где используется

  • При моделировании связей «один ко многим»

  • Для обеспечения целостности между заказами и пользователями, заказами и товарами

  • В ER-моделировании

  • При миграциях и импорте данных

  • Для запрета «висячих ссылок»


🧪 10 Примеров использования

1️⃣ Создание таблицы со внешним ключом

sql
CREATE TABLE employees (
employee_id NUMBER PRIMARY KEY,
department_id NUMBER,
CONSTRAINT fk_dept FOREIGN KEY (department_id)
REFERENCES departments(department_id)
);

2️⃣ Добавление внешнего ключа через ALTER TABLE

sql
ALTER TABLE orders
ADD CONSTRAINT fk_customer
FOREIGN KEY (customer_id) REFERENCES customers(customer_id);

3️⃣ FOREIGN KEY без имени — будет сгенерировано автоматически

sql
CREATE TABLE orders (
order_id NUMBER PRIMARY KEY,
customer_id NUMBER REFERENCES customers(customer_id)
);

4️⃣ Множественные внешние ключи в таблице

sql
CREATE TABLE order_items (
order_id NUMBER,
product_id NUMBER,
FOREIGN KEY (order_id) REFERENCES orders(order_id),
FOREIGN KEY (product_id) REFERENCES products(product_id)
);

5️⃣ Внешний ключ с ON DELETE CASCADE

sql
ALTER TABLE orders
ADD CONSTRAINT fk_cust
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
ON DELETE CASCADE;

6️⃣ Попытка удалить родителя с зависимыми строками — ошибка

sql
DELETE FROM customers WHERE customer_id = 1;
-- ORA-02292: целостность нарушена — существует дочерняя запись

7️⃣ Использование FOREIGN в ER-диаграммах

Схемы визуализируют внешние ключи стрелками от дочерней к родительской таблице.


8️⃣ FOREIGN с составным ключом

sql
FOREIGN KEY (col1, col2) REFERENCES parent_table(col1, col2)

9️⃣ Проверка внешних ключей в метаданных

sql
SELECT constraint_name, table_name
FROM user_constraints
WHERE constraint_type = 'R';

🔟 Удаление внешнего ключа

sql
ALTER TABLE orders DROP CONSTRAINT fk_customer;

🧩 Заключение

FOREIGN — один из важнейших инструментов поддержания связности и надёжности данных в Oracle SQL. Он позволяет контролировать логические связи и избегать «потерянных» или «висячих» записей.

💡 Запомни:

  • FOREIGN KEY ссылается на первичный или уникальный ключ

  • Можно использовать ON DELETE CASCADE для автoудаления

  • Внешний ключ может быть одиночным или составным

  • Обязательно создаётся индекс на родительский столбец


🔜 Следующая статья:

FOR в Oracle SQL — как управлять циклами и итерациями в PL/SQL


 

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии