Розділ 5. ТЕХНОЛОГІЯ СТВОРЕННЯ І ВЕДЕННЯ БАЗИ ДАНИХ
5.1. МЕТОДИ ЗАБЕЗПЕЧЕННЯ ЦІЛІСНОСТІ БАЗИ ДАНИХ
Технологія створення та підтримування бази даних в актуальному стані повинна бути спроектована таким чином, щоб забезпечити цілісність бази даних. Поняття цілісності в широкому розумінні цього слова — це забезпечення достовірності та узгодженості даних у базі даних у будь-який момент часу її функціонування.
Розрізняють такі поняття, як фізична, логічна, семантична та синтаксична цілісність даних. Забезпечення фізичної цілісності даних — це засоби захисту бази даних від пошкоджень і руйнування при збоях обладнання. Засоби захисту від некоректного внесення змін — це забезпечення логічної цілісності даних. Семантична цілісність даних — це захист цілісності окремих даних, файлів і зв'язків між ними, яка залежить від специфіки предметної області. Синтаксична цілісність — це так звані внутрішні, неявні її обмеження, які залежать від типу логічної моделі даних і вибраної СУБД.
Неявні обмеження мають синтаксичний характер і пов'язані зі специфікою структури логічної моделі даних. Ці обмеження цілісності виконуються СУБД автоматично. Наприклад, у ієрархічних моделях може бути лише один корінь, кожний породжений вузол має лише один фізично вихідний вузол і т.п. Невиконання неявного обмеження, оскільки воно пов'язане зі структурами зберігання даних, сприймається як порушення коректності структури. Діапазон цих обмежень досить вузький, і структуризований опис логічної моделі не завжди узгоджується із семантикою предметної області, яка відображується в базі даних. Тому існують так звані, явні, чи семантичні, обмеження цілісності, які доповнюють неявні обмеження.
Забезпечення цілісності стосується всіх складових елементів: окремих атрибутів (полів), записів (кортежів), реляційних таблиць (файлів), а також зв'язків між ними.
Розглянемо обмеження цілісності, які повинні накладатися на окремі атрибути.
1. Контроль поля за шаблоном. Це стандартний вид контролю, що надається всіма СУБД, при якому перевіряються довжина та тип поля. Однак цей вид контролю можна доповнити, створивши так звану маску для введення поля. Маска обмежує тип інформації, який може бути введений в поле, і надає певні зручності операторові. Наприклад, при введенні номера телефону маску вводу можна створити так: (___)___-__-__. У дужках має стояти індекс для міжміського зв'язку, а дефіси роблять номер телефону більш читабельним і зручним для введення.
2. Контроль на відповідність певному діапазону. Цей вид контролю здебільшого може застосовуватись для числових полів. Встановлення діапазону та контроль на відповідність йому атрибута дають змогу запобігти явним помилкам, які можуть виникнути при введенні чи внесенні змін у дані.
Існують відкриті й закриті діапазони. Відкритий фіксує лише значення одного з обмежень — верхню чи нижню межу можливої зміни значення атрибута. При відкритому діапазоні задають обидва обмеження.
Перевірка на виконання цього обмеження цілісності не є обов'язковою для кожного атрибута. Звичайно такий вид контролю може застосовуватись лише для тих атрибутів, які насправді мають такі обмеження, а це залежить від специфіки та особливостей предметної області. Деякі СУБД, наприклад PARADOX, мають засоби виконання перевірки на входження значення атрибута в діапазон.
3. Завдання ознаки не порожнього поля. Ця ознака характеризує те, що певні атрибути повинні обов'язково мати якесь конкретне значення і не допускається порожнього поля. Наприклад, у файлі, що вміщує інформацію про клієнтів, обов'язковими є такі атрибути, як «назва клієнта» і його «юридична адреса», а такий атрибут, як «сума отриманого кредиту», може бути в тому випадку, якщо клієнт отримував кредит.
4. Завдання можливих значень полів. При цьому задають певний перелік можливих значень полів і вводячи нове значення, перевіряють, чи є відповідне йому значення в заданому переліку. Цей вид контролю може використовуватись завданням можливих значень поля програмне, якщо перелік невеликий за обсягом, чи перевіркою відповідності значень уведеного поля його значенню в наперед створеному файлі нормативно-довідкової інформації.
Наприклад, якщо необхідно ввести таку ознаку типу клієнта, як вид його діяльності, то її можна вибрати з переліку, заданого в довіднику видів діяльності. Слід звернути увагу, що перевірка поля типу «дата» на допустимість значень, яка виконується автоматично деякими СУБД, також належить до цього виду контролю.
5. Обмеження переходу з одного стану в інший. Виконання цього обмеження потрібно перевіряти, вносячи зміни у файл даних. Наприклад, якщо в базі даних зберігається такий атрибут, як «сума нарахованого зносу», то її можна використовувати лише в бік збільшення і не допускається коригувати в бік зменшення, оскільки величина зносу обладнання може лише збільшуватись залежно від терміну його експлуатації. Залежно від особливостей предметної області можуть бути такі атрибути, на які повинна накладатись заборона на будь-які зміни.
Наприклад, атрибут «дата народження» не підлягає коригуванню, і на нього потрібно накласти заборону на перехід в інший стан. Іншим прикладом обмеження переходу є коригування атрибута «сімейний стан»: ознаку «вдівець» можна замінити лише на «одружений», а значення «неодружений» не можна виправити на «розведений». У разі порушення обмеження переходу з одного стану атрибута в інший