Поняття цілісності даних відносини та цілісності даних за посиланнями
Обмеження цілісності даних - це логічний вираз заданий для бази даних, значення якого завжди має бути "істина". Для БД, зазвичай, задається набір обмежень цілісності даних. Якщо значення хоча б одного логічного вираження обмеження цілісності даних набуває значення "брехня", то має місце порушення цілісності даних.
Приклади обмежень цілісності даних:
- серія та номер паспорта унікальні
- номер автомобіля унікальний
- вага, зростання, вік не можуть бути негативним числом
- індекс в Україні складається з 6 цифр
- в одному місті не може бути двох вулиць з однаковою назвою
- не можна видалити клієнта, якщо він має хоча б один платіж
- у відділі може бути не більше одного керівника
- права водія не можуть бути видані людині, яка присутня в групі персон "алкоголіки" або "наркомани"
- переказ грошей з рахунку на рахунок має здійснюватися у вигляді транзакції
Цілісність даних здійснюється за рахунок обмежень цілісності, які задаються одним із наступних способів:
- завдання первинного ключа чи індексу
- завдання типу домену, наприклад UNSIGNED INT, CHAR(6)
- завдання цілісності посилання за зовнішніми ключами: ON DELETE . ON UPDATE.
- тригери: обмеження на вставку, зміна, видалення кортежу
Наведемо приклади порушення цілісності даних.
- в таблиці виявилося два записи про один і той самий елемент даних. Не вказано або неправильно вказано індекси.
- у вік людини виявився негативним — не встановлено обмеження на значення.
- Після видалення користувача залишилися дані про його повідомлення у форумі. Неможливо визначити, кому належать тепер ці повідомлення. Повинні бути заданіобмеження цілісності посилань. Або користувач видаляється з усіма повідомленнями рекурсивно або СУБД повинна забороняти видалення користувачів, які мають повідомлення у форумі.
- ріст людини виявився 500 сантиметрів. Зброю продали людині з непогашеною судимістю. Мав бути заданий тригер, який здійснює відповідну перевірку при вставці нового кортежу.