У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


виконувати операції, не звертаючи уваги на порушення посилальної цілісності.

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

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

Вживання стратегій підтримки посилальної цілісності

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

При оновленні кортежу в батьківському відношенні

Допустимі стратегії:

RESTRICT (ОБМЕЖИТИ) - не дозволяти оновлення, якщо є хоча б один кортеж в дочірньому відношенні, що посилається на кортеж, що обновляється.

CASCADE (КАСКАДУВАТИ) - виконати оновлення і каскадний змінити значення зовнішніх ключів у всіх кортежах дочірнього відношення, що посилаються на кортеж, що обновляється.

SET NULL (ВСТАНОВИТИ В NULL) - виконати оновлення і у всіх кортежах дочірнього відношення, що посилаються на кортеж, що обновляється, змінити значення зовнішніх ключів на null-значення.

SET DEFAULT (ВСТАНОВИТИ ПО УМОВЧАННЮ) - виконати оновлення і у всіх кортежах дочірнього відношення, що посилаються на кортеж, що обновляється, змінити значення зовнішніх ключів на деяке значення, прийняте за умовчанням.

IGNORE (ІГНОРУВАТИ) - виконати оновлення, не звертаючи уваги на порушення посилальної цілісності.

При видаленні кортежу в батьківському відношенні

Допустимі стратегії:

RESTRICT (ОБМЕЖИТИ) - не дозволяти видалення, якщо є хоча б один кортеж в дочірньому відношенні, що посилається на кортеж, що видаляється.

CASCADE (КАСКАДУВАТИ) - виконати видалення і каскадний видалити кортежі в дочірньому відношенні, що посилаються на кортеж, що видаляється.

SET NULL (ВСТАНОВИТИ В NULL) - виконати видалення і у всіх кортежах дочірнього відношення, що посилаються на кортеж, що видаляється, змінити значення зовнішніх ключів на null-значення.

SET DEFAULT (ВСТАНОВИТИ ПО УМОВЧАННЮ) - виконати видалення і у всіх кортежах дочірнього відношення, що посилаються на кортеж, що видаляється, змінити значення зовнішніх ключів на деяке значення, прийняте за умовчанням.

IGNORE (ІГНОРУВАТИ) - виконати видалення, не звертаючи уваги на порушення посилальної цілісності.

При вставці кортежу в дочірнє відношення

Допустимі стратегії:

RESTRICT (ОБМЕЖИТИ) - не дозволяти вставку, якщо зовнішній ключ в кортежі, що вставляється, не відповідає жодному значенню потенційного ключа батьківського відношення.

SET NULL (ВСТАНОВИТИ В NULL) - вставити кортеж, але як значення зовнішнього ключа занести не пропоноване користувачем некоректне значення, а null-значення.

SET DEFAULT (ВСТАНОВИТИ ПО УМОВЧАННЮ) - вставити кортеж, але як значення зовнішнього ключа занести не пропоноване користувачем некоректне значення, а деяке значення, прийняте за умовчанням.

IGNORE (ІГНОРУВАТИ) - вставити кортеж, не звертаючи уваги на порушення посилальної цілісності.

При оновленні кортежу в дочірньому відношенні

Допустимі стратегії:

RESTRICT (ОБМЕЖИТИ) - не дозволяти оновлення, якщо зовнішній ключ в кортежі, що обновляється, стає не відповідним жодному значенню потенційного ключа батьківського відношення.

SET NULL (ВСТАНОВИТИ В NULL) - відновити кортеж, але як значення зовнішнього ключа занести не пропоноване користувачем некоректне значення, а null-значення.

SET DEFAULT (ВСТАНОВИТИ ПО УМОВЧАННЮ) - відновити кортеж, але як значення зовнішнього ключа занести не пропоноване користувачем некоректне значення, а деяке значення, прийняте за умовчанням.

IGNORE (ІГНОРУВАТИ) - відновити кортеж, не звертаючи уваги на порушення посилальної цілісності.

Висновки

Сучасні СУБД допускають використовування null-значень, оскільки дані часто бувають неповними або невідомими. Суперечки про допустимість використовування null-значень ведуться дотепер. Використовування null-значення зв'язано із застосуванням тризначної логіки (three-valued logic, 3VL).

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

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

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

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

Відносини зв'язуються один з одним за допомогою зовнішніх ключів.

Зовнішній ключ відношення - це набір атрибутів відношення, що містить посилання на потенційний ключ іншого (або того ж самого) відношення. Відношення, що містить потенційний ключ, на який посилається деякий зовнішній ключ, називається батьківським відношенням. Відношення, що містить зовнішній ключ, називається дочірнім відношенням.

Зовнішній ключ не зобов'язаний володіти властивістю унікальності. Тому, одному кортежу батьківського відношення може відповідати декілька кортежів дочірнього відношення. Такий тип зв'язку між відносинами називається "один-до-багатьох".

Зв'язки типу "много-ко-багато чим" реалізуються використовуванням декількох відносин типу "один-до-багатьох".

У будь-якій реляційній базі даних повинні виконуватися два обмеження:

Цілісність сутностей

Цілісність зовнішніх ключів

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

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

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

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

RESTRICT (ОБМЕЖИТИ) - не дозволяти виконання операції, що приводить до порушення посилальної цілісності.

CASCADE (КАСКАДУВАТИ) - дозволити виконання необхідної операції, але внести каскадні зміни в інші відносини так, щоб не припуститися порушення посилальної цілісності.

Додатковими стратегіями підтримки посилальної цілісності є:

SET NULL (ВСТАНОВИТИ В NULL) - всі некоректні значення зовнішніх ключів змінювати на null-значення.

SET DEFAULT (ВСТАНОВИТИ ПО УМОВЧАННЮ) - всі некоректні значення зовнішніх ключів змінювати на деяке значення, прийняте за умовчанням.

У реальних СУБД можна також відмовитися від використання якої-небудь стратегії підтримки посилальної цілісності:

IGNORE (ІГНОРУВАТИ) - виконувати операції, не звертаючи уваги на порушення посилальної цілісності.

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


Сторінки: 1 2 3 4 5