Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чичкань.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.15 Mб
Скачать
      1. 7.2. Маніпулювання даними в реляційній моделі

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

  • реляційна алгебра, заснована на теорії множин;

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

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

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

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

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

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

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

      1. 7.3. Операції реляційної алгебри

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

Об'єднання r s

Об'єднанням відношень r і s називається множина кортежів, які належать або r, або s, або їм обом. Для операції об'єднання потрібний однакова арність відношень.

Для прикладу, нехай

r

s

а

b

а

b

g

а

d

а

f

d

а

f

с

b

d

тоді

r s

а

b

а

d

а

f

с

b

d

b

g

а

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

Різниця r – s

Різницею відношень r і s називається множина кортежів, що належить r, але не належить s. Для цієї операції також потрібна однакова арність відношень.

r - s

а

b

а

с

b

d

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

Декартовий добуток r s

Нехай r і s – відношення арності k1 і k2 відповідно. Декартовим добутком r s називається множина кортежів довжини k1+k2, перші k1 компонентів які утворюють кортежі, належать r, а останні k2 – кортежі, належать s.

r s

а

b

а

b

g

а

а

b

а

d

а

f

d

а

f

b

g

а

d

а

f

d

а

f

с

b

d

b

g

а

с

b

d

d

а

f

Проекція πAi1, Ai2 ... Aim(r)

Проекція πAi1, Ai2 ... Aim(r) є множина кортежів, що отримуються з кортежів відношення r вибором стовпців з іменами Ai1, Ai2 ..., Aim.

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

1,3(r)

а

а

d

f

с

d

Вибір (селекція) σF(r)

Нехай F – формула, утворена: операндами, константами, що є, або іменами атрибутів, арифметичними операторами порівняння, логічними операторами (і, або, не), тоді вибором (селекцією) σF називається множина кортежів, компоненти якої задовольняють умові, заданій формулою F.

σ(1)=(3)(r)=

а

b

а

Тут F:(1)=(3) – вміст першого стовпця дорівнює вмісту третього стовпця.

Наведемо ряд прикладів представлення запитів за допомогою формальних операцій для реляційної моделі (СТУДЕНТ, ФАКУЛЬТЕТ, СПЕЦІАЛЬНІСТЬ), розглянутої раніше.

Приклад 1.

Сформувати список студентів (прізвище).

Розглянемо схему відношення СТУДЕНТ.

Атрибут "Прізвище" позначений тут як А1. Для відповіді на запит необхідно узяти проекцію відношення r1 на стовпець А2.

А1(r)

Приклад 2.

Видати список прізвищ і дат народжень студентів, яким на поточну дату (date) більше 35 років.

Розглянемо те ж відношення r1. Спочатку вибираємо студентів, яким більше 35 років:

σ(А3)+35<date(r1)

Потім беремо проекцію отриманого відношення на стовпці

А1, А3(А3)+35<date(r1))

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

Приклад 3.

Видати список прізвищ студентів, що навчаються за фахом "Інформаційні технології". Назва спеціальності є атрибутом відношення r3. Якби в цьому відношенні був присутній атрибут "прізвище", то завдання вирішувалося б аналогічно прикладу 2. У відношенні r5 присутній атрибут "код студента", а "прізвище" присутнє у відношенні r1. Для відповіді на цей запит необхідно зв'язувати по "код студента" відношення r3 і відношення r1.

Спочатку виберемо із відношення r3 кортежі з назвою спеціальності "Інформаційні технології". Позначимо отримане відношення rp1. (Подальші проміжні відношення позначатимемо послідовно rp1, rp2, rp3 і т. д.).

rp1= σ(А3)=”Інформаційні технології”(r3)

Далі нас цікавитиме лише атрибут A1 – "код студента". Тому візьмемо проекцію на ці стовпці

rp2 A1(rp1).

Далі необхідно зв'язати відношення r1 і rp2 (склеїти таблиці). Для склеювання таблиць використовується операція "декартовий добуток":

rp3 = r1 rp2

У відношенні r3 присутні два однакові стовпці: A1 з відношення r1 і A1 з відношення rp2. Вибираючи з відношення rp3 рядки, в яких значення у відповідних стовпців співпадають (збігаються), отримаємо відомості про студентів, що навчаються за фахом "Інформаційні технології":

rp4(A1r1)=(A1rp2)(rp3),

де A1⋅ r1 і A1⋅ rp2 означають відповідно стовпець A1 відповідної першої і другої складової частини декартового добутку. Тепер залишилося лише вибрати прізвища відповідних студентів

rp5= A2(rp4).

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

Ми ввели п'ять основних операцій реляційної алгебри. Вони дозволяють реалізувати будь-який запит до реляційної бази даних. Проте разом з основними операціями досить часто зручно використовувати так звані додаткові операції реляційної алгебри (які можуть бути виражені через основні).

Перетин r s

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

r s = r – (r – s).

–з'єднання

–з'єднання r і s по стовпцях Ai та Aj є множина таких кортежів в декартовому добутку r і s, що i-й компонент r знаходиться у відношенні  з j-м компонентом s, де  – арифметичний оператор порівняння. Якщо  є оператором рівності, то ця операція називається еквіз’єднанням

де 1 – арність відношення r.

Приклад.

r

s

1

2

3

3

1

4

5

6

6

2

7

8

9

1

2

3

3

1

1

2

3

6

2

4

5

6

6

2

Відмітимо, що у Прикладі 3 послідовно йдуть дві операції (декартовий добуток і селекція), разом якраз представляють операцію з'єднання. Причому використання декартового добутку для з'єднання таблиць обов'язково обумовлює використання селекції як наступної операції для встановлення зв'язку між таблицями. Тому доцільно використовувати таку об'єднану операцію і програмно реалізовувати в СУБД саме операцію з'єднання.

Природне з'єднання

Операція застосовується тоді і лише тоді, коли стовпці мають імена (є атрибутами). Операція застосовується до відношень, в яких є однакові атрибути.

Нехай

r = (A1 ..., Ak, B1..., Bn), s = (A1 ..., Ak, C1..., Cm),

імена A1 ..., Ak співпадають (збігаються).

Тоді визначається таким чином:

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

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

Питання, що розглядаються в цій лекції, детальніше описані в [4]-[14].