Проектування баз даних
38


Розділ 5. ТЕХНОЛОГІЯ СТВОРЕННЯ І ВЕДЕННЯ БАЗИ ДАНИХ

5.1. МЕТОДИ ЗАБЕЗПЕЧЕННЯ ЦІЛІСНОСТІ БАЗИ ДАНИХ

Технологія створення та підтримування бази даних в актуальному стані повинна бути спроектована таким чином, щоб забезпечити цілісність бази даних. Поняття цілісності в широкому розумінні цього слова — це забезпе­чення достовірності та узгодженості даних у базі даних у будь-який момент часу її функціонування.

Розрізняють такі поняття, як фізична, логічна, семантична та синтакси­чна цілісність даних. Забезпечення фізичної цілісності даних — це засоби захисту бази даних від пошкоджень і руйнування при збоях обладнання. За­соби захисту від некоректного внесення змін — це забезпечення логічної цілісності даних. Семантична цілісність даних — це захист цілісності ок­ремих даних, файлів і зв'язків між ними, яка залежить від специфіки пред­метної області. Синтаксична цілісність — це так звані внутрішні, неявні її обмеження, які залежать від типу логічної моделі даних і вибраної СУБД.

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

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

Розглянемо обмеження цілісності, які повинні накладатися на окремі атрибути.

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

2. Контроль на відповідність певному діапазону. Цей вид контролю здебільшого може застосовуватись для числових полів. Встановлення діа­пазону та контроль на відповідність йому атрибута дають змогу запобігти явним помилкам, які можуть виникнути при введенні чи внесенні змін у дані.

Існують відкриті й закриті діапазони. Відкритий фіксує лише значення одного з обмежень — верхню чи нижню межу можливої зміни значення ат­рибута. При відкритому діапазоні задають обидва обмеження.

Перевірка на виконання цього обмеження цілісності не є обов'язковою для кожного атрибута. Звичайно такий вид контролю може застосовуватись лише для тих атрибутів, які насправді мають такі обмеження, а це залежить від специфіки та особливостей предметної області. Деякі СУБД, наприклад PARADOX, мають засоби виконання перевірки на входження значення ат­рибута в діапазон.

3. Завдання ознаки не порожнього поля. Ця ознака характеризує те, що певні атрибути повинні обов'язково мати якесь конкретне значення і не до­пускається порожнього поля. Наприклад, у файлі, що вміщує інформацію про клієнтів, обов'язковими є такі атрибути, як «назва клієнта» і його «юридична адреса», а такий атрибут, як «сума отриманого кредиту», може бути в тому випадку, якщо клієнт отримував кредит.

4. Завдання можливих значень полів. При цьому задають певний перелік можливих значень полів і вводячи нове значення, перевіряють, чи є відпо­відне йому значення в заданому переліку. Цей вид контролю може викори­стовуватись завданням можливих значень поля програмне, якщо перелік не­великий за обсягом, чи перевіркою відповідності значень уведеного поля його значенню в наперед створеному файлі нормативно-довідкової інфор­мації.

Наприклад, якщо необхідно ввести таку ознаку типу клієнта, як вид йо­го діяльності, то її можна вибрати з переліку, заданого в довіднику видів ді­яльності. Слід звернути увагу, що перевірка поля типу «дата» на допусти­мість значень, яка виконується автоматично деякими СУБД, також належить до цього виду контролю.

5. Обмеження переходу з одного стану в інший. Виконання цього об­меження потрібно перевіряти, вносячи зміни у файл даних. Наприклад, як­що в базі даних зберігається такий атрибут, як «сума нарахованого зносу», то її можна використовувати лише в бік збільшення і не допускається кори­гувати в бік зменшення, оскільки величина зносу обладнання може лише збільшуватись залежно від терміну його експлуатації. Залежно від особли­востей предметної області можуть бути такі атрибути, на які повинна нак­ладатись заборона на будь-які зміни.

Наприклад, атрибут «дата народження» не підлягає коригуванню, і на нього потрібно накласти заборону на перехід в інший стан. Іншим прикладом обмеження переходу є коригування атрибута «сімейний стан»: ознаку «вдівець» можна замінити лише на «одружений», а значення «неодру­жений» не можна виправити на «розведений». У разі порушення обмеження переходу з одного стану атрибута в інший