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


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

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

Розглянуте обмеження стосується не лише окремого атрибута, а й об'єкта в цілому, тому що первинний ключ є ідентифікатором певного об'єкта. Тому це обмеження щодо об'єкта називається обмеженням його цілісності.

7. Обмеження на значення атрибута. Обмеження цілісності може сто­суватись не лише унікальності значень ключових атрибутів; воно може на­кладатись на будь-який атрибут запису чи певної їх сукупності. Так, при за­несенні даних у поле «оклад» величина окладу не може бути меншою від установленого в законодавчому порядку мінімального розміру заробітної плати.

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

9. Обмеження на обов'язкове введення значень. Деякі поля бази даних при внесенні даних не можна пропускати, тобто вони не можуть бути по­рожніми. Тому на них повинно накладатись таке обмеження, яке б не доз­воляло пропускати поля, що підлягають обов'язковому заповненню. До по­лів, які підлягають обов'язковому заповненню, належать, наприклад, ключові поля.

Обмеження цілісності, які повинні накладатись на реляційні відношення. 1. Агрегатне обмеження. Прикладом обмеження, що стосується реляційного відношення в цілому, може бути обмеження, яке накладається при ство­ренні файла коефіцієнтів трудової участі (КТУ). Він використовується при розподілі відрядної бригадної заробітної плати між членами бригади: сума КТУ для членів однієї бригади повинна дорівнювати одиниці. Розглянуте в цьому прикладі обмеження цілісності іноді називається агрегатним обмежен­ням. Підтримка агрегатних обмежень пов'язана з досить великими трудно­щами порівняно з підтримкою обмеження на значення окремого атрибута, контроль за виконанням якого полягає лише в перевірці нового значення. Контроль за виконанням агрегатного обмеження пов'язаний з доступом до файла, переглядом його записів та виконанням певних обчислень.

2. Обмеження на недопустимість, циклів. Для деяких реляційних від­ношень можна виконувати перевірку на недопустимість циклів. Характер­ним файлом для такої перевірки є «Склад виробу», при створенні якого не­обхідно виконувати перевірку того, щоб вузол не входив сам у себе.

Усі розглянуті обмеження стосуються атрибутів одного файла та файлів у цілому. Є обмеження, які накладаються на зв'язки між файлами, і ці об­меження стосуються кількох зв'язаних між собою файлів. Розглянемо об­меження, які можуть накладатися на зв'язки та на зв'язані між собою від­ношення.

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

2. Обмеження на існування. Різновидом розглянутого обмеження цілі­сності зв'язку є обмеження на існування: для того щоб запис існував у дея­кому файлі, необхідно, щоб він був пов'язаний з деяким записом в іншому файлі. Наприклад, при формуванні файла відвантаження продукції замов­никові в запису обов'язково проставляють код замовника, код продукції та її кількість, яка підлягає відвантаженню. Цей запис буде мати право на іс­нування в базі даних лише після перевірки та виконання ряду обмежень. По-перше, перевіряють, чи є відповідне замовлення зазначеного замовника на задану продукцію у файлі замовлень. Після виконання цього обмеження перевіряють, чи є необхідна кількість потрібної продукції у файлі залишків продукції на складі, і нарешті, перевіряють наявність відповідного коду замовника у файлі-довіднику замовників. Лише після виконання всіх цих обмежень уведений запис буде записаний у бази даних.

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

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

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