Лекція 5. Цілісність бази даних. Правила вилучення і оновлення даних.

 

Цілісність баз даних – властивість даних, що визначає повноту і правильність інформації, яка вміщується в БД.

Підтримка цілісності даних включає такі складові:

-     структурна цілісність;

-      обмеження реальних значень даних;

-     посилкова цілісність.

Структурна цілісність передбачає виконання таких умов:

-     наявність      тільки      однорідних       структур      даних                      типу

"реляційне відношення";

-     відсутність дублікатів кортежів;

-     обов'язкова          наявність         у       кожному відношенні первинного ключа;

-     обмеження        доменів,        яке      передбачає визначення кожного атрибуту на своєму домені;

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

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

Обмеження реальних значень даних вимагають, щоби значення поля належали деякому діапазону значень, або задовольняли певному арифметичному співвідношенню між значеннями різних полів. Обмеження значень можуть включати також визначення певних форматів для полів, задоволення значень полів певним статистичним умовам, бізнес правилам предметної області і т.ін.

Посилкова цілісність означає, що зміни в таблицях повинні виконуватися синхронно, а зміст двох пов'язаних таблиць має відповідати таким правилам:

-     кожному запису основної таблиці відповідає нуль або більше записів підлеглої таблиці;

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

-       кожний запис підлеглої таблиці має тільки один батьківський запис основної таблиці.

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

Правила вилучення і оновлення

Операція

Правило

Пояснення

 

Вилучення

(DELETE)

RESTRICT

Заборона вилученні рядка з батьківської таблиці, якщо в підлеглій таблиці цей рядок має

нащадків

CASCADE

При вилученні рядка з батьківської таблиці      в   підлеглій      таблиці      всі рядки-нащадки   автоматично вилучаються

SET NULL

При вилученні рядка з батьківської таблиці в підлеглій таблиці всім зовнішнім ключам рядків-нащадків автоматично                    присвоюється значення NULL

         SET DEFAULT

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

значення              встановлене               за замовчуванням

Оновлення

(UPDATE)

RESTRICT

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

в підлеглій таблиці цей рядок має нащадків

 

Операція

Правило

Пояснення

Оновлення

(UPDATE)

CASCADE

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

відповідати новому значенню первинного ключа

SET NULL

При   зміні   первинного   ключа   в

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

рядках-нащадках і їм присвоюється значення NULL

SET

DEFAULT

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

 

Також можливо виконання правила NONE – не виконуються ніякі дії і правила NULL ALLOWED – дозволяються невизначені значення.

При введенні нових рядків (INSERT) необхідно дотримуватися такої послідовності введення: спочатку дані вводяться в батьківську таблицю, а потім  в підлеглу.

Last modified: Thursday, 14 July 2022, 12:13 AM