Поняття логічного і фізичної цілісності даних

Цілісність (від англ. Integrity - незайманість, недоторканність, безпеку, цілісність) - розуміється як правильність даних в будь-який момент часу.

Цілісність БД не гарантує достовірності що міститься в ній інформації, але забезпечує, по крайней мере, правдоподібність цієї інформації, відкидаючи свідомо неймовірні, неможливі значення. Таким чином, не слід плутати цілісність БД з достовірністю БД. Достовірність (або істинність) є відповідність фактів, що зберігаються в базі даних, реального світу. Очевидно, що для визначення достовірності БД потрібно володіння повними знаннями як про вміст БД, так і про реальний світ. Для визначення цілісності БД потрібно лише володіння знаннями про вміст БД і про задані для неї правила. Тому СУБД може (і повинна) контролювати цілісність БД, але принципово не в змозі контролювати достовірність БД. Контроль достовірності БД може бути покладено тільки на людину, та й то в обмежених масштабах, оскільки в ряді випадків люди теж не мають повноти знань про реальний світ.

Отже, БД може бути цілісною, але не достовірною. Можливо і зворотне: БД може бути достовірною, але не цілісною. Останнє має місце, якщо правила (обмеження цілісності) задані невірно. Під цілісністю бази даних в загальному випадку розуміється її готовність до роботи.

Цілісність бази даних має багато аспектів:

- фізична цілісність. тобто збереження інформації на магнітних носіях і коректність форматів даних;

- логічна цілісність. під якою розуміється несуперечливість даних в базі;

- актуальність даних. тобто відповідність даних реальному стану речей.

Втрата цілісності бази даних може статися від збоїв апаратури ЕОМ, помилок в програмному забезпеченні, невірної технології введення і коригування даних, низької достовірності самих даних, і т.д. Тому забезпечити цілісність бази реального обсягу вельми складно. У той же час втрата цілісності даних веде до найсерйозніших наслідків аж до повного навантаження даних бази.

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

Для полів (атрибутів) використовуються наступні види обмежень: тип і формат поля; завдання діапазону значень; неприпустимість порожнього поля; завдання домену; перевірка на унікальність значення будь-якого поля (дозволяє уникнути записів-дублікатів). Обмеження, які використовуються тільки при перевірці допустимості коригування, називають обмеженнями переходу.

Обмеження цілісності, що відносяться до кортежів: або обмеження на значення всього рядка, що розглядається як єдине ціле (природним обмеженням є вимога унікальності кожного рядка таблиці), або обмеження на співвідношення значень окремих полів в межах одного рядка.

Існують обмеження, перевіряючі співвідношення між записами однієї таблиці. Є обмеження, які належать до окремих взаємопов'язаним таблицями, наприклад, обмеження цілісності зв'язку, яке виражається в тому, що значення атрибута, що відображає зв'язок між об'єктами і є зовнішнім ключем відносини, обов'язково має збігатися з одним зі значень атрибута, що є ключем відносини, що описує відповідний об'єкт . Своєрідним видом обмеження є заборона на оновлення. Він може ставитися і до окремого полю, і до всього запису, і до цілої таблиці.

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

Обмеження цілісності поділяють за способом завдання - на явні і неявні. Неявні обмеження визначаються специфікою моделі даних і перевіряються СУБД автоматично. Неявні обмеження зазвичай відносяться до класу синтаксичних обмежень на відміну від семантичних обмежень цілісності, зумовлених специфікою предметної області. Поняття ж цілісності може ставитися і до службової інформації.

Обмеження цілісності класифікуються кількома способами: за способами реалізації; за часом перевірки; по області дії.

За способами реалізації розрізняють: декларативну підтримку обмежень цілісності - засобами мови визначення даних (DDL); процедурну підтримку обмежень цілісності - за допомогою тригерів і збережених процедур.

За часом перевірки обмеження поділяються на: негайно перевіряються обмеження; обмеження з відкладеним перевіркою.

По області дії обмеження поділяються на: обмеження домену; обмеження атрибута; обмеження кортежу; обмеження відносини; обмеження бази даних.

База даних знаходиться в узгодженому стані, якщо для цього стану виконані всі обмеження цілісності.

Транзакція - це неподільна, з точки зору впливу на СУБД, послідовність операцій маніпулювання даними, що виконується за принципом «все або нічого», і переводить базу даних з одного цілісного стану в інший цілісний стан. Транзакція має чотири важливими властивостями, відомими як властивості Асіда: (А) атомарность; (С) узгодженість; (І) ізоляція; (Д) довговічність.

Властивість атомарности (Atomicity) виражається в тому, що транзакція повинна бути виконана в цілому або не виконано зовсім. Властивість узгодженості (Consistency) гарантує, що в міру виконання транзакцій дані переходять з одного узгодженого стану в інше - транзакція не руйнує взаємну узгодженість даних. Властивість ізольованості (Isolation) означає, що конкуруючі за доступ до бази даних транзакції фізично обробляються послідовно, ізольовано один від одного, але для користувачів це виглядає так, як ніби вони виконуються паралельно. Властивість довговічності (Durability) трактується наступним чином: якщо транзакція завершена успішно, то ті зміни в даних, які були нею зроблені, не можуть бути втрачені ні за яких обставин (навіть в разі подальших помилок).

Можливі два варіанти завершення транзакції. Якщо всі оператори виконані успішно та в процесі виконання транзакції не відбулося ніяких збоїв програмного чи апаратного забезпечення, транзакція фіксується. Фіксація транзакції - це дію, що забезпечує запис на диск змін в базі даних, які були зроблені в процесі виконання транзакції. До тих пір поки транзакція не зафіксована, допустимо анулювання цих змін, відновлення бази даних у те стан, в якому вона була на момент початку транзакції. Фіксація транзакції означає, що всі результати виконання транзакції стають постійними. Вони стануть видимими іншим транзакцій тільки після того, як поточна транзакція буде зафіксована. До цього моменту всі дані, які поставлені транзакцією, будуть «видно» користувачеві в стані на початок поточної транзакції. Якщо в процесі виконання транзакції сталося щось таке, що робить неможливим її нормальне завершення, база даних повинна бути повернута в початковий стан. Відкат транзакції - це дію, що забезпечує анулювання всіх змін даних, які були зроблені операторами SQL в тілі поточної незавершеною транзакції. Кожен оператор в транзакції виконує свою частину роботи, але для успішного завершення всієї роботи в цілому потрібно безумовне завершення всіх їх операторів. Групування операторів в транзакції повідомляє СУБД, що вся ця група повинна бути виконана як єдине ціле, причому таке виконання має підтримуватися автоматично.

Поняття транзакції необхідне для підтримки логічної цілісності БД. Кожна транзакція починається при цілісному стані БД і залишає цей стан цілісним після свого завершення.

Схожі статті