Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
m_DBSQL_mu.docx
Скачиваний:
30
Добавлен:
17.03.2016
Размер:
373.51 Кб
Скачать

Реляційна база даних „успішність”

Для ілюстрації пояснення будемо використовувати просту БД успішності, що складається з трьох відношень (імена відношень дані прописними буквами, "*" позначені первинні ключі, лініями позначені зв'язки із зазначенням їх ступеня - "1" або "багато"):

При цьому будемо використовувати також наступний екземпляр БД:

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

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

Є.Ф. Кодд розглядає в рамках РА дев'ять операцій (див. рис. 1). Слід зазначити, що цей набір надлишковий, тобто деякі операції можуть бути визначені через залишені. Однак з огляду на важливість для практики операцій з'єднання і ділення вони виділяються як самостійні.

Об'єднання взяті з теорії множин

Перетин і збігаються з відповідними

Різниця теоретико-множинними операціями

Множення

Операція

Вибір відносяться тільки

Створення проекції до реляційної алгебри

З'єднання

Ділення

Присвоєння стандартна операція комп'ютерної мови, що дає ім'я величині

Присвоєння

Операція присвоєння є стандартною і основною для будь-якої процедурної мови. У нашому випадку з її допомогою проводиться присвоєння імені новому відношенню, створеному з існуючих відношень. Для позначення присвоєння будемо використовувати стандартний символ ": =".

Теоретико-множинні операції ра

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

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

Для ілюстрації цих операцій припустимо, що замість відношення СТУДЕНТ існує два відношення КОНСУЛЬТОВАНИЙ = <ID_Stud(*), СПрізв, САдреса> і КОНСУЛЬТАНТ = <ID_Stud(*), СПрізв, САдреса>.

КОНСУЛЬТОВАНИЙ

ID_Stud

СПрізв

САдреса

Кон­сультант

001

Іваненко І.І.

А1

004

002

Іваненко І.І.

А2

004

003

Петрова П.П.

А3

002

КОНСУЛЬТАНТ

ID_Stud

СПрізв

САдреса

Кон­сультант

002

Іваненко В.И.

А2

004

004

Андреєва А.А.

А4

Null

Очевидно, що це надлишкові дані. Вони могли бути створені, наприклад, після застосування серії операцій РА.

Об'єднання

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

Запит.Отримати список всіх студентів.

Рішення.СТУДЕНТ: =КОНСУЛЬТОВАНИЙІ КОНСУЛЬТАНТ

Результат.Збігається з РВ СТУДЕНТ з первісної БД.

Зауваження. Будь кортеж, що з'являється в обох відношеннях, входить в результуюче відношення тільки один раз, що забезпечує замкнутість операції надмножиноювідношень. Наприклад, рядок зID_Stud= 002 увійде в СТУДЕНТ один раз.

Перетин

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

Запит. Визначити, хто з студентів консультується, сам будучи консультантом.

Рішення.КОНСУЛЬТОВАНИЙ_КОНСУЛЬТАНТ: = КОНСУЛЬТОВАНИЙ^ КОНСУЛЬТАНТ

Результат.

ID_Stud

СПрізв

САдреса

Кон­сультант

002

Іваненко В.И.

А2

004

Різниця

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

Запит. Визначити, хто з студентів консультується, сам НЕ будучи консультантом.

Рішення.

КОНСУЛЬТОВАНИЙ_НЕ_КОНСУЛЬТАНТ: = КОНСУЛЬТОВАНИЙ - КОНСУЛЬТАНТ

Результат.

ID_Stud

СПрізв

САдреса

Кон­сультант

001

Іваненко І.І.

А1

004

003

Петрова П.П.

А3

002

Слід відмітити, що операція не комутативна, А - В <> В - А.

Запит. Визначити, хто з студентів консультує, але сам НЕ консультується.

Рішення.

КОНСУЛЬТАНТ_НЕ_КОНСУЛЬТОВАНИЙ: = КОНСУЛЬТАНТ - КОНСУЛЬТОВАНИЙ

Результат.

ID_Stud

СПрізв

САдреса

Кон­сультант

004

Андреєва А.А.

А4

Null

Множення

Ця операція РА створює декартове множення двох РВ. Щоб пояснити дію цієї операції, розглянемо абстрактний приклад.

Запит. Дано два РВ: А = <Х, У> і В = <W,Z>.

А В

X

Y

10

20

11

22

W

Z

100

200

101

201

102

202


Слід знайти множення цих відношень.

Рішення. C: = A * B.

Результат.

С

X

Y

W

Z

10

20

100

200

10

20

101

201

10

20

102

201

11

22

100

200

11

22

101

201

11

22

102

201

Декартове множення виходить в результаті:

1. зв'язування (або з'єднання) атрибутів двох відношень;

2.приєднання до кожного кортежу відношення А кожного кортежу відношення В.

Якби нам спало на думку виконати безглузду операцію СТУДЕНТ * УСПІШНІСТЬ, то відповідь містив би 8 стовпців і 36 рядків і була би вельми безглуздою. Крім того, два стовпці взагалі називалися б однаково - ID_Stud. Остання проблема долається шляхом додавання до імені стовпця імені таблиці - СТУДЕНТ. ID_Stud і УСПІШНІСТЬ.ID_Stud. Взагалі, на перший погляд, ніякі запити не вимагають такої дивної операції. Однак множення використовується як складова частина операції з'єднання і, отже, важлива хоча б в концептуальному плані. Більш того, вона реалізована в мовах запитів, і тут ще не раз про неї буде згадуватися.

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