Поняття цілісності даних відносини та цілісності даних за посиланнями

Обмеження цілісності даних - це логічний вираз заданий для бази даних, значення якого завжди має бути "істина". Для БД, зазвичай, задається набір обмежень цілісності даних. Якщо значення хоча б одного логічного вираження обмеження цілісності даних набуває значення "брехня", то має місце порушення цілісності даних.

Приклади обмежень цілісності даних:

  • серія та номер паспорта унікальні
  • номер автомобіля унікальний
  • вага, зростання, вік не можуть бути негативним числом
  • індекс в Україні складається з 6 цифр
  • в одному місті не може бути двох вулиць з однаковою назвою
  • не можна видалити клієнта, якщо він має хоча б один платіж
  • у відділі може бути не більше одного керівника
  • права водія не можуть бути видані людині, яка присутня в групі персон "алкоголіки" або "наркомани"
  • переказ грошей з рахунку на рахунок має здійснюватися у вигляді транзакції

Цілісність даних здійснюється за рахунок обмежень цілісності, які задаються одним із наступних способів:

  • завдання первинного ключа чи індексу
  • завдання типу домену, наприклад UNSIGNED INT, CHAR(6)
  • завдання цілісності посилання за зовнішніми ключами: ON DELETE . ON UPDATE.
  • тригери: обмеження на вставку, зміна, видалення кортежу

Наведемо приклади порушення цілісності даних.

  • в таблиці виявилося два записи про один і той самий елемент даних. Не вказано або неправильно вказано індекси.
  • у вік людини виявився негативним — не встановлено обмеження на значення.
  • Після видалення користувача залишилися дані про його повідомлення у форумі. Неможливо визначити, кому належать тепер ці повідомлення. Повинні бути заданіобмеження цілісності посилань. Або користувач видаляється з усіма повідомленнями рекурсивно або СУБД повинна забороняти видалення користувачів, які мають повідомлення у форумі.
  • ріст людини виявився 500 сантиметрів. Зброю продали людині з непогашеною судимістю. Мав бути заданий тригер, який здійснює відповідну перевірку при вставці нового кортежу.