Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
bd.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.91 Mб
Скачать

Цілісність сутності та посилань

В цілісній частині реляційної моделі даних фіксуються дві базові вимоги цілісності, які повинні підтримуватися в будь-якій реляційній СКБД. Перша вимога називається вимогою цілісності сутностей. Об'єкту або сутності реального світу в реляційних БД відповідають кортежі відношення. Конкретно вимога полягає в тому, що довільний кортеж будь-якого відношення відрізняється від всіх інших кортежів цього відношення, тобто іншими словами, будь-яке відношення повинно мати один первинний ключ, причому альтернативних ключів може бути багато (або зовсім не бути). Як ми бачили в попередньому розділі, ця вимога автоматично задовольняється, якщо в системі не порушуються базові властивості відношень.

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

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

Тут існують три підходи, кожен з яких підтримує цілісність за посиланнями:

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

  • при видаленні кортежу, на який є посилання, у всіх кортежах, що посилаються, значення зовнішнього ключа автоматично стає невизначеним (NULL);

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

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

Базисні засоби маніпулювання реляційними даними

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

В реалізаціях конкретних реляційних СКБД зараз не використовується в чистому вигляді ні реляційна алгебра, ні реляційне числення. Фактичним стандартом доступу до реляційних даних стала мова SQL (Structured Query Language). Мова SQL являє собою суміш операторів реляційної алгебри і виразів реляційного числення та використовує синтаксис, близький до фраз англійської мови і розширений додатковими можливостями, відсутніми в реляційній алгебрі та реляційному численні. Взагалі, мова доступу до даних називається реляційно повною, якщо вона по виразності не поступається реляційній алгебрі (або, що те ж саме, реляційному численню), тобто будь-який оператор реляційної алгебри може бути виражений засобами цієї мови. Саме такою і є мова SQL.

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

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

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

Відомо (і ми не будемо це доводити), що механізми реляційної алгебри та реляційного числення еквівалентні. Тобто для будь-якого допустимого виразу реляційної алгебри можна побудувати еквівалентну (тобто виробляє такий же результат) формулу реляційного числення і навпаки. Чому ж в реляційній моделі даних присутні обидва ці механізми?

Справа в тому, що вони розрізняються рівнем процедурності. Вирази реляційної алгебри будуються на основі алгебраїчних операцій (високого рівня), і подібно тому, як інтерпретуються арифметичні та логічні вирази, вираження реляційної алгебри також має процедурну інтерпретацію. Іншими словами, запит, поданий на мові реляційної алгебри, може бути обчислений на основі обчислення елементарних алгебраїчних операцій з урахуванням їх старшинства та можливої наявності дужок (пріорітетів). Для формули реляційного обчислення однозначна інтерпретація, взагалі кажучи, відсутня. Формула тільки встановлює умови, яким повинні задовольняти кортежі результуючого відношення. Тому мови реляційного обчислення є більш непроцедурними або декларативними.

Оскільки механізми реляційної алгебри та реляційного числення еквівалентні, то в конкретній ситуації для перевірки ступеня реляційності деякої мови БД можна користуватися будь-яким з цих механізмів.

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

В нашому викладі ми в основному слідуємо підходу Дейта, застосованого (хоча і не винайденому) їм в останньому виданні книги [12]. Для економії часу і місця ми не будемо вводити будь-яких строгих синтаксичних конструкцій, а в основному обмежимося розглядом матеріалу на змістовному рівні.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]