Декларативні обмеження цілісності 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Декларативні обмеження цілісності



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

♦ на які об'єкти моделі даних поширюються обмеження цілісності;

♦ якими є ці обмеження;

♦ як ті чи інші обмеження цілісності специфікуються;

♦ які існують механізми підтримання цілісності.

У реляційних БД до об'єктів, на які поширюються обмеження ціліс­ності, належать такі:

♦ відношення;

♦ атрибути;

♦ зв'язки між відношеннями;

♦ зв'язки між атрибутами.

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

Цілісність відношень

У реляційній СКБД цілісність відношень визначається за допомогою первинного ключа, для якого мають виконуватися такі обмеження цілісності:

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

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

Цілісність атрибутів

У реляційній СКБД цілісність атрибутів може забезпечуватися:

♦ зазначенням типів даних та їхніх розмірів (обов'язкова властивість);

♦ визначенням, чи є обов'язковим значення атрибута (NULL/NOT NULL);

♦ визначенням, чи може значення атрибута дублюватися (UNIQUE);

♦ зміною значення атрибута після його введення;

♦ встановленням умов, яким мають відповідати значення атрибута.

Для похідних атрибутів цілісність має гарантуватися процедурою їхнього об­числення. Цілісність атрибутів специфікується фразами NULL/NOT NULL і UNIQUE у визначенні атрибута (поля).

Цілісність зв'язків між відношеннями

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

Відношення, на яке здійснюється посилання за допомогою зовнішнього клю­ча, називається батьківським, а те, яке посилається, — дочірнім.

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

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

Механізм підтримки цілісності за посиланням реалізує СКБД. Розглянемо, як діє механізм під час видалення рядка з батьківської таблиці. Можливі три варіанти:

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

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

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

Цілісність зв'язків між атрибутами

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

CREATE TRIGGER Лекція_Вставка_Оновлення

BEFORE INSERT, UPDATE ON ЛЕКЦІЯ WHEN (SELECT Місця FROM АУДИТОРІЯ WHERE АУДИТОРІЯ.#R = ЛЕКЦІЯ.#R) < (SELECT Кількість FROM ГРУПА WHERE ГРУПА.#G - ЛЕКЦІЯ.#G)

BEGIN

ROLLBACK TRANSACTION

END



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 332; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.231.146.172 (0.016 с.)