Как ссылочная целостность обеспечивает согласованность базы данных

Ссылочная целостность — это функция базы данных в системах управления реляционными базами данных. Это гарантирует, что отношения между таблицами в базе данных остаются точными, применяя ограничения, чтобы запретить пользователям или приложениям вводить неточные данные или указывать на данные, которые не существуют.

Основной ключ

Первичный ключ таблицы базы данных — это уникальный идентификатор, назначаемый каждой записи. В каждой таблице указан один или несколько столбцов, обозначенных как первичный ключ. Номер социального страхования может быть первичным ключом для списка сотрудников в базе данных, поскольку каждый номер социального страхования уникален.

В зависимости от сложности базовых данных может оказаться полезным использовать составные ключи в качестве первичного ключа. Например, в таблице сотрудников, хотя номер социального страхования работает для идентификации лица, комбинация SSN и даты найма может изолировать конкретные записи сотрудников, если человек присоединился, ушел, а затем снова присоединился к компании.

Внешний ключ

Внешний ключ — это идентификатор в таблице, который соответствует первичному ключу другой таблицы. Внешний ключ создает связь с другой таблицей. Ссылочная целостность относится к отношениям между этими таблицами.

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

Пример правил ссылочной целостности

Рассмотрим, например, ситуацию, когда у вас есть две таблицы: сотрудники и менеджеры. Таблица «Сотрудники» имеет атрибут внешнего ключа «ManagedBy», который указывает на запись для менеджера каждого сотрудника в таблице «Менеджеры». Ссылочная целостность обеспечивает соблюдение следующих трех правил:

  • Вы не можете добавить запись в таблицу «Сотрудники», если атрибут ManagedBy не указывает на допустимую запись в таблице «Менеджеры». Ссылочная целостность предотвращает вставку неверных данных в таблицу. Любая операция, которая не удовлетворяет правилу ссылочной целостности, завершается неудачей.
  • Если первичный ключ для записи в таблице «Менеджеры» изменяется, все соответствующие записи в таблице «Сотрудники» изменяются с помощью каскадного обновления.
  • Если запись в таблице «Менеджеры» удаляется, все соответствующие записи в таблице «Сотрудники» удаляются с помощью каскадного удаления.

Вы, вероятно, не хотите каскадно удалять сотрудников, когда менеджеры уходят. Большая часть работы с базами данных на самом деле не удаляет записи, а деактивирует их. Например, таблицы персонала часто имеют флаг «активный» для обозначения текущей занятости. Когда менеджер уходит, его или ее «активный флаг» устанавливается в ноль — запись не удаляется. Затем, когда назначается новый менеджер, записи сотрудников обновляются, чтобы отразить новое значение внешнего ключа нового менеджера.

Преимущества ограничений ссылочной целостности

Использование системы управления реляционными базами данных со ссылочной целостностью дает несколько преимуществ:

  • Предотвращает ввод дублирующих данных
  • Запрещает одной таблице указывать на несуществующее поле в другой таблице
  • Гарантирует согласованность между «партнерскими» таблицами
  • Предотвращает удаление записи, содержащей значение, на которое ссылается внешний ключ в другой таблице
  • Предотвращает добавление записи в таблицу, которая содержит внешний ключ, если в связанной таблице нет первичного ключа
Ссылка на основную публикацию