
- •Вступ до баз даних. Загальна характеристика основних понять
- •1.1. Розвиток основних понять представлення даних
- •Лекція 6
- •Друга стадія концептуального проектування бд. (Моделі даних субд. Представлення концептуальної моделі засобами моделі даних субд)
- •6.1. Представлення концептуальній моделі засобами моделі даних субд
- •6.2 Типові моделі даних субд і представлення концептуальної моделі
- •6.2.1. Мережева модель даних
- •6.2.2. Ієрархічна модель даних
- •6.2.3. Реляційна модель даних
- •6.2.4. Багатовимірна модель даних
- •6.3. Засоби автоматизованого проектування концептуальної моделі
- •Лекція 6
- •Друга стадія концептуального проектування бд. (Моделі даних субд. Представлення концептуальної моделі засобами моделі даних субд)
- •6.1. Представлення концептуальній моделі засобами моделі даних субд
- •6.2 Типові моделі даних субд і представлення концептуальної моделі
- •6.2.1. Мережева модель даних
- •6.2.2. Ієрархічна модель даних
- •6.2.3. Реляційна модель даних
- •6.2.4. Багатовимірна модель даних
- •6.3. Засоби автоматизованого проектування концептуальної моделі
- •Лекція 7
- •Формалізація реляційної моделі
- •7.1. Формалізований опис відношень і схеми відношень
- •7.2. Маніпулювання даними в реляційній моделі
- •7.3. Операції реляційної алгебри
- •Лекція 8
- •Використання формального апарату для оптимізації схем відношень
- •8.1. Проблема вибору раціональних схем відношень
- •8.2. Функціональні залежності (залежності між атрибутами відношення)
- •8.3. Декомпозиція схеми відношення
- •8.4 .Вибір раціонального набору схем відношень шляхом нормалізації
- •8.5. Приклад нормалізації до 3нф
- •8.6. Цілісна частина реляційної моделі. Реалізація умови цілісності даних в сучасних субд
- •Лекція 9
- •Фізичні моделі даних (внутрішній рівень)
- •9.1. Структура пам'яті еом
- •9.2. Представлення екземпляра логічного запису
- •9.3. Організація обміну між оперативною і зовнішньою пам'яттю
- •9.4. Структури зберігання даних у зовнішній пам'яті еом
- •9.4.1. Послідовне розміщення фізичних записів
- •Пошук запису із заданим значенням ключа
- •9.4.2. Розміщення фізичних записів у вигляді спискової структури
- •Пошук запису із заданим значенням ключа
- •9.4.3. Використання індексів (індексування)
- •Пошук і читання запису із заданим значенням ключа
- •Модифікація (коректування) запису
- •Видалення запису
- •Додавання запису
- •9.4.5. Розміщення записів з використанням хешування
- •Пошук запису із заданим значенням ключа і читання
- •Модифікації запису
- •Видалення запису
- •Додавання запису
- •9.4.6. Комбіновані структури зберігання
- •Лекція 10
- •Структура сучасної субд на прикладі Microsoft sql Server 2008
- •10.1 Загальна структура субд
- •10.2. Архітектура бази даних. Логічний рівень
- •Тип даних hierarchyid
- •Просторові типи даних
- •Індекси
- •Представлення
- •Складки
- •Обмеження
- •Правила
- •Значення за замовчуванням
- •10.3. Архітектура бази даних. Фізичний рівень
- •Файли і файлові групи
- •Сторінки і екстенти
- •Сторінки файлів даних
- •Організація таблиць та індексів
- •Управління роботою з екстентами і вільним місцем
- •Відстежування вільного місця
- •Лекція 11
- •Програмне забезпечення роботи з сучасними базами даних
- •11.1. Основні завдання програмного забезпечення баз даних
- •11.2. Проблеми створення і ведення реляційних баз даних
- •11.3. Поняття мови sql і його основні частини
- •11.3.1. Історія виникнення і стандарти мови sql
- •11.3.2. Переваги мови sql
- •11.3.2. Загальна характеристика sql
- •Термінологія
- •Різновиди sql
- •Лекція 12
- •Основні оператори мови sql. Інтерактивний sql
- •12.1. Загальне уявлення про основні оператори мови sql
- •12.2 Інтерактивний режим роботи з sql (інтерактивна sql)
- •12.3. Використання мови sql для вибору інформації з таблиці
- •12.4. Використання sql для вибору інформації з декількох таблиць
- •12.5. Використання sql для вставки, редагування і видалення даних у таблицях
- •Лекція 13
- •Використання мови sql у прикладних програмах
- •13.1. Програмний (вбудований) sql
- •13.2. Статичний sql
- •13.3. Динамічний sql
- •13.4. Інтерфейси програмування додатків (api). Db‑Library, odbc, oci, jdbc
- •Протокол odbc
- •Протокол jdbc
- •Бібліотека db-Library
- •Лекція 14
- •Напрями розвитку баз даних
- •14.1. Об'єктно-орієнтований підхід до організації баз даних
- •Об'єктно-орієнтоване програмування
- •Об'єктно-орієнтовані бази даних
- •Об'єктно-реляційні субд
- •14.2. Розподілені бази даних
- •14.3. Сховища даних
- •Основи криптології
7.2. Маніпулювання даними в реляційній моделі
Для маніпулювання даними в реляційній моделі використовуються два формальні апарати:
реляційна алгебра, заснована на теорії множин;
реляційне числення, що базується на обчисленні предикатів першого порядку.
Механізми реляційної алгебри і реляційного числення еквівалентні, тобто для будь-якого допустимого виразу реляційної алгебри можна побудувати еквівалентну формулу реляційного числення і навпаки.
Відрізняються ці два формальних апарати рівнем процедурності. Вирази реляційної алгебри будуються на основі алгебраїчних операцій (високого рівня) подібно до того, як інтерпретуються арифметичні і логічні вирази. Вирази реляційної алгебри також мають процедурну інтерпретацію. Іншими словами, запит, представлений мовою реляційної алгебри, може бути реалізований як послідовність елементарних операцій алгебри з урахуванням їх старшинства і можливої наявності дужок.
Для формули реляційного числення однозначна інтерпретація (відповідна однозначна послідовність дій), взагалі кажучи, відсутня. Формула лише встановлює умови, яким повинні задовольняти кортежі результуючого відношення. Тому мови реляційного числення є більш непроцедурними (менш процедурними) або декларативними.
Операціям, що реалізовуються за допомогою вказаних апаратів, властиві замкнутість на множині відношень. Це означає, що вирази реляційної алгебри і формули реляційного числення визначаються над відношеннями реляційних БД і результатом обчислення також є відношення. В результаті будь-який вираз або формула можуть інтерпретуватися як відношення, що дозволяє використовувати їх в інших виразах або формулах.
Як ми бачимо, алгебра і числення володіють великою виразною потужністю. Дуже складні запити до бази даних можуть бути виражені за допомогою одного виразу реляційної алгебри або однієї формули реляційного числення. Саме з цієї причини такі механізми включені в реляційну модель даних. Конкретна мова маніпулювання реляційними БД називається реляційно повною, якщо будь-який запит, що виражається за допомогою однієї операції реляційної алгебри або однієї формули реляційного числення, може бути виражений за допомогою одного оператора цієї мови.
Зауважимо, що вкрай рідко алгебра або числення приймаються як повна основа якої-небудь мови БД. Зазвичай (як, наприклад, в разі мови SQL) мова ґрунтується на деякій суміші алгебраїчних і логічних конструкцій. Проте знання основ алгебри і логічних мов баз даних часто бувають корисні на практиці.
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.
Іншими словами, це операція побудови "вертикальної" підмножини, що отримується шляхом вибору певних атрибутів і виключенням решти. Кортежі, що повторюються, вилучаються.
|
|
а |
а |
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=σ(A1⋅r1)=(A1⋅rp2)(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].