Посилальна цілісність - це функція бази даних у системах управління реляційними базами даних. Це гарантує, що відносини між таблицями в базі даних залишаються точними, застосовуючи обмеження, щоб заборонити користувачам або додаткам вводити неточні дані або вказувати на дані, які не існують.
Основний ключ
Первинний ключ таблиці бази даних є унікальним ідентифікатором кожного запису. У кожній таблиці вказано один або декілька стовпчиків, позначених як первинний ключ. Номер соціального страхування може бути первинним ключем для списку співробітників у базі даних, оскільки кожен номер соціального страхування унікальний.
Залежно від складності базових даних може бути корисним використовувати складені ключі як первинний ключ. Наприклад, у таблиці співробітників, хоча номер соціального страхування працює для ідентифікації людини, комбінація SSN і дати найму може ізолювати конкретні записи співробітників, якщо людина приєдналася, пішла, а потім знову приєдналася до компанії.
Іноземний ключ
Зовнішній ключ є ідентифікатором у таблиці, який збігається з первинним ключем іншої таблиці. Зовнішній ключ створює зв'язок з іншою таблицею. Посилальна цілісність відноситься до відносин між цими таблицями.
Коли одна таблиця має зовнішній ключ до іншої таблиці, концепція посилальної цілісності свідчить, що ви не можете додати запис до таблиці, яка містить зовнішній ключ, якщо в зв'язаній таблиці немає відповідного запису. Він також включає методи, відомі як каскадне оновлення і каскадне видалення, які гарантують, що зміни, внесені в пов'язану таблицю, будуть відображені в первинній таблиці.
Приклад правил посилальної цілісності
Розглянемо, наприклад, ситуацію, коли у вас є дві таблиці: співробітники і менеджери. Таблиця «Співробітники» має атрибут зовнішнього ключа «ManagedBy», який вказує на запис для менеджера кожного співробітника в таблиці «Менеджери». Посилальна цілісність забезпечує дотримання наступних трьох правил:
- Ви не можете додати запис до таблиці «Співробітники», якщо атрибут ManagedBy не вказує на допустимий запис у таблиці «Менеджери». Посилальна цілісність запобігає вставленню неправильних даних у таблицю. Будь-яка операція, яка не задовольняє правила посилальної цілісності, завершується невдачею.
- Якщо первинний ключ для запису в таблиці «Менеджери» змінюється, всі відповідні записи в таблиці «Співробітники» змінюються за допомогою каскадного оновлення.
- Якщо запис у таблиці «Менеджери» видаляється, всі відповідні записи в таблиці «Співробітники» видаляються за допомогою каскадного видалення.
Ви, ймовірно, не хочете каскадно видаляти співробітників, коли менеджери йдуть. Велика частина роботи з базами даних насправді не видаляє записи, а деактивує їх. Наприклад, таблиці персоналу часто мають прапор «активний», щоб вказати поточну зайнятість. Коли менеджер йде, його або її «активний прапор» встановлюється в нуль - запис не видаляється. Потім, коли призначається новий менеджер, записи співробітників оновлюються, щоб відобразити нове значення зовнішнього ключа нового менеджера.
Переваги обмежень посилальної цілісності
Використання системи управління реляційними базами даних із посилальною цілісністю дає кілька переваг:
- Запобігає введенню дублюючих даних
- Забороняє одну таблицю вказувати на неіснуюче поле в іншій таблиці
- Гарантує узгодженість між «партнерськими» таблицями
- Запобігає видаленню запису, що містить значення, на яке посилається зовнішній ключ в іншій таблиці
- Запобігає додаванню запису до таблиці, яка містить зовнішній ключ, якщо у зв'язаній таблиці немає первинного ключа
