Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОБЩИЙ_файл_ПОСОБИЕ.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
22.69 Mб
Скачать

Цілісна частина реляційної моделі

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

У цілісній частині моделі даних фіксуються дві базові вимоги цілісності даних: цілісності сутностей і цілісності за посиланнями (або цілісності зовнішніх ключів).

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

Цілісність зовнішніх ключів означає підтримку зв’язків між записами зв'язаних таблиць при внесенні змін у базу даних. Цілісність зовнішніх ключів забезпечується при виконанні наступних умов:

  1. Зв'язане поле головної таблиці повинно бути ключовим полем.

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

  2. Зв'язані таблиці повинні бути таблицями однієї бази даних.

  3. Для забезпечення цілісності зовнішнього ключа необхідно в процесі створення та експлуатації бази даних враховувати наступні правила:

не можна вводити в поле зовнішнього ключа підлеглої таблиці значення, яке відсутнє в ключовому полі головної таблиці. Наприклад, не припустимо вводити в ключове поле «Таб_номер» таблиці «Розклад занять» значення, якого немає в таблиці «Викладачі» (рис. 10.6);

не допускається видалення запису з головної таблиці, якщо існують пов'язані з нею записи в підлеглій таблиці. Наприклад, неможливо видалити запис із таблиці «Викладачі», якщо в таблиці «Дисципліни» існують записи, які пов'язані з даним викладачем;

не можна змінювати значення ключового поля в головній таблиці, якщо існують записи, пов'язані з даним значенням. Наприклад, не можна змінювати «Таб_номер» в таблиці «Викладачі», якщо в таблиці «Дисципліни» є записи, що відносяться до цього викладача.

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

Маніпуляційна частина реляційної моделі

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

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

Дамо характеристику реляційних операцій. Приклади виконання реляційних операцій приведені на рис. 10. 7.

Операція об'єднання (UNION). Позначення – R S. Об'єднанням відношень R і S називається множина кортежів, які належать або R, або S, або їм обом. Відношення повинні бути сумісними по об'єднанню. Вони повинні мати однакові заголовки та типи однойменних атрибутів.

Ця вимога справедлива і для операцій перетинання та різниці.

Операція перетинання (INTERSECTION). Позначення – R S. Перетинанням відношень R і S називається множина кортежів, що належать як R так і S.

Операція різниця (DIFFERENCE). Позначення – R S. Різницею відношень R і S називається множина кортежів, які належать R і не належать S.

Операція декартовий добуток (CROSS-PRODUCT). Позначення  R×S. Операція декартового добутку застосовується для множення двох відношень. Множенням двох відношень називається створення іншого відношення, що складається зі всіх можливих пар кортежів обох відношень. Імена атрибутів початкових відношень не повинні збігатися. Для виконання цієї вимоги при виконанні операції декартового добутку формуються складні імена атрибутів відношень. Кожне ім’я атрибуту доповнюється префіксом – ім’ям відношення (див. рис.10. 7).

Операція «Об’єднаня» Операція «Пересічення»

Операція «Різниця» Операція «Декартовий добуток»

Операція «Вибір» σF(R) Операція «Проекція» πA1,A2...,AM(R)

Еквіз’єднання (з’єднання з еквівалентністю) – R  А =В S

Природне з’єднанняR 

Рис. 10.7 Приклади виконання операцій реляційної алгебри

Операція вибір (SELECTION). Позначення – σF(R). Вибором (селекцією) σF називається множина кортежів, компоненти якої задовольняють умові, що задана предикатом F. Предикат – це формула, що утворена операндами, які є константами, іменами атрибутів, арифметичними операторами порівняння або логічними операторами (AND – І, OR – АБО, NOT – НІ). Ця операція будує нове відношення, яке є «горизонтальною» підмножиною початкового відношення (див. рис. 10. 7).

Операція проекція (PROJECT). Позначення – . Проекцією відношення є множина кортежів, що складається з кортежів відношення R шляхом вибору стовпців з іменами A1, A2,…, Am. Ця операція будує «вертикальну» підмножину (S) шляхом вибору тільки заданих атрибутів і виключення останніх (див. рис. 10. 7). Кортежі, що повторюються видаляються.

Операції з'єднання (JOIN). Позначення – R  S. Як правило, користувачів цікавить лише деяка частина всіх комбінацій кортежів декартового добутку, яка задовольняє заданій умові. Тому замість декартового добутку зазвичай використовується одна з найважливіших операцій реляційної алгебри – операція з'єднання. В результаті її виконання на базі двох початкових відношень створюється деяке нове відношення. Операція з'єднання є похідною від операції декартового добутку, оскільки вона еквівалентна операції вибірки з декартового добутку двох початкових відношень тих кортежів, які задовольняють умові, що вказана в умові вибірки ( ).

На практиці застосовуються три різновидності операції з'єднання:

еквіз'єднання відношень (з'єднання за еквівалентністю);

умовне з'єднання відношень (тета-з’єднання);

природне з'єднання відношень.

Еквіз'єднання (з'єднання за еквівалентністю). Позначення – R  SF. Операція називається еквіз’єднанням, якщо предикат F містить тільки операцію порівняння за рівністю (=). Приклад виконання операції еквіз’єднання σR.A = S.D(R × S) приведено на рисунку 10. 7, де предикатом F є R.A = S.D.

Умовне (тета) з'єднання (CONDITIONAL). Позначення – R   S. Операція умовного з'єднання здійснюється над двома відношеннями R і S.

Результатом операції є відношення, яке містить кортежі з декартового добутку відношень R × S, що задовольняють предикату F. Предикат F має вигляд A θ B, де A і B – імена атрибутів різних відношень-операндів, θ – арифметичний оператор порівняння (≠, >, ≥, <, ≤). Операція умовного з’єднання здійснюється за формулою:

R  А θ B S = σA θ B)(R × S),

При реалізації операції з'єднання послідовно виконуються дві операції: операція декартового добутку R × S і операція вибір σA θ B.

Природне з'єднання. Позначення – R  S. Ця операція застосовується до пари відношень, в яких збігаються імена деяких атрибутів.

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

операція декартового добутку: R1 = R × S з перейменуванням атрибутів, імена яких збігаються;

операція еквіз’єднання: R2=σR.A1 = S.A1 & R.A1 = R.A2 & S.A2,…, R.Ak = S.Ak(R1);

операція проекції R3 = πA1,…, Ak, B1,…,Bn, C1,…, Cm(R2).

Приклад виконання операції еквіз’єднання σR.A = S.D(R × S) приведено на рисунку 10.7.

Операція ділення відношень R ÷ S. Операція виконується над двома відношеннями R(a1, a2,...,an, b1, b2,...,bm) і S(b1, b2,...,bm), що мають в загальному випадку різні структури і частину однакових атрибутів b1, b2,...,bm. Вважатимемо, що атрибути bі відношень R і S (i = 1, 2,…,m) мають не тільки однакові ім'я, але і визначені на одному і тому ж домені, наприклад, це ключеві атрибути відношень.

Назвемо множину атрибутів {aj} складним атрибутом А, а множину атрибутів {bj} – складним атрибутом B. Після цього розглянемо реляційне ділення «бінарного» відношення R(А, B) на унарне відношення S(B). Результатом ділення відношення R(А, B) на відношення S(B) є «унарне» відношення C(А). Таким чином, в результаті операції ділення утворюється нове відношення С шляхом виключення з множини атрибутів відношення R множини атрибутів відношення S.

Кортежі відношення С складаються з множини кортежей відношення R, які визначені на атрибуті А та відповідають комбінації усіх кортежей відношенням S (рис. 10.8).

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

Рис. 10.8 Операція ділення відношень R на S