Download as pdf or txt
Download as pdf or txt
You are on page 1of 69

Лекція 1. Системи баз даних. Основні поняття.

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


текстуально відрізняються одне від одного через те, що в них акцентується увага на
особливостях процесів уведення та зберігання даних, але за своєю суттю ці визначення
досить близькі. Розглянемо одне з них.
База даних (БД) — це сукупність взаємопов'язаних (звичайно складнострук-
турованих) даних, яку можна спільно використовувати та керування якою здійснюється
централізовано.
Перелічимо основні властивості БД:
♦ допущення для даних такої мінімальної надлишковості, яка сприяє їхньому
оптимальному використанню в кількох програмних застосуваннях;
♦ незалежність даних від програм;
♦ наявність засобів для підтримки цілісності бази даних та захисту від
неавторизованого доступу.
Система керування базами даних (СКБД) це програмне забезпечення для
ефективного, зручного і безпечного зберігання даних у БД, організації пошуку в ній та
виведення даних на вимогу користувачів. Крім зазначених функцій, СКБД повинна надати
засоби визначення й маніпулювання даними, зробивши дані незалежними від прикладних
програм, що їх використовують.
До основних функцій СКБД необхідно віднести:
 · забезпечення мовних засобів опису та маніпуляції даними;
 · забезпечення підтримки логічної моделі даних;
 · забезпечення взаємодії логічної та фізичної структур даних;
 · забезпечення захисту та цілісності даних;
 · забезпечення підтримки БД в актуальному стані.
Банк даних — це система, що складається з БД, СКБД і прикладного програмного
забезпечення, призначена для інформаційного обслуговування користувачів. Також
уживається термін система баз даних. По суті, це певна прикладна система, яка
використовує базу даних (відтак і СКБД, що підтримує цю БД) для вирішення конкретних
завдань зберігання й обробки даних.
Найближчим попередником, що мав неабиякий вплив на появу й подальше фор-
мування баз даних, були файлові системи. Саме тому розглядати можливості, достоїнства й
характерні особливості баз даних найлегше, порівнюючи їх з файловими системами.
Розглянемо детально переваги, які надають користувачам бази даних і яких не мають
файлові системи:
1. Взаємопов’язаність даних
Локалізація певної групи даних програми загалом полегшує доступ до інших груп
даних цього ж застосування. Внаслідок орієнтації БД на велику кількість сеансів
використання виникає необхідність у підтримці різноманітних зв'язків між даними.
2. Мінімальна надлишковість
Вимога мінімізації надлишковості полягає в тому, що в базі має зберігатися мі-
німальна кількість копій одних і тих самих даних. Це необхідно у зв’язку з орієнтацією БД на
кілька застосувань. Надлишкові копії використовуються для підтримки зв’язків між даними.
Якщо для зберігання даних застосувати технологію файлової системи, можливі два
протилежні варіанти:
а) незалежні один від одного файли, відсортовані згідно з потребами того чи
іншого користувача, передбачають значну надлишковість даних;
б) всі дані розташовані в одному файлі, відсортованому так, як потрібно одному
користувачів, надлишковість при цьому практично відсутня, але зручно працювати тільки
певному користувачеві, інші ж опиняться у невигідному становищі.
Концепція БД полягає в створенні компромісу між вищеописаними варіантами —
тобто надлишковість є, але вона мінімальна.
Зайва надлишковість має певні недоліки. По-перше, зберігання кількох копій
призводить до додаткових витрат пам’яті. По-друге, доводиться виконувати численні
операції оновлення для надлишкових копій. Крім того, оскільки різні копії даних можуть
відповідати різним стадіям оновлення, то інформація, що зберігається в системі, на певний
час може стати суперечливою.
3. Незалежність даних від програм
Незалежність даних від програм означає можливість зміни структури даних без зміни
програм, що її використовують. Під це поняття підпадає й рівень самоінтерпретованості
даних. Для файлової системи він найнижчий, оскільки дані файлів інтерпретуються
виключно через прикладні програми, що їх використовують. БД, окрім самих даних, зберігає
також їхні описи, а бази знань (найвищий рівень самоінтерпретованості) містять дані, описи
даних та процедури їхньої обробки.
Суть полягає в тому — що чим вище ступінь незалежності даних, то менше треба
задавати (й знати) «процедурної» інформації щодо доступу до них. Зауважимо, що сучасні
файлові системи мають певний (хоча й досить низький) рівень незалежності: для доступу до
файла достатньо вказати його ім’я, інформація про доріжки та сектори не потрібна
Цілісність та захист від неавторизованого доступу
Під цілісністю бази даних розуміють несуперечність (відповідність певним умовам)
даних, що в ній зберігаються. Для уникнення суперечливих ситуацій при модифікації бази
даних співвідношення між даними контролюються спеціальними засобами підтримки
цілісності БД. Умови, що накладаються на дані та яких дотримуються за будь-котрих
оновлень, розробляються спеціальною службою — адміністраторами баз даних (АБД), а
СКБД надають необхідні інструментальні засоби
Оскільки БД орієнтована на широке коло застосувань, то зрозумілим є існування
засобів захисту від неавторизованого доступу (навмисного чи ненавмисного) користувачів до
даних. Серед них – система паролів та ідентифікацій користувачів, а також розподіл даних і
користувачів на групи з різними правами. Крім наведених, БД мають ще низку переваг
порівняно з файловими системами.
 Інтегроване зберігання даних. Сукупність даних розглядається як єдине ціле,
незалежно від характеру використання та способів зберігання. Тобто база даних є
інформаційною моделлю всієї предметної області.
 Централізоване керування. Передбачає адміністрування бази даних, що дає
можливість забезпечити ефективне зберігання даних, усунення їхньої суперечності,
підтримку єдиної політики у використанні даних та необхідного рівня їхньої безпеки,
збалансовування суперечливих вимог різних користувачів.
 Ефективне керування доступом до даних. СКБД надає ефективні механізми
керування доступом до даних, незважаючи на складність структур, у яких вони зберігаються.
 Скорочення часу розробки програмних систем. За наявності засобів
створення і обробки даних, які надаються СКБД, усі зусилля розробників програмних
систем концентруються на розв'язанні прикладних задач.
 Спільне використання даних. Передбачає одночасний доступ до інформації
багатьох користувачів та ефективний розподіл ресурсів
 Відновлення бази даних. Жодна непередбачена ситуація — навіть перебій
програмного чи апаратного забезпечення — не може вивести з ладу базу даних.
 Дотримання стандартів. Формати зберігання даних, технологія їхньої оброб-
ки, вхідні й вихідні форми можуть бути розроблені з урахуванням єдиних стандартів
підприємства або інших нормативних документів.
Функції адміністратора бази даних
Функціонування складної структури на зразок СКБД потребує наявності певних
служб, відповідальних за підтримання експлуатаційних характеристик баз даних. Чи не
найважливішою з них є служба адміністратора бази даних, функції якої перелічено нижче.
 Проектування й розробка описів даних на різних рівнях та їхнє узгодження.
 Розробка структур зберігання і стратегій доступу до даних згідно з вимогами
ефективного (чи економічного) зберігання, швидкої обробки та виведення даних за
бажанням користувача.
 Реструктуризація та реорганізація БД у випадку зміни вимог до характеристик
зберігання й обробки даних.
 Проектування та застосування механізмів захисту даних.
 Реєстрація користувачів (імен, паролів), визначення їхніх прав доступу та
повноважень.
 Розробка й використання механізмів резервного копіювання даних та їхнє від-
новлення під час перебоїв.
 Настроювання роботи БД (підвищення продуктивності механізмів обробки даних,
підтримання планованої надлишковості, забезпечення ефективності їхнього
зберігання).
 Систематичне наглядання за використанням бази даних.
Основні вимоги до систем керування базами даних
До сучасних систем керування базами даних висуваються такі вимоги.
 Простота і гнучкість створення застосувань. СКБД має значно полегшувати процес
створення і супроводу застосувань, що працюють з базами даних
 Багаторазове й багатоаспектне використання даних. Користувачі, які інакше
розуміють одні й ті самі дані, мають отримати змогу використовувати їх по-різному.
 Простота, легкість і гнучкість у використанні. Користувачі мають легко ді-
знаватися, які дані є в їхньому розпорядженні, й отримувати простий доступ до даних
(усі складнощі бере на себе СКБД).
 Простота і гнучкість зміни, розширення й настроювання бази даних. Будь- які
зміни в БД, додавання до неї інформації чи її розширення повинні виконуватися
незалежно від застосувань, що вже існують і використовують базу даних. До того ж ці
операції мають виконуватися максимально просто й ефективно.
 Ефективність і гнучкість зберігання й обробки даних. СКБД має забезпечувати
можливість простого й ефективного збільшення обсягів даних без порушення наявних
способів їхнього використання, а також легкого виконання реорганізації і
реструктуризації даних, СКБД повинна підтримувати заплановану надлишковість
даних або надавати можливість її знижувати. Запити на отримання даних мають
виконуватися із швидкістю, потрібною для їхнього ефективного використання.
 Низька вартість зберігання й використання даних. СКБД мають забезпечувати
нижчу вартість зберігання і використання даних, ніж будь-які інші інформаційні
системи.
 Захист від несанкціонованого доступу, викривлення і знищення. Система має
забезпечувати необхідний рівень захисту даних. Інформація має бути захищена від
перебоїв, впливу форс-мажорних ситуацій, а також від некомпетентного чи
зловмисного звернення до даних осіб, які можуть оновити, викривити або ж видалити
їх.
 Підтримання необхідного рівня незалежності даних. Як правило, від СКБД
вимагається наявність механізмів підтримання логічної та фізичної незалежності
даних.
 Підтримання необхідного рівня цілісності даних. Засоби опису і підтримання
обмежень цілісності мають бути достатніми для опису правил, законів і обмежень, що
діють у предметній області. Якщо ті чи інші обмеження не підтримуються
безпосередньо, то СКБД має надавати можливості для їхнього опису і підтримання
через відповідні засоби програмування.
 Розвинені засоби адміністрування. Передбачається, що СКБД надає всі необхідні
інструменти для підтримання функцій адміністрування баз даних.
Архітектура баз даних.
Термін «архітектура» може мати різні тлумачення. Наприклад, коли вказуються
функціональні модулі системи й способи їхньої взаємодії, йдеться про функціональну
архітектуру. Спосіб реалізації функцій системи, її компоненти та взаємозв’язки між ними
фіксує архітектура реалізації системи. У цьому контексті можна також згадати
архітектуру технічних засобів систем. Говорячи ж про термін «архітектура БД», ми
матимемо на увазі архітектуру інформапійного забезпечення.
Архітектура БД уперше була специфікована дослідницькою групою ANSI/X3/
SPARC Study Group on Data Base Management Systems (ANSI — Американський
національний інститут стандартів, ХЗ — його комітет обчислювальної техніки й обробки
інформації, SPARC — підкомітет ANSI/ХЗ з планування стандартів ANSI). Метою
дослідницької групи було визначення галузей і технологій баз даних, в яких було б доречно
проводити стандартизацію, а також вироблення рекомендацій для роботи в кожній із таких
галузей. Група дійшла висновку, що, можливо, єдиним аспектом систем баз даних, який
можна стандартизувати, є інтерфейси. Нею було докладено чимало зусиль для визначення
загальної архітектури системи баз даних. Запропонована цією групою архітектура стала
класичною та є актуальною й донині.
Основною ідеєю специфікації ANSI SPARC є виділення трьох архітектурних рівнів
бази даних, а саме: зовнішнього, концептуального та внутрішнього.
Концептуальний рівень
На концептуальному рівні здійснюється інтегрований опис предметної області, для
якої розробляється БД, незалежно від її сприйняття окремими користувачами та способів
реалізації в комп’ютерній системі. Основні поняття, що використовуються на
концептуальному рівні.
Предметна область (ПО) — частина реального світу, для якої здійснюється
концептуальне моделювання.
Концептуальна модель ПО – це формальне зображення сукупності думок, які
характеризують можливі стани ПО, а також переходи з одного стану в інший (включно з
класифікацією наявних у ПО сутностей, чинних правил, законів, обмежень тощо)
Концептуальне моделювання ПО – це процес побудови концептуальної моделі
ПО, яка б відображувала ПО з урахуванням вимог, висунутих до цього процесу
Концептуальна схема – це фіксація концептуальної моделі ПО засобами
конкретних мов моделей даних. У СКБД концептуальна модель подається у вигляді
концептуальної схеми.
Опишемо властивості концептуальної моделі (схеми) й характерні особливості
концептуального моделювання:
1. Спільне та однозначне тлумачення предметної області всіма
зацікавленими особами. До розробки складної бази даних залучається великий колектив:
експерти, системні аналітики, проектувальники, розробники, ті, хто займається
впровадженням і супроводом. Усі вони повинні однозначно розуміти, чим є ПО, в чому зміст
використаних понять, як вони взаємопов'язані між собою, які обмеження висуваються до
моделі ПО тощо. Спільність понять має забезпечувати концептуальна модель.
2. Концептуальна схема відображує лише концептуально важливі
аспекти ПО, виключаючи будь-які аспекти зовнішнього або внутрішнього
відображення даних. Ця модель не повинна відображувати конкретні потреби окремих
користувачів або застосувань. Вона має фіксувати, чим є ПО в цілому, а не з точки зору
інтересів або потреб користувачів. Для отримання цілісного уявлення про ПО її модель має
інтегрувати думки, погляди та інтереси окремих користувачів, але саме інтегрувати, а не
виражати їхні конкретні побажання.
3. Визначення допустимих меж еволюції бази даних. У процесі
експлуатації база даних може розвиватися, проте цей розвиток може відбуватися тільки в
межах, допустимих для концептуальної схеми.
4. Відображення зовнішніх схем на внутрішню. Саме через концептуальну
схему зовнішні дані відображуються на внутрішні, й навпаки. У такий спосіб створюється
єдина основа для опису даних і підтримки цих відображень.
5. Забезпечення незалежності даних. Наявність відображень
концептуальний- зовнішній і концептуальний-внутрішній дає змогу вирішувати
проблему логічної та фізичної незалежності даних. Будь-які зміни в тій чи іншій зовнішній
моделі не повинні спричиняти зміни в концептуальній або внутрішній моделях. У цьому
випадку має змінитися тільки відповідне відображення «концептуальний-зовнішній».
Аналогічно, будь-які зміни у внутрішній моделі не зачіпають концептуальну модель і моделі
зовнішнього рівня, а тільки приводять до змін відображення «концептуальний-внутрішній».
6. Централізоване адміністрування. Саме через концептуальну схему
здійснюється адміністрування баз даних.
7. Стійкість. Концептуальна схема не має підладжуватися до вимог тих чи
інших користувачів (зовнішній рівень) або до вимог зберігання даних (внутрішній рівень).
Будучи моделлю ПО, вона має змінюватися тільки тоді, коли входить у суперечність із нею.
Існує багато мов, які претендують на роль мов концептуального моделювання ПО.
Найпопулярнішими і широковживаними є мови, що належать до класу так званих графічних
мов, які оперують поняттями «сутність-атрибут-зв’язок» (Еп- tity-Relationship language).
Зовнішній рівень
Через зовнішній рівень користувачі та застосування отримують доступ до бази даних.
Мета зовнішнього рівня — надати користувачу/застосуванню лише ті дані, які йому потрібні
(а отже, до яких дозволений доступ) і в потрібному вигляді. Це індивідуальний рівень
користувача, яким може бути кінцевий користувач, програміст чи застосування. Кожен з них
має свою мову спілкування: для кінцевого користувача — це спеціальна мова запитів, для
програміста -– одна з мов програмування, розширена командами звернення до СКБД, для
застосувань – це, як правило, певний стандартний інтерфейс звернення до бази даних через
СКБД.
Зовнішня модель — це засоби зображення концептуальної моделі ПО з урахуванням
інтересів конкретних користувачів або застосувань. Кожна зовнішня модель подається в
СКБД у вигляді зовнішньої схеми.
Зовнішній рівень виконує такі функції:
1. Забезпечує зображення даних зручним для людини або застосування способом.
Ступінь незалежності зовнішнього зображення від концептуального рівня визначається
потужністю засобів опису відображення «концептуальний- зовнішній».
2. Сприяє вирішенню проблеми безпеки (захисту) даних. Надаючи користувачу
лише ті дані, що його цікавлять, ми залишаємо поза межами його доступу решту даних.
3. Сприяє вирішенню проблеми логічної незалежності даних. Це досягається
завдяки відображенню «концептуальний-зовнішній», що встановлює відповідність між
концептуальною схемою і конкретною зовнішньою схемою. Потужність його засобів
визначає ступінь логічної незалежності застосувань від даних.
Внутрішній рівень
Внутрішня модель є відображенням концептуальної моделі ПО з урахуванням
способів зберігання даних і методів доступу до них. Внутрішня модель відображується в
СКБД у вигляді внутрішньої схеми. Внутрішня модель — це не модель фізичної пам’яті з
характеристиками конкретних пристроїв зберігання даних (циліндри, доріжки тощо); вона
описується у вигляді нескінченної абстрактної лінійної пам’яті, яка може структуруватися за
допомогою інших абстрактних понять на зразок блоків, кластерів, індексів тощо.
Доступ до фізичної пам’яті надається за допомогою опису відображень внутрішньої
моделі на фізичну пам’ять операційної системи.
Загалом внутрішній рівень виконує такі функції.
1. Забезпечує настроювання бази даних для підвищення продуктивності обробки
даних, опису й підтримки планованої надлишковості.
2. Дає змогу описувати й підтримувати структури зберігання та методи доступу.
3. Сприяє вирішенню проблеми фізичної незалежності даних: зміни у внутрішній
схемі не повинні призводити до змін у зовнішній схемі.
4. Сприяє вирішенню проблеми безпеки (захисту) даних.
5. Вирішує проблему відображення даних на структури ОС, у яких дані
зберігаються (до таких структур належать зокрема файли).
Відображення
Можливе відображення зовнішнього рівня на концептуальний і концептуального
рівня на внутрішній. Відображення «зовнішній-концептуальний» визначає відповідність між
зовнішнім рівнем і концептуальним. Незалежність зовнішньої схеми, відтак і ступінь
логічної незалежності даних, обумовлюються потужністю засобів опису цих відображень.
Тобто можна описувати або змінювати зовнішню схему тільки в тих межах, які допускає це
відображення.
Подібне можна сказати і про відображення «концептуальний-внутрішній», яке
встановлює відповідність між концептуальною і внутрішньою моделями. Потужність його
засобів визначає ступінь фізичної незалежності застосувань від даних Будь-які зміни у
фізичній структурі не повинні призводити до змін у концептуальній моделі — змінюється
лише відображення «концептуальний-внутрішній».
За створення і ведення схем усіх рівнів (концептуальної, зовнішньої і внутрішньої), а
також відображень відповідає адміністратор бази даних. Окрім того, він виконує багато
інших функцій.
Функції систем керування базами даних
Система керування базами даних надає засоби для здійснення таких операцій:
1. Визначення даних (зовнішні, внутрішня і концептуальна схеми) та
відображень у певний формальний спосіб і реалізація цих визначень у вигляді
відповідних об’єктів. СКБД має обробляти вказівки мови опису даних (МОД) для опису
концептуальної схеми, підмови опису даних (ПМОД) для опису зовнішніх схем і мови
опису збережених даних (МОЗД) для опису внутрішньої схеми.
2. Маніпулювання даними. СКБД має сприймати, інтерпретувати й обробляти
запити користувачів на вибирання, оновлення і видалення наявних даних або на додавання
нових даних до бази. Ці запити мають бути сформульовані мовою запитів (M3) або мовою
маніпулювання даними (ММД).
Архітектура ANSI/SPARC не підтримується в повному обсязі жодною з сучасних
СКБД, особливо, якщо це стосується концептуального рівня. У більшості наявних систем
концептуальна схема насправді є простим об’єднанням усіх окремих зовнішніх схем,
доповненим засобами гарантування безпеки даних і правилами забезпечення цілісності.
Зовнішні схеми підтримуються за допомогою так званих віртуальних таблиць. Щодо
внутрішнього рівня, то він, як правило, підтримується різноманітними механізмами опису
структур зберігання даних і методів доступу до них.
У сучасних СКБД зазвичай підтримується єдина інтегрована мова, що містить усі
необхідні засоби для роботи з БД, починаючи від її створення, і забезпечує базовий,
призначений для користувача, інтерфейс баз даних. Стандартною мовою найпоширеніших на
сьогодні реляційних СКБД є мова SQL (Structured Query Language — мова структурованих
запитів).
Моделі даних ч.1.

Поняття про моделювання даних


Слово «дані» походить від латинського «datum» — факт, проте дані не завжди від-
повідають конкретним чи навіть реальним фактам. Іноді вони неточні або описують те, чого
насправді не існує. Даними ми вважатимемо опис будь-якого явища (чи ідеї), що викликає
зацікавленість через певні потреби. З даними нерозривно пов'язана їхня інтерпретація (або
семантика), тобто той зміст, який їм приписується.
Дані описуються тією чи іншою мовою і фіксуються на певному носії (скажімо,
папері). Зазвичай дані (факти) та їхня семантична інтерпретація фіксуються спільно. Проте в
деяких випадках дані й інтерпретація розділяються. Так, у зведеній статистичній таблиці
зверху, в її шапці, міститься інформація стосовно того, чим є дані (заголовок таблиці,
описова інформація, назви стовпців тощо), а нижче розташовуються власне рядки чисел.
Застосування комп'ютерів для введення й обробки даних сприяло ще більшому
розділенню даних та їхньої інтерпретації. Оскільки комп'ютери оперують даними як такими,
велика частина інтерпретуючої інформації взагалі явно не фіксується. Програма одержує
певні вхідні дані, обробляє їх і видає результат у вигляді сукупності вихідних даних.
З розвитком обчислювальної техніки з'явилася можливість фіксувати за допомогою
комп'ютерів семантику даних, тобто закладати інтерпретацію в програми, що оперують
даними.
Моделювання даних
Подання інформації за допомогою даних вимагає уніфікованого підходу до поняття
даних як незалежного об'єкта моделювання. Тому для розробника ІС вибір відповідної
моделі даних є однією з найважливіших проблем. Вибір моделі даних спричиняє вибір
засобів аналізу ПО, як області реального світу, що підлягає вивченню й обробці. Модель
даних обмежує можливість вибору СКБД, тому що звичайно окремо взята модель підтримує
певну модель даних. Таким чином, поняття моделі даних є одним із фундаментальних понять
інформатики, від якого багато в чому залежать механізми реалізації ІС як програмно-
апаратного комплексу.
Модель даних (Data Model) є логічна структура даних, що представляє притаманні
цим даним властивості, незалежні від апаратного й програмного забезпечення й не пов'язані
з функціонуванням комп'ютера.
Існує багато типів моделей: фізичні, математичні, економічні тощо, які
відображують різні аспекти реального світу. Модель даних відображує уявлення про
реальний світ. Проте важливо, аби обсяг знань і семантика даних, відтворені в моделі, були
адекватні способу використання даних. Також можна вважати, що модель даних це
сукупність структури даних, операцій над ними (операції маніпулювання даними) та
обмежень цілісності. Іншими словами, модель визначає, в який спосіб відбувається
об’єднання даних у структури різної складності, які існують обмеження на значення даних і
як здійснюється оперування цими даними.
Можна розглянути кілька аспектів моделювання в обробці даних:
 · інформаційне моделювання;
 · концептуальне моделювання (моделювання семантики ПО);
 · логічне моделювання даних;
 · фізичне моделювання:
 · створення моделей доступу до даних;
 · оптимізація фізичної організації даних в апаратному середовищі.
Основою для будь-якої структури даних є відображення елементарної одиниці даних
у вигляді такої трійки: <об’ект, властивість об’єкта, значення властивості> Сукупність
взаємопов'язаних між собою елементарних одиниць даних може відображуватися
різноманітними способами, що приводить до формування різних структур, а відтак - різних
моделей даних. Моделі даних поділяються на два класи: сильно та слабко типізовані
У сильно типізованих моделях усі дані мають належати до певної категорії, або
типу. Якщо дані не підпадають під жодну з категорій, їх потрібно типізувати штучно. Деякі
моделі будуються у такий спосіб, що категорії визначаються наперед і не можуть
змінюватися динамічно. Наприклад, категорія «службовець» — строго фіксована, й усі її
об’єкти повинні мати однакові властивості та структуру
Сильно типізовані моделі мають значні переваги, бо дають змогу побудувати
абстракції властивостей даних і дослідити їх у термінах категорій. Більшість моделей, що
використовуються в автоматизованих системах, зокрема й базах даних, належать до сильно
типізованих.
Для слабко типізованих моделей належність даних до тієї чи іншої категорії не
має жодного значення. Категорії використовуються настільки, наскільки це доцільно в
кожному конкретному випадку. Окремі дані можуть існувати як незалежно, так і у зв’язку з
іншими. Інформація про категорії (якщо вони використовуються) розглядається як
додаткова.
На відміну від сильно типізованих моделей, слабко типізовані забезпечують
інтеграцію даних і категорій.
Наявність у СКБД певної структури даних призводить до поняття баз структурованих
даних, тобто дані в таких БД повинні бути представлені як сукупність взаємозалежних
елементів. Варто мати на увазі, що для кожного типу БД використовуються відповідні моделі
даних.
У цей час для баз структурованих даних розрізняють три основних типи логічних
моделей даних залежно від характеру підтримуваних ними зв'язків між елементами даних -
мережну, ієрархічну й реляційну. Ознаками класифікації у цих моделях є: ступінь твердості
(фіксації) зв'язку, математичне подання структури моделі й припустимих типів даних (див.
таблицю 3.1).
Таблиця 1.1 – Загальні характеристики моделей даних
Модель даних Характер зв'язків між об'єктами Формальне подання
Мережна Напівтверді зв'язки Довільний граф
Ієрархічна Тверді зв'язки Деревоподібна структура
Реляційна Мінливі зв'язки Плоский файл

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

Рис 3.1. Основні типи моделей даних

Ієрархічна модель даних


Ієрархічна модель даних уперше була задіяна в системі IMS (Information Management
System — інформаційна керуюча система) у межах проекту висадки на Місяць. У першій
ієрархічній системі були повністю реалізовані функції СКБД, а саме: мови визначення та
маніпулювання даними, опис і підтримка обмежень цілісності, паралелізм, відновлення, а
також механізми ефективної обробки запитів. Варто сказати, що IMS і досі використовується
на мейнфреймах.
Згодом було розроблено ще декілька ієрархічних СКБД, і кожна з них привносила в
модель свою специфіку, зумовлену способом реалізації системи. Далі будуть розглянуті
найбільш загальні та принципові аспекти моделі.
Ієрархічна структура даних
Ієрархічна структура даних визначається ієрархічною впорядкованістю своїх ком-
понентів (або вузлів), тобто кожен вузол має не більше одного «батька» — старшого за
ієрархією вузла.
Структура складається зі схем елементів даних (описова інформація) та їхніх
екземплярів. Інакше кажучи, схема задає логічну структуру (або тип) елементу даних, а
екземпляр — його значення.
Елементарним значенням структури є пойменоване поле даних, а його екземпляр —
це елементарне значення.
Схема сегмента (яку називатимемо також просто сегментом) це поіменована
впорядкована сукупність імен полів. Сегмент є одиницею доступу до даних ієрархічної
структури під час взаємодії зовнішньої та оперативної пам’яті. Екземпляр сегмента –
впорядкована сукупність значень полів.
Ієрархічна схема даних — це ієрархічно впорядкована сукупність сегментів, що
має певні властивості:
 на найвищому рівні ієрархії розташований єдиний сегмент, що називається
кореневим;
 кожен інший сегмент, окрім кореневого, зв'язаний з одним і тільки одним сегментом
вищого рівня, який є для цього сегмента батьківським (початковим);
 сегмент може бути зв'язаний з одним або кількома сегментами нижчого рівня, які
називаються дочірніми (породженими);
 сегменти, що підпорядковані одному батьківському сегменту, називаються
близнюками;
 сегменти, що не мають дочірніх, вважаються листковими, або їх ше називають
листками.
Ієрархічний шлях (або просто шлях) – це послідовність сегментів, починаючи з
кореневого, де кожний попередній є «батьком» наступного. Рівень сегмента визначається як
кількість сегментів, що містяться на шляху, який веде від кореня до даного сегмента.
Для ієрархічної схеми використовується така графічна нотація (це набір символів,
що використовуються для візуального моделювання чого-небудь (зазвичай системи,
структури чи процесу):
 Кожний сегмент зображується у вигляді пойменованого прямокутника. Усередині
прямокутника записуються імена полів
 Ієрархічний зв'язок між сегментами позначається лініями зі стрілками, що проведені
від батьківського сегмента до дочірнього. Батьківські сегменти, як правило,
розміщують над дочірніми.
Приклад графічного зображення простої ієрархічної схеми даних наведений на рис.
3.2, а. Якщо немає необхідності уточнювати сегменти полями, що зазвичай робиться під час
загального аналізу ієрархічної структури предметної області, то в прямокутнику сегмента
зазначається його ім'я (рис. 3.2, б).
Рис. 3.2. Графічне зображення схеми ієрархічної структури даних: з уточненнями (а): без уточнень (б)
Моделі даних ч.2.
Екземпляр ієрархічної схеми даних складається з одного екземпляра кореневого
сегмента і, можливо, кількох екземплярів дочірніх сегментів для кожного екземпляра
батьківського сегмента. Припускається існування таких зв'язків між екземплярами
сегментів:
 кожний екземпляр будь-якого сегмента підпорядкований одному екземпляру
батьківського сегмента;
 екземпляр будь-якого сегмента (окрім кореневого) не може існувати без від-
повідного екземпляра батьківського сегмента;
 кожний екземпляр сегмента зв'язаний (підпорядковує собі) з усіма екземпля-
рами дочірніх сегментів;
 екземпляри одного сегмента, зв'язані з одним екземпляром батьківського сег-
мента, можуть бути зв'язані між собою в ланцюжок, що дає змоіу виконувати їхнє послідовне
перебирання у межах усіх сегментів, породжених з одного початкового.
У такий спосіб ієрархічна впорядкованість сегментів створює зв'язок «один- до-
багатьох» між екземплярами батьківського і дочірнього сегментів.
Ієрархічна схема інколи має розгалуження, як це показано на рис. 4.1. У подібному
випадку на рівні схеми батьківський сегмент може зв'язуватися з кількома дочірніми
сегментами

Рис. 4.1. Ієрархічна схема з розгалуженням

Ієрархічна структура даних — це сукупність ієрархічної схеми даних та всіх


можливих екземплярів цієї схеми. Сукупність ієрархічних структур даних називається
ієрархічною базою даних.
Переваги та недоліки ієрархічної моделі
До переваг ієрархічної моделі належать:
 розвинені низькорівневі засоби керування даними в зовнішній пам'яті;
 можливість побудови ефективних прикладних систем;
 економне використання пам’яті.
Зазначимо, що ієрархічна модель має також певні недоліки, які описані нижче.
 Асиметрія пошуку за симетричними запитами. Програми пошуку
викладачів за кафедрами та кафедр за викладачами принципово відрізняються: в першому
випадку структура ієрархії збігається зі структурою пошуку, а в другому — ні.
 Залежність між пошуком та відповідністю ієрархічної структури
наявним зв’язкам у предметній області. Якщо ієрархічна структура відповідає
структурі зв'язків ПО, то записувати пошукові вирази набагато легше.
 Низький рівень мови запитів і маніпулювання даними. Оскільки
маємо справу з мовою програмування процедурного типу, результатом однієї пошукової
операції є один екземпляр сегмента даних, або ж один екземпляр ієрархічного шляху до
заданого екземпляра сегмента. Це вказує на низьку селективну потужність мови.
 Аномалії додавання, видалення та оновлення даних. Не можна
здійснити операцію додавання сегмента ВИКЛАДАЧ без зазначення сегмента КАФЕДРА; не
можна видалити сегмент КАФЕДРА, на видаляючи сегментів ВИКЛАДАЧ; після оновлення даних
один і той самий екземпляр сутності зображується у вигляді багатьох екземплярів об'єктів
бази даних.
 Дублювання даних. Якщо об'єкти предметної області мають зв'язки типу
«один- до-одного» або «один-до-багатьох», то ієрархічна структура дає змогу зображувати
дані без дублювання; проте, якщо є зв'язки типу «багато-до-багатьох», то дублювання даних
під час відображення в ієрархічній моделі неминуче. Крім згаданих основних недоліків
ієрархічної моделі слід зазначити також складність реалізації гнучких механізмів захисту
даних, цілісності та несуперечності й «дружніх» інтерфейсів користувача.
Основні недоліки ієрархічної моделі пов'язані з тим, що не всі предметні області
мають чітко виражену ієрархічну структуру. Наприклад. якщо ми розглянемо предметну
область із сутностями «викладач», «дисципліна», «лекція» в ситуації, коли один викладач
читає лекції з багатьох дисциплін і одна й та сама дисципліна читається багатьма
викладачами, то вона «погано» піддається ієрархічній структуризації. Справа в тому, що між
викладачами і дисциплінами існує зв'язок типу «багато-до-багатьох», який не є адекватним
ієрархічній структурі даних.
Для відображення зв’язків цього типу була запропонована мережна модель даних.
Мережна модель даних
Мережна модель даних є розширенням ієрархічної моделі й призначена для
адекватного моделювання зв'язків між сутностями типу «багато-до-багатьох». Домінуючий
вплив на розвиток мережної моделі даних і побудованих на її основі систем баз даних мали
пропозиції групи CODASYL DBTG. Асоціація CODASYL, що створила мову програмування
COBOL, у 1967 році організувала робочу групу з питань баз даних, яка узагальнила мовні
специфікації систем БД. (Відповідні звіти були опубліковані в 1969 та 1971 роках, які за
найменуванням робочої групи – Data Base Task Group – отримали назви DBTG 69 і DBTG
71.)
Окрім формальної нотації для мережної моделі (мова опису даних — МОД) та
пов'язаних з нею певних ключових концепцій, DBTG запропонувала МОД під схеми для
означення зовнішнього відображення концептуальної схеми бази даних та мову опису
збережених даних (МОЗД) для означення способів зберігання даних на носіях. Сама
концептуальна схема описується за допомогою МОД. Запропонована була й мова
маніпулювання даними (ММД) для написання прикладних програм, що взаємодіють з базою
даних у термінах зовнішньої схеми (підсхеми).
Мережна структура даних
Мережна структура даних є сукупністю схеми та екземпляра схеми. У свою чергу
мережна схема формується з полів даних, типів записів і наборів, які також мають свої
екземпляри. Власне з екземплярів полів, записів та наборів складається екземпляр схеми.
Елементарною одиницею даних мережної (так само, як ієрархічної) структури є
поіменоване поле даних.
Тип запису – це пойменована впорядкована сукупність імен полів.
Екземпляр запису (аналог сегмента в ієрархічній структурі даних) – це впорядкована
сукупність значень полів запису. Екземпляр запису є одиницею доступу до даних мережної
структури.
Набір – поіменований дворівневий ієрархічний зв’язок типів записів. Набір є
основною конструкцією мови, запропонованої CODASYL DBTG. Із дворівневих наборів
можуть будуватися багаторівневі ієрархії та мережні структури. Кожний тип набору — це
сукупність зв'язків між двома або кількома типами записів, де один тип запису оголошується
власником, а інший (або кілька інших) — членами типу набору. Екземпляр набору містить
один екземпляр запису-власника і довільну кількість екземплярів кожного типу запису-члена
набору. Отже, набір описує дворівневий ієрархічний зв’язок типу «один-до-6агатьох».
Тип запису КАФЕДРА (рис. 4.2, а) є власником типу набору, а типи ДИСЦИПЛІНА і
ВИКЛАДАЧ - члени типу набору.
На рис. 4.2, б зображений екземпляр цього типу набору. Він містить один екземпляр
типу запису КАФЕДРА і декілька типів записів ДИСЦИПЛІНА та ВИКЛАДАЧ.
а) б)
Рис. 4.2. Приклад опису набору «Кафедра»: тип набору (а); екземпляр набору (6)

Типи наборів можуть використовуватися для створення багаторівневих


ієрархічних або мережних структур.
Трирівнева ієрархія у вигляді двох типів наборів: Кафедра і Наукові праці показана на
рис. 4.3. Тип запису ВИКЛАДАЧ є власником у типі набору Наукові праці та членом у типі
набору Кафедра.

Рис. 4.3. Трирівнева ієрархічна структура

Мережна структура може відображувати цикли та петлі. Циклом називається


конфігурація, в якій предок типу запису є водночас його нащадком. Приклад циклічної
мережної структури наведений на рис. 4.4, а. Тут вироби певного заводу є сировиною для
виробів іншого заводу.
Петля — це структура, де один тип запису є одночасно власником і членом в одному
типі набору. Структура виробів описана на рис. 4.4, б. Виріб складається з вузлів і деталей; у
свою чергу вузли можуть складатися з інших вузлів і деталей. Тоді навколо типу запису
ВУЗОЛ утворюється петля.

а) б)

Рис. 4.4. Приклади мережних структур: цикл (а); петля (б)

Переваги та недоліки мережної моделі


Для мережної моделі даних властиві майже ті самі переваги та недоліки, що й для
ієрархічної моделі. Принциповою відмінністю мережної структури від ієрархічної є
можливість безпосередньо відображувати складніші типи зв'язків. Натомість ієрархічні
системи простіші в реалізації та експлуатації.
Реляційна модель даних.
Базам даних постійно загрожувала небезпека перетворитися на громіздкі й дуже
складні для використання системи. Адже наявність сотень типів записів, зв'язаних сотнями
типів наборів, робили схему бази даних заплутаною, а її використання – неймовірно
складним завданням
Уникнути складності ієрархічної та мережної моделей вдалося в реляційній моделі
даних, що у певному розумінні була поверненням до файлових структур.
Структура даних у реляційній моделі може бути проінтерпретована як звичайна
двовимірна таблиця, що складається зі стовпців і рядків. Проте порівняно з ієрархічною та
мережною структурами рівень мови маніпулювання цією структурою значно вищий. Це дало
змогу більш глибоко й усебічно вирішити багато проблем, пов'язаних із базами даних, а
саме: вибирання даних, їхня незалежність, цілісність та захист.
Реляційна структура даних уперше дала можливість залучити до дослідження
практично всіх питань, пов'язаних з базами даних, формальні математичні дисципліни
(теорію множин, теорію відношень і т.д.), шо перетворило науку про БД, яка раніше багато в
чому мала описовий характер, на точну математичну дисципліну.
Реляційні системи не відразу набули широкого розповсюдження. Незважаючи на те,
що основні теоретичні результати в цій галузі були отримані ще в 70-х роках і саме тоді
з'явилися перші прототипи реляційних СКБД, тривалий час реалізація таких систем
вважалася неможливою. Проте поступове накопичення методів організації реляційних баз
даних, а також алгоритмів керування ними сприяли тому, що вже в середині 80-х років
реляційні системи майже цілком витіснили зі світового ринку попередні СКБД ієрархічного
та мережного типів.
Нині основним предметом критики реляційних СКБД є не їхня недостатня
ефективність, а властива цим системам певна обмеженість під час використання в так званих
нетрадиційних галузях (найпоширенішими прикладами є системи автоматизації
проектування), де потрібні гранично складні структури даних. Ще один недолік реляційних
баз даних полягає у відсутності засобів, які б могли адекватно відображувати семантику
предметної області. Іншими словами, можливості відображення знань про семантичну
специфіку предметної області в реляційних системах вельми обмежені. Сучасні дослідження
в галузі постреляційних систем головним чином присвячені саме усуненню цих недоліків.
Теоретичні основи реляційної моделі баз даних були закладені Е. Коддом на початку
70-х років XX століття. На відміну від поширених на той час систем з ієрархічними чи
мережними типами структур даних, реляційний підхід запропонував спрощені структури
даних — реляції, або таблиці, та розширив можливості мови маніпулювання даними. У
науковій літературі, присвяченій реляційним базам даних, на означення того, що було
названо вище реляцією або таблицею, часто застосовується термін відношення. Кожен із
цих термінів має свої переваги й недоліки.
Широкому поширенню і популярністю реляційна модель даних завдячує двом
істотним перевагам:
1) однорідністю подання даних у моделі, що обумовлює простоту сприйняття її
конструкцій користувачами БД;
2) наявністю розвиненої математичної теорії реляційних БД, що обумовлює
коректність її застосування.
Поняття відношення. Схеми відношень.
Як було згадано вище, однією з основних переваг реляційної моделі є її однорідність.
Всі дані розглядаються як збережені в таблицях, у котрих кожний рядок має той самий
формат. Кожний рядок у таблиці подає деякий об'єкт реального світу або співвідношення
між об'єктами.
Розглянемо приклад. Розклад рейсів літаків безсумнівно має регулярну структуру.
Кожний включений у розклад рейс має визначені характеристики, як от: пункт відправлення,
пункт призначення, час вильоту, час прибуття, номер рейса. Фрагмент розкладу може бути
поданий у виді таблиці.
Що цікавого в цьому розкладі? Кожний політ поданий сукупністю значень, узятих по
одному з кожного стовпчика таблиці. Є обмеження на ті дані, що можуть з'явитися у
визначеному стовпчику. Стовпчик з ім'ям ПУНКТ ВІДПРАВЛЕННЯ містить назви
аеропортів, що обслуговуються даною авіалінією, стовпчик ЧАС ПРИБУТТЯ містить
моменти часу доби. Інформаційне значення окремого рядка не залежить від порядку
стовпчиків. Стовпчики ЧАС ВИЛЬОТУ і ЧАС ПРИБУТТЯ можна було б переставити
місцями без зміни змісту. Нарешті, тому що кожний рейс має єдиний номер, то кожний рейс
представляється одним рядком.

Таблиця 5.1. РЕЙСИ (розклад авіалінії)


ПУНКТ ПУНКТ ЧАС ЧАС
НОМЕР
ВІДПРАВЛЕННЯ ПРИЗНАЧЕННЯ ВИЛЬОТУ ПРИБУТТЯ
83 Київ Харків 11.30 13.43
84 Харків Київ 15.00 17.55
109 Київ ІваноФранківськ 21.50 2.52
213 Київ Львів 11.43 12.45
214 Львів Київ 14.20 15.12

Розклад у табл. 5.1 являє собою приклад відношення типу РЕЙСИ.


Формат відношення визначається множиною імен (міток) стовпчиків {НОМЕР,
ПУНКТ ВІДПРАВЛЕННЯ, ПУНКТ ПРИЗНАЧЕННЯ, ЧАС ВИЛЬОТУ, ЧАС ПРИБУТТЯ}.
Ці мітки називаються іменами атрибутів. Кожному імені атрибута ставиться у
відповідність множина припустимих для відповідного стовпчика значень. Ця множина
називається доменом даного імені атрибута.
Доменом атрибута НОМЕР могло б бути множина усіх одно, дво, тризначних цілих
чисел. Кожний рядок відношення є множиною значень, узятих по одному з домену кожного
імені атрибута. Рядки відношення називаються кортежами.
Кортежі відношення утворюють множину, тому що рядки не дублюються. У
множині імен атрибутів відношення існує така підмножина, що кортежі відношення можуть
бути однозначно визначені значеннями відповідних атрибутів підмножини. Така підмножина
називається ключем цього відношення. Для відношення, описаного в табл. 5.1, {НОМЕР} є
ключем.
У класичному алгебраїчному розумінні відношення визначається як підмножина
декартового добутку деяких множин, але у реляційному відношенні суттєвим є не місце
розташування компонента (стовпця), а його ім’я.
Таблиця розкладу руху літаків, умовно кажучи, складається з двох частин: наповнення
та опису структури таблиці. Наповнення – це ті номери рейсів потягів чи літаків та час
їхнього відправлення, що занесені у відповідні клітинки таблиці й періодично змінюються, а
структура таблиці описується заголовками стовпців. Згідно з термінологією баз даних і
реляційного підходу, наповнення таблиць називають даними. Інколи буває так, що таблиця
розкладу містить лише порожні стовпці. Такий об'єкт фахівець з баз даних міг би назвати
схемою.
Сукупність схем реляційних відношень називають схемою бази даних, або
реляційною схемою.
Схема реляційного відношення має такі властивості:
1. реляційне відношення має ім’я;
2. імена атрибутів у межах схеми одного реляційного відношення мають бути
унікальними;
3. порядок атрибутів у схемі реляційного відношення не є суттєвим, оскільки звернення
до атрибута здійснюється за його іменем, а не за номером.
Формалізація відношень
Схемою відношення R називається кінцева множина імен атрибутів {A1,A2 ,...,An}.
Кожному імені атрибута Ai, ставиться у відповідність множина Dі, названа доменом атрибута
Ai 1≤і≤n. Домен атрибута Ai будемо також позначати як dom( Ai ). Імена атрибутів іноді
називаються в літературі символами атрибутів або просто атрибутами. Домени є
довільними непустими кінцевими або перечислюваними множинами. Нехай D = D1 U D2 U
...U Dn . Відношення r зі схемою R – це кінцева множина відображень { t1 ,t2 ,...,tp } з R у D;
причому кожне відображення t  r повинно задовольняти такому обмеженню: t{Ai }
належить Di , 1≤і≤n. Ці відображення називаються кортежами.
Приклад 1.1. У табл. 5.1 схемою відношення є множина РЕЙСИ {НОМЕР, ПУНК Т
ВІДПРАВЛЕННЯ, ПУНКТ ПРИЗНАЧЕННЯ, ЧАС ВИЛЬОТУ, ЧАС ПРИБУТТЯ}.
У якості доменів можуть виступати такі множини:
1. dom (НОМЕР) = множина одно, дво, тризначних цілих чисел.
2. dom (ПУНКТ ВІДПРАВЛЕННЯ)= dom (ПУНКТ ПРИЗНАЧЕННЯ) = {Київ, Харків,
ІваноФранківськ, Львів, Запоріжжя}
3. dom (ЧАСВИЛЬОТУ) = dom (ЧАСПРИБУТТЯ) = множина моментів часу протягом
доби.
Відношення в табл. 1.1 має п'ять кортежів. Один із них, що позначається t ,
визначений як t (НОМЕР) = 84, t (ПУНКТ ВІДПРАВЛЕННЯ) = Харків, t (ПУНКТ
ПРИЗНАЧЕННЯ) = Київ. t (ЧАС ВИЛЬОТУ) = 15.00. t (ЧАС ПРИБУТТЯ) = 17.55.
Під кортежем будемо розуміти множину значень, узятих по одному для кожного
імені атрибута зі схеми відношення. Визначені відображення, є не чим іншим, як
відповідностями цього типу. Тепер, коли формально усунуте будь-яке явне упорядкування у
відношеннях, майже в кожному випадку для позначення відношення будемо записувати
атрибути в деякому порядку, а кортежі подавати списками в тому ж порядку.
Екземпляр реляційного відношення це його наповнення, точніше, екземпляр є
множиною кортежів,
Екземпляр відношення має такі властивості:
 порядок кортежів довільний;
 кортежі, як елементи множини, мають бути унікальними в межах реляційного
відношення.
Реляційне відношення може бути зображене у вигляді таблиці.
Таблиця — це пойменоване двовимірне зображення відношення; вона складається з
одного чи більше пойменованих стовпців і нуля або більше рядків. Назва таблиці відповідає
імені реляційного відношення, імена стовпців — іменам атрибутів, а рядки — кортежам.
Відповідність термінів, що вживаються під час розгляду реляційних відношень та
їхніх табличних зображень, вказана в табл. 5.2.
Таблиця 5.2.
Відповідність термінів, що вживаються під час розгляду реляційних відношень та їхніх
табличних зображень
Формальний термін Неформальний еквівалент
Відношення Таблиця
Кортеж Рядок, запис
Кардинальність Кількість рядків
Атрибут Стовпець, поле
Степінь Кількість стовпців
Первинний ключ Ідентифікатор
Домен Область допустимих значень

Варто обговорити конкретне значення кортежу t на атрибуті A, що назвемо A-


значенням кортежу t. Якщо t розглядається як відображення, то A значення t позначається
як t ( A) . Якщо ж інтепретувати t як рядок таблиці, то A значення кортежу t є входом кортежу
t в стовпчик з ім'ям A. Оскільки t є відображенням, можна обмежувати область визначення
кортежа t . Нехай X підмножина R . Будемо записувати це обмеження як t ( X ) і називати
його X-значенням кортежу t . Формально t (A) і t ({A}) є різними об'єктами, але,
притримуючись заплутаних традицій теорії реляційних баз даних, ми часто позначаємо
буквою A одноточкову множину{A} . Таким чином приховується розходження між t ( A) і t
({A}) , хоча одне є просто значенням, а інше відображенням з A у це значення.
Тема 6. Ключі відношень. Основи реляційної алгебри.

Поняття ключа

У будь-якому реляційному відношенні можна виділити таку множину атрибутів, що набори


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

Ключ відношення r зі схемою R є підмножиною K = {B1,B2 ,...,Bm}  R (  -підмножина) з


такою властивістю: Для будь-яких двох різноманітних кортежів t1 і t2 в r існує таке B  K , що
t1(B)  t2(B) . Іншими словами, не існує двох кортежів, що мають те саме значення на всіх атрибутах із
K . Цю умову можна записати так: t1(K)  t2(K) . Таким чином, достатньо знати K значення кортежу,
щоб ідентифікувати кортеж однозначно.

Приклад 6.1. У табл. 5.1 множини {НОМЕР} і {ПУНКТ ВІДПРАВЛЕННЯ, ПУНКТ ПРИЗНАЧЕННЯ} є
ключами.

Прийнято використовувати початкові заголовні букви латинського алфавіту для імен


атрибутів, останні заголовні букви латинського алфавіту для схем відношень і малі літери для
відношень. Схема відношення R = {A1,A2 ,...,An} позначається як R = [A1,A2 ,...,An], або іноді A1,A2 ,...,An ,
коли ім'я схеми несуттєве. Відношення r зі схемою R записується r(R) або r(A1,A2 ,...,A ) .. Для
позначення ключа відношення підкреслюються імена атрибутів ключа.
Відношення r зі схемою ABCD з ключем AC записується як r( ABCD) . Можна також включити
ключ у схему відношення: R[ABCD] . Будь-яке відношення r(R) обмежене тим, що має AC в якості
ключа. Якщо потрібно зазначити більш одного ключа для схеми або відношення, то необхідно
перерахувати ці ключі окремо, тому що підкреслення в цьому випадку нічого не дає.

Відношення може мати декілька різних ключів.

Ключ називається простим, якщо складається з одного атрибута, і складеним – якщо з


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

Ключі, явно перераховані разом із реляційною схемою, називаються виділеними ключами.


Можуть бути ключі, відмінні від виділених, вони називаються неявними ключам (тобто явно не
зазначеними).

Визначення 6.1. Ключ відношення r(R) є підмножиною K  R , такою, що для будь-яких


різних кортежів t1 і t2 з r виконується t1 (K)  t2 (K) і жодна власна підмножина K’  K не має цієї
властивості. Множина K є суперключем відношення r , якщо K містить ключ відношення r .

Нове визначення суперключа збігається з попереднім визначенням ключа.

Старе визначення ключа буде ставитися до виділених ключів, тобто виділений ключ може
бути суперключем.

Приклад 1.5. У табл. 1.1. {НОМЕР} є ключем (і суперключем), а {НОМЕР, ПУНКТ


ВІДПРАВЛЕННЯ} є суперключем, але не є ключем.
Різноманітні стани відношень можуть мати різноманітні ключі. Проте схеми відношень
повинні бути інваріантними від часу, і хотілося б, щоб ключі, задані в реляційній схемі, не
змінювалися. Таким чином, бажаючи визначити ключі для схеми відношення, ми повинні
переглянути всі стани відношення з цією схемою. Ключі повинні залишатися ключами у всіх
припустимих станах.

Приклад 1.6. У табл. 1.1 {ПУНКТ ВІДПРАВЛЕННЯ, ПУНКТ ПРИЗНАЧЕННЯ} є ключем відношення.
Проте цілком можливо, що можуть бути два рейси між тими самими пунктами відправлення і
призначення, хоча вони безсумнівно повинні здійснюватися в різний час. Отже, {ПУНКТ
ВІДПРАВЛЕННЯ, ПУНКТ ПРИЗНАЧЕННЯ, ЧАС ВИЛЬОТУ} є ключем схеми відношення РЕЙСИ.

Первинний ключ має такі властивості:

 кожне реляційне відношення має один і лише один первинний ключ;


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

Зовнішні ключі мають такі властивості:


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

Реляційна алгебра

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

У класичному розумінні алгебра визначається як пара, що складається з основної множини і


множини операцій (сигнатури), при цьому аргументи й результат кожної операції належать основній
множині.

Реляційна алгебра є алгеброю в строгому класичному розумінні її визначення. Елементами


основної множини є реляційні відношення. У зв’язку з цим операції алгебри можуть вкладатися одна
в одну, тобто аргументом певної операції може бути результат виконання іншої операції. Це дає
можливість записувати запити довільного рівня складності у вигляді виразів, що містять вкладені
одна в одну операції.

Реляційні оператори – це оператори, що містять у собі ціле відношення.

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

Якщо r і s – відношення зі схемою R , то r  s,r  s і r – s також є відношеннями зі схемою R .


Множина r  s – це відношення q(R) , що містить усі кортежі, що належать одночасно r і s ; r  s – це
відношення q( R) , що містить усі ті кортежі, які належать або r , або s ; r - s – це відношення, що
містить ті кортежі, що належать r , але s не належать. Зауважимо, що перетин може бути визначений
як різниця множин:

r  s = r – (r – s) .
Нехай dom(R) – множина всіх кортежів над атрибутами схеми R і їхніх доменів. Доповнення
відношення r(R) можна визначити як різницю r = dom(R) – r . Проте, якщо якийсь атрибут A у R має
нескінечний домен, r також буде нескінечним і не буде відношенням у нашому розумінні.
Модифікована версія доповнення, що називається активним доповненням, завжди дає
відношення. Визначимо його. Якщо r(A1,A2 ,...,An) – відношення і Di = dom( Ai ), 1≤і≤n, то активним
доменом Ai відносно r називається множина adom(Ai,r) = {d  Di |та існує t r з t(Ai) = d}. Нехай
adom(R,r) – множина всіх кортежів над атрибутами з R і їхніх активних доменів відносно r . Активним
доповненням r є r = adom(R,r) - r . Зауважимо, що r – завжди відношення.

Для {a1,a2}, {b1,b2,b3} і {c1,c2} як доменів атрибутів A, B і C домен схеми R і доповнення


відношення r , виведене з домену схеми R , показані нижче
Щоб ввести активне доповнення відношення r (яке є r ), зауважимо, що активний домен B у
відношенні r не містить b3 .

Активним доменом відношення r й активного доповнення відношення r є

Активне доповнення може виникнути природно. Припустимо, що компанія має програму підготовки,
розраховану на роботу кожного службовця протягом двох тижнів у кожному з декількох відділів. Інформація
про те, хто й у якому відділі успішно завершив програму підготовки, могла б зберігатися у відношенні
спеціаліст (СЛУЖБОВЕЦЬ, ВІДДІЛ). Відношення спеціаліст повідомило б, хто у якому відділі не завершив
підготовки за умови, що кожний службовець, який проходить підготовку, і кожний відділ згадані у відношенні
спеціаліст. Активне доповнення може бути також використане як пристрій стиску пам'яті, коли активне
доповнення відношення має менше кортежів, ніж саме відношення.
Тема 7. Реляційні оператори та операції на відношеннях.
ОПЕРАТОР ВИБОРУ
Вибір – це унарна операція над відношенням. Результатом її застосування
до відношення r є інше відношення, яке являє собою підмножину кортежів
відношення r з визначеним значенням у виділеному атрибуті.
Нехай r відношення зі схемою R, A атрибут в R і a елемент із dom(A) .
Тоді  A a =a(r) -позначення операції вибору (“вибрати в r кортежі, у яких
значення A дорівнює a”). Розглядаючи кортежі як відображення, можна
записати, що r'(R) = {t  r | t( A) = a} .
Оператори вибору комутують щодо їхньої композиції. Нехай r(R)
відношення, A і B атрибути в R, і нехай a dom( A), b dom(B) . Тотожність
 A a (  B  b (r)) =  B  b (  A a (r)) завжди має місце.
Оператор вибору дистрибутивний щодо бінарних булевих операцій:
 A  a rs  =  A  a (r ) A  a ( s) )
де  –  ,  або –, а r та s – відношення над однією і тією ж схемою.

ОПЕРАТОР ПРОЕКЦІЇ
Оператор проекції також є унарним оператором на відношеннях. Але
якщо оператор вибору вибирає підмножину рядків у відношенні, то оператор
проекції вибирає підмножину стовпчиків. Нехай r відношення зі схемою R і X –
підмножина з R . Проекція r на X , записана як  X (r) , є відношення r'( X ) ,
отримана викреслюванням стовпчиків, що відповідають атрибутам R-X.
Розглядаючи кортежі як відображення,  X (r) можна записати у виді r' ( X ) =
{t( X ) | t r} .
Якщо дві проекції виконуються послідовно і друга з них власна, то вона
поглинає першу: якщо  Y застосовується до  X(r) , то результат буде тим же
самим, як при застосуванні  Y безпосередньо до r , якщо початкове
застосування  Y було власним. Більш точно, для даного r(R) і Y  X  R
справедливо  Y(  X(r)) =  Y(r) . Аналогічне твердження справедливе для
послідовності проекцій: якщо X1  X2  ...  Xm  R , то  X1(  X2
(...(  Xm(r))...)) =  X1(r) .
Проекція комутує з вибором, коли атрибут або атрибути для вибору
знаходяться серед атрибутів множини, на який здійснювалась проекція.
ОПЕРАТОР З'ЄДНАННЯ
З'єднання – це бінарний оператор для комбінування двох відношень.
Проілюструємо його виконання на прикладі. Припустимо, що в базі
даних про гіпотетичну авіалінію знаходяться два списки: список типів літаків,
що можуть бути використані в кожному рейсі, і список типів літаків, котрими
кожний пілот має право управляти. Ці списки зберігаються у виді відношень
придатність (РЕЙС ТИПЛІТАКА) і право (ПІЛОТ ТИПЛІТАКА).
У табл. 7.1 показані їхні можливі стани.
Таблиця 7.1. Можливі стани відношень придатність (РЕЙС ТИП ЛІТАКА) і
право (ПІЛОТ ТИП ЛІТАКА)
РЕЙС ТИП ЛІТАКА

83 727

83 747

84 727

84 747
109 707

ПІЛОТ ТИП ЛІТАК


Семенюк 707
Семенюк 727
Ільчук 747
Кіт 727
Кіт 747

Таблиця 7.2. Відношення варіанти зі схемою {РЕЙС, ТИП ЛІТАКА, ПІЛОТ}


РЕЙС ТИП ЛІТАКА ПІЛОТ
83 727 Семенюк
83 727 Кіт
83 747 Ільчук
83 747 Кіт
84 727 Семенюк
84 727 Кіт
84 747 Ільчук
84 747 Кіт
109 707 Семенюк
Таблиця 7.3. Обчислення проекції  (РЕЙС-ПІЛОТ ) (варіанти)
 (РЕЙС-ПІЛОТ ) (варіанти) =
РЕЙС ПІЛОТ
83 Семенюк
83 Кіт
83 Ільчук
84 Семенюк
84 Кіт
84 Ільчук
109 Семенюк

У загальному випадку оператор з'єднання комбінує два відношення по


всіх їхніх загальних атрибутах. Розглянемо два відношення r(R) й s(S) і
покладемо RS = T (RS=R  S). З'єднанням відношень r і s , що записується як r
 s , є відношення q(T) , що містить усі t кортежі над T , такі, що існують tr
 r, ts  s кортежі tr = t(R) та ts = t(S) . (R  S є підмножиною обох R і S , як
наслідок визначення tr (R  S) = ts (R  S) ). Таким чином, кожний кортеж у q
є комбінацією кортежу з r і кортежу з s із рівними (R  S) -значеннями.
Звичайно під декартовим добутком двох відношень розуміється
множина упорядкованих пар кортежів.
Інші операції на відношеннях
Розглянемо реляційні оператори, які є не настільки елементарними, як
попередньо згадані. Деякі оператори є узагальненням введених раніше; інші, як
можна показати, є еквівалентними певним послідовностям вже визначених
операторів. Множина відношень і констант разом із цими операторами утворює
реляційну алгебру. Буде показано, що можна обмежити множину операторів,
зберігаючи при цьому виразну силу реляційної алгебри. Нарешті, аналізуються
дві операції, що не належать алгебрі, але іноді корисні при реалізації бази
даних.

Оператор поділу
Визначення 1. Нехай r(R) і s(S) –відношення, S  R . Визначимо R' = R -
S . Тоді r , поділене на s – відношення r' (R' ) ={t | для кожного кортежа t  s
існує кортеж tr  r , такий, що tr(R’)=t і tr(S)=ts} . Відношення r' є часткою від
ділення r на s , що позначається r  s . Другий спосіб формулювання
визначення наступний: r  s – це максимальна підмножина r' множини  Rr  ,
такої, що r'  s міститься в r . З’єднання в цьому випадку є декартовим
добутком.
Постійні відношення
При обговоренні відношення попередньо було показано, що результат
операції вибору може бути отриманий при виконанні операції з’єднання з
постійним відношенням. Введемо тепер спеціальний спосіб запису постійних
відношень безпосередньо у виразах. Якщо A1,A2 ,...,An – різні атрибути, а cі є
константою з dom(Aі) для 1≤і≤n, то запис c1 : A1 c2 : A2cn : An представляє
постійний кортеж c1 c2 cn за схемою A1,A2 ,...,An . Постійне відношення
за схемою A1,A2 ,...,An представляється як множина кортежів. Нехай cij –
константа з dom(Aі) для 1≤і≤n і 1≤j≤n. Тоді
{ c11 : A1 c21 : A2cn1 : An ,

c12 : A1 c22 : A2cn2 : An ,..

c1k : A1 c2k : A2cnk : An }

представляє відношення, яке звичайно записувалось так:


( A1 A2  An )
c11 c21  cn1
c12 c22  cn 2
   
c1k c2k  cnk
У випадку коли постійне відношення складається з одного єдиного
кортежа, фігурні дужки іноді опускають. Для кортежа з єдиним атрибутом іноді
опускають кутові дужки(" "i" ").
Постійне відношення з будь-яким числом кортежів і будь-яким числом
атрибутів може бути побудоване з постійних відношень з одним кортежем і
одним атрибутом за допомогою операторів з’єднання і об’єднання.
Приклад 7.1. Відношення використання
(ПІЛОТ ТИП ЛІТАКА)
Дідик 707
Дейнека 707
може бути подане як (<Дідик : ПІЛОТ>  <707 : ТИП ЛІТАКА>) 
(<Дейнека : ПІЛОТ>  <707 : ТИП ЛІТАКА>).
Перейменування атрибутів
Щоб формально ввести нове відношення, визначимо оператор
перейменування  . Нехай r – відношення зі схемою R, А – атрибут, що
належить R, а В атрибут, що не належить R - А. Припустимо R' = (R - А)В.
Тоді r з А, перейменованим в В, що позначається як  A B (r ) , є
відношення r'(R') = {t'| t' (R - А) = t (R - А) і t'(B) =t (A)}.
Потрібно, щоб A і B мали той самий домен (мали ту саму область
визначення).
Зауважимо, що одночасне перейменування іноді не може бути записане у
вигляді послідовності перейменувань окремих атрибутів без уведення
додаткового атрибутного символу.
Оператор еквіз’єднання
У визначенні оператора з’єднання, поданому вище, відношення можуть
комбінуватися тільки по однойменних стовпцях і повинні комбінуватися по всіх
таких стовпцях. Відношення можуть з’єднуватися також по стовпцях з різними
іменами атрибутів, але рівними доменами.
Може існувати атрибут A , такий, що A R і A S . В еквіз’єднанні r і s
бажано, щоб для кожної появи A був свій стовпець. Звідси, у визначенні слід
ввести умову, що R S   . Вона не є сильним обмеженням: якщо R і S
мають непустий перетин, то можна перейменувати атрибути в r або s , так щоб
перетин схем став пустим. Зауважимо, що може і не бути порівнянь в
еквіз’єднанні, тобто у визначенні можливо, що m = 0 . У цьому випадку
еквіз’єднання r [ ] s є декартовим добутком r і s .
Щоб підкреслити різницю між з’єднанням, і еквіз’єднанням, попереднє
з’єднання будем інколи називати природнім з’єднанням. Еквіз’єднання більш
зручне, так як воно може бути виражене через перейменування і природне
з’єднання. Природне з’єднання також може мати вираз, який використовує
еквіз’єднання.
Тема 8. РЕЛЯЦІЙНА АЛГЕБРА
Оператори об’єднання, перетину, різниці, активного доповнення і ділення
перейменування разом з постійними відношеннями і регулярними відношеннями відносяться
до реляційної алгебри. Будь-який вираз, правильно побудований з допомогою цих
операторів і відношень, називається алгебраїчним виразом. Для даного алгебраїчного виразу
E і даних актуальних значень усіх відношень в E можна вирахувати E і отримати єдине
відношення. Тим самим E є відображенням з сукупності відношень у відношення.
Використовувані множини доменів, множини атрибутів і множини порівнянь
фактично встановлюють обмеження на домени відображень, які можна визначити.
Визначення 8.1. Нехай U–множина атрибутів, що називається універсумом, D
множина доменів, і нехай dom –повна функція з U в D . Нехай, R= {R1, R2,.., Rp} – множина
різних схем відношень, де Ri  U , а d = {r1, r2,.., rp} – множина всіх таких наборів
відношень, що ri є відношення зі схемою Ri , 1≤і≤p . Окрім того, нехай  –множина бінарних
відношень над доменами з D, яка містить у крайньому випадку відношення рівності і
нерівності для кожного домена. Реляційною алгеброю над U, D, dom, R, d і Q називається 7-
арний кортеж B = (U, D, dom, R, d,  , O) , де O – множина операторів об’єднання, перетину,
різниці, ділення, перейменування, що використовують атрибути з U, операторів вибору, що
використовують відношення з  . Алгебраїчним виразом над B називається будь-який вираз,
правильно побудований з відношень, які належать d , і постійних відношень зі схемами з U ,
використовуючих оператори з O.
В алгебраїчних виразах допускаються круглі дужки і вважається, що одні бінарні
оператори не мають переваги над іншими, за винятком звичного пріоритету  над  .
Також можна опускати дужки для послідовностей відношень, зв’язаних одним і тим же
оператором, якщо ця операція є асоціативною. Зауважимо, що два відношення з однією і
тією ж схемою не допускаються.
Імена відношень r1, r2,...,rp є аналогами змінних програми, де значення rі пробігають
множину відношень зі схемою Rі.
Алгебраїчні відношення, як відображення
Так як результатом кожної реляційної операції є одне відношення, то кожне
алгебраїчне відношення визначає функцію, яка відображає множину відношень в одне
відношення. Схема цього відношення залежить від схем множини відношень, які складають
алгебраїчний вираз E . Позначимо її через sch(E) і будемо називати її схемою алгебраїчного
виразу E .
Можна визначити sch(E) рекурсивно, згідно наступних правил:
1) Якщо E  rі , то sch(E) є схемою відношення rі .
2) Якщо E – постійне відношення, то sch(E) є схемою постійного відношення.

3) Якщо E = E1  E2 , E1  E2, E1 – E2, E1 чи  c (E1), де C –деяка множина умов, то sch(E) =


sch (E1) .

4) Якщо E =  X (E1) , то sch(E) = X .

5) Якщо E = E1+E2, то sch (E) = sch(E1) – sch(E2) .

6) Якщо E = E1  E2 чи E1|C|E2 для деякої множини умов C, то sch(E) = sch(E1)  sch(E2) .

7) Якщо E A A  A  B B B ( E1 ) , то sch(E)= (sch(E1)–A1 A2 ...Aк )B1 B2 ...Bк.


1 2 k 1 2 k
Якщо E є алгебраїчним виразом, в який входять імена відношень s1,s2,...,sq, що
відповідають, схемам S1, S2,..., Sq, то E є відображенням : E:Rel(S1)  Rel(S2)  ...  Rel(Sq) 
Rel(sch(E)), де Rel(R) –множина всіх відношень зі схемою R . Іноді буде використовуватися
запис E(s1, s2,.., sq) для значення E на множині відношень з іменами s1, s2,..., sq.
Інколи може виникнути потреба у використанні оператора доповнення. Якщо додати
доповнення до вищенаведеної множини операторів, то одержимо реляційну алгебру з
доповненням. Алгебраїчний вираз E , що містить доповнення потенційно відображає
множину відношень в нескінченне відношення.
Обмеження множини операторів
Як вже зазначалося реляційні оператори не є незалежними. Існує звужена (обмежена)
множина операторів, яка має таку ж потужність, що і повна множина. Одна з таких множин
подана в наступній теоремі.
Теорема 8.1. Нехай E –вираз над реляційною алгеброю R , що використовує імена
відношень s1, s2,..., sq. Існує вираз E’ над R , який визначає ту ж функцію від s1, s2,..., sq і
використовує постійні відношення з єдиним атрибутом і єдиним кортежем, оператори
вибору з одним порівнянням, природнього з’єднання, проекції, об’єднання, різниці і
перейменування.
Наслідок. Нехай E – вираз над реляційною алгеброю R з операцією доповнення, що
використовує імена відношень s1, s2,..., sq. Тоді існує вираз E' над R , який визначає ту ж
функцію від s1, s2,..., sq і використовує тільки постійні відношення з єдиним атрибутом і
єдиним відношенням, оператори вибору з одним порівнянням, природного з’єднання,
проекції, об’єднання, доповнення і перейменування.
Оператор розщеплення
Аргументом оператора розщеплення є одне відношення, а результатом пара
відношень. Розщеплення не включене в реляційну алгебру, тому що значення кожного
виразу в алгебрі повинне бути єдиним відношенням. Нехай r – відношення зі схемою R , і
нехай β(t) – предикат {Предикат містить позначення для довільних об'єктів певного класу.
При заміщенні змінних іменами об'єктів даного класу, предикат задає точно визначене
висловлювання.} на кортежах над R . Тоді розщепленням r по β , яке записується SPLIT (r),
називається пара відношень (s, s') , обидва зі схемою R, такі, що s = {t r | β(t)} і s' = {t r | не
β(t)} . Зрозуміло, що s'=r–s . На предикат β не накладається жодних обмежень, за винятком
того, що його значення залежать тільки від кортежа t, але не від стану r.
Функціональні залежності
Створення баз даних переслідує дві основні цілі: понизити надлишковість даних і
збільшити їх надійність. Як буде показано надалі, будь-яке апріорне знання про різного роду
обмеження, що накладаються на сукупність даних, може принести велику користь для
досягнення вказаних цілей. Один з способів формалізації цих знань – встановлення
залежностей між даними. Далі розглянемо тільки один вид залежностей між даними –
функціональна залежність, яка позначається як F-залежність.
Означення
Функціональна залежність являє собою узагальнене поняття ключа. Представлене
відношення графік (ПІЛОТ РЕЙС ДАТА ЧАС ВИЛЬОТУ). Це відношення показує, який
пілот задіяний в даному рейсі в даний день і який час вильоту літака. На будь-які
співвідношення значень атрибутів ПІЛОТ, РЕЙС, ДАТА і ЧАС ВИЛЬОТУ, що допускаються
у розкладі, накладаються наступні обмеження:
1) для кожного рейсу назначається тільки один час вильоту;
2) для даного пілота, дати і часу вильоту можливий тільки один рейс;
3) для даного рейсу і дати назначається тільки один пілот.
Таблиця 4.1. Відношення графік (ПІЛОТ РЕЙС ДАТА ЧАС ВИЛЬОТУ)
графік (ПІЛОТ РЕЙС ДАТА ЧАС ВИЛЬОТУ)
Дяків 83 9 серпня 10:15
Дяків 116 10 серпня 13:25
Кіт 281 8 серпня 5:50
Кіт 301 12 серпня 18:35
Кіт 83 11 серпня 10:15
Бойко 83 13 серпня 10:15
Бойко 116 12 серпня 13:25
Музика 281 9 серпня 5:50
Музика 281 13 серпня 5:50
Музика 412 15 серпня 13:25
Ці обмеження є прикладами F-залежностей. F-залежність має місце, коли значення
кортежу на одній множині атрибутів єдиним чином визначають ці значення на іншій
множині атрибутів. Названі вище обмеження можна сформулювати так:
1. ЧАС функціонально залежить від РЕЙСУ.
2. РЕЙС функціонально залежить від {ПІЛОТ, ДАТА,ЧАС}.
3. ПІЛОТ функціонально залежить від {РЕЙС, ДАТА}.
Звичайно порядок в цих послідовностях змінюється і кажуть, що РЕЙС, ДАТА
функціонально визначають ПІЛОТ, або символічно: {РЕЙС, ДАТА}=>ПІЛОТ. (Нагадаємо,
що для одиничного атрибута припускається позначення А замість {А}).
Дамо строге визначення понять, використовуючи реляційні оператори. Нехай r –
відношення зі схемою R, X,Y – підмножини R. Відношення r задовільняє функціональній
залежності X  Y , якщо  Y ( X  x (r )) має не більше ніж один кортеж для кожного X-
значення x. Один з способів інтерпретувати ці вирази – розглянути два кортежа t1 і t2 в r.
Якщо t1(X)=t2(X), тоді t1(Y)=t2(Y). В F-залежності X  Y підмножина X називається лівою
частиною, а Y – правою частиною.
Аксіоми виводу
Для відношення r(R) в будь-який момент існує деяке сімейство F-залежностей, яким
ці відношення задовільняють. Тут виникає та ж проблема, що і з ключами: один стан
відношення може задовільняти F-залежності, а інший – ні. Потрібно виявити сімейство F-
залежностей F, якому задовільняють всі припустимі стани r. Щоб знайти F, необхідні
семантичні знання про відношення r. Тому можна вважати сімейство F-залежностей заданим
в схемі відношень R. У цьому випадку будь-яке відношення r(R) повино задовільняти всім F-
залежностям із F.
Множина функціональних залежностей, що застосовуються до відношення r(R),
кінцева, так як існує тільки кінцеве число підмножин множини R.
Аксіома виводу – це правило, яке встановлює, що якщо відношення задовільняє
визначеним F-залежностям, тоді воно повинно задовільняти і деяким іншим F-залежностям.
Тепер введемо шість аксіом виводу для F-залежностей.
У їх формулюваннях використовуються позначення r для відношення на R і W,X,Y і Z
– для підмножин R.
F1.Рефлексивність. Відношення  X ( X  x (r )) завжди має не більше одного
кортежу, отже, X  Y завжди має місце в r.
F2. Доповнення. Ця аксіома має справу з розширенням лівої частини F-залежності.
Якщо r задовільняє X  Y, тоді  Y ( X  x (r )) має не більше одного кортежу для будь-
якого X-значення x. Якщо Z є будь-якою підмножиною R, тоді  XZ  xz (r )   X  x (r ) і,
отже,  Y ( XZ  xz (r ))   Y ( X  x (r ))
F3. Адитивність. Ця аксіома дозволяє об`єднати дві F-залежності з однаковими
лівими частинами. Якщо відношення r задовільняє X  Y і X  Z, тоді обидві проекції
 Y ( X  x (r )) і  Z ( X  x (r )) мають не більш одного кортежу для будь-якого X-
значення x.
F4. Проективність. Ця аксіома в деякій степені зворотня до аксіоми адитивності.
Якщо r задовільняє X  YZ, тоді  YZ ( X  x (r )) має не більше одного кортежу для будь-
якого X-значення x.
F5. Транзитивність. Ця і наступна аксіоми є найбільш потужними з аксіом виводу.
Нехай r задовільняє F-залежностям X  Y і Y  Z. Розглянемо кортежі t1 і t2 в r. Якщо
t1(X)=t2(X), тоді t1(Y)=t2(Y), а з t1(Y)=t2(Y) випливає t1(Z)=t2(Z). Таким чином, якщо
t1(X)=t2(X), тоді t1(Z)=t2(Z), тобто r задовільняє X  Z.
F6. Псевдотранзитивність. Нехай r задовільняє F-залежностям X  Y і YZ  W, а t1
і t2 являються кортежами в r. За умовою якщо t1(X)=t2(X), тоді t1(Y)=t2(Y), і, аналогічно, якщо
t1(YZ)=t2(YZ), тоді t1(W)=t2(W). Із t1(XZ)=t2(XZ) отримаєм, що t1(X)=t2(X), отже, по
попередньому t1(Y)=t2(Y) і, крім того, t1(YZ)=t2(YZ), звідки слідує, що t1(W)=t2(W). Таким
чином r задовільняє XZ  W.
Отже, якщо W,X,Y і Z являються підмножинами R, тоді для будь-якого відношення r
зі схемою R справедливі наступні аксіоми виводу:
F1. Рефлексивність:X  X.
F2. Доповнення:X  Y тягне за собою XZ  Y.
F3. Адитивність:X  Y і X  Z тягне за собою X  YZ.
F4. Проективність:X  YZ тягне за собою X  Y.
F5. Транзитивність:X  Y і Y  Z тягне за собою X  Z.
F6.Псевдотранзитивність:X  Y і YZ  W тягне за собою XZ  W.
Тема 9. ПОКРИТТЯ ФУНКЦІОНАЛЬНИХ ЗАЛЕЖНОСТЕЙ
Розглянемо методи представлення множин F-залежностей. Будь-яка F-залежність, яка
виводиться з множини F={A→B, B→C, A→C, AB→C, A→BC}, також виводиться з
множини G={A→B, B→C}, оскільки всі F-залежності з F можуть бути виведені з F-
залежностей, що належать G.
В системах баз даних F-залежності сприяють забезпеченню узгодженості та цілісності
бази даних. Менша кількість F-залежностей означає менший об’єм використовуваної пам’яті
та менше число перевірок при модифікації бази даних.
Покриття та еквівалентність
Означення 9.1. Дві множини F-залежностей F та G над схемою R еквівалентні, F≡G,
якщо F+=G+. Якщо F≡G (тотожне), то F є покриттям для G.
Ненадлишкові покриття
Означення 9.2. Множина F-залежностей F ненадлишкова, якщо у неї немає такої
власної підмножини F', що F'  F. Якщо така множина F’ існує, то F-надлишкова. F є
ненадлишковим покриттям G, якщо F є покриттям G та F ненадлишкова.
Приклад 9.1. Нехай G={AB→C, A→B, B→C, A→C}. Множина F={AB→C, A→B,
B→C} еквівалентна G, але є надлишковою, тому що F’={A→B, B→C} також є покриттям G.
Множина F’ являє собою ненадлишкове покриття G.
Для будь-якої множини F-залежностей G існує деяка підмножина F, така, що F є
ненадлишковим покриттям G. Якщо G ненадлишкова, то F≡G. Якщо G надлишкове, то у G
існує F-залежність X→Y, яка є надлишковою у G. Нехай G’=G–{X→Y}. Зазначимо, що
(G’)+=G+. Якщо G’ надлишкова, то в G’ існує надлишкова F-залежність W→Z. Нехай
G’’=G’–{W→Z}; (G’’)+=(G’)+=G+. Процес знищення надлишкових F-залежностей,
природньо, повинен скінчитися. В результаті для G утворюється ненадлишкове покриття F.
Приклад 9.2. Нехай G={A→B, B→A, B→C, A→C}. Множина F-залежностей G може
мати більше ніж одне ненадлишкове покриття: F={A→B, B→A, A→C}, F={A→B, B→A,
B→C}. Можуть також існувати ненадлишкові покриття G, які не містяться у G: F={A→B,
B→A, AB→C}.
Сторонні атрибути
Якщо F – ненадлишкова множина F-залежностей, то в ній немає “зайвих” F-
залежностей в тому розумінні, що неможна зменшити F, видаливши деякі F-залежності.
Видалення будь-якої F-залежності з F приведе до множини F-залежностей, яка не
еквівалентна F. Проте, може статися, що розмір F можна скоротити, видаливши деякі
атрибути із F-залежностей F.
Означення 9.3. Нехай F – множина F-залежностей над схемою R та X→Y є F-
залежність із F. Атрибут A із R називається стороннім у X→Y відносно F, якщо:
1. X=AZ, X≡Z та (F – {X→Y})  {Z→Y}≡F або
2. Y=AW,Y≡W та (F – {X→Y})  {X→W} = F.
Іншими словами, A – сторонній атрибут у X→Y, якщо він може бути видалений з
правої або лівої частини X→Y без зміни замикання F.
Приклад 9.4. Нехай G={A→BC, B→C, AB→D}. Атрибут C є стороннім у правій
частині A→BC, а атрибут B – у лівій частині AB→D.
Означення 9.4. Нехай F – множина F-залежностей над схемою R та X→Y належить F.
F-залежність X→Y називається редукованою зліва, якщо X не містить атрибута A,
стороннього у X→Y. Залежність X→Y називається редукованою справа, якщо Y не містить
атрибута A, стороннього для X→Y. Залежність X→Y називається редукованою, якщо вона
редукована зліва і справа та Y≠пуста множина. Редукована зліва F-залежність називається
також повною F-залежністю.
Означення 9.5. Множина F-залежностей F називається редукованою (зліва, справа),
якщо кожна F залежність з F редукована (відповідно зліва, справа).
Приклад 9.5. Множина G={A→BC, B→C, AB→D} не є редукованою ні справа, ні
зліва. Множина G1={A→BC, B→C, A→D} редукована зліва, але не справа, а G2={A→B,
B→C, AB→D} редукована справа, але не зліва. Множина G3={A→B, B→C, A→D}
редукована як справа, так і зліва, отже, оскільки всі праві частини непорожні, редукована.
Канонічні покриття
Означення 9.6. Множина F-залежностей називається канонічною, якщо кожна F-
залежність з F має вигляд X→A, F редукована зліва та ненадлишкова. Оскільки канонічна
множина F-залежностей ненадлишкова та кожна F-залежність має один атрибут справа, вона
редукована справа. А так як вона також редукована зліва, то вона редукована.
Приклад 9.7. Множина F={A→B, A→C, A→D, A→E, BI→J} є канонічним покриттям
для G={A→BCE, AB→DE, BI→J}. Зв’язок між редукованими та канонічними покриттями
описує
Лема 9.1. Нехай F – редуковане покриття. Утворимо G, розщеплюючи кожну F-
залежність X→A1…Am на X→A1, X→A2, …, X→Am. Покриття G є канонічним. Зворотньо,
якщо G – канонічне покриття, то воно редуковане. Якщо множина F утворена об’єднанням
всіх F-залежностей із співпадаючими лівими частинами, то F також є редукованим
покриттям. В обидвох випадках F та G еквівалентні.
Структура ненадлишкових покриттів
Про два ненадлишкові покриття F та F’ для множини F-залежностей G можна сказати,
що крім того, що F≡F’, їхні структури дещо схожі.
Лема 9.2. Нехай F та G – еквівалентні ненадлишкові множини F-залежностей над
схемою R. Нехай X→Y – F-залежність із F. Тоді у G існує F-залежність V→W та X-V
відносно F (та, відповідно, відносно G).
Лему 9.2 можна перефразувати наступним чином. Для заданих еквівалентних
ненадлишкових покриттів F та G та кожної лівої частини X у F-залежності із F існує
еквівалентна частина V у F-залежності із G.
Мінімальні покриття
Ненадлишкове покриття G множини F-залежностей не обов’язково має стільки ж F-
залежностей, скільки будь-яке інше покриття G. Цей факт вимагає роз'яснень.
Означення 9.8. Множина F-залежностей F мінімальна, якщо вона містить не більше
F-залежностей, ніж будь-яка еквівалентна множина F-залежностей.
Мінімальна множина F-залежностей не може містити надлишкових залежностей.
Таким чином, вона одночасно й ненадлишкова.
Приклад 9.8. Множина G={A→BC, B→A, AD→E, BD→J} ненадлишкова, але й не
мінімальна, оскільки існує множина F={A→BC, B→A, AD→EJ}, яка еквівалентна G та
містить меншу кількість Fзалежностей.
Множина F є мінімальним покриттям G.
Оптимальні покриття
Досі покриття оцінювались кількість F-залежностей. Але можна також оцінювати
числом містимих атрибутів. Наприклад, {AB→C, CD→E, AC→IJ}, відповідно такій оцінці,
має розмірність 10.
Означення 9.10. Множина F-залежностей F оптимальна, якщо не існує еквівалентної
множини з меншим числом атрибутних символів.
Приклад 9.9. Множина F={EC→D, AB→E, E→AB} є оптимальним покриттям для
G={ABC→D, AB→E, E→AB}. Зазначимо, що G редукована та мінімальна, але не
оптимальна.
Лема 9.3. Якщо F – оптимальна множина F-залежностей, то вона редукована та
мінімальна.
Кільцеві покриття та комплексні функціональні залежності
Множина F-залежностей F може бути розділена на класи з еквівалентними лівими
частинами. Інформацію кожного класу еквівалентності можна представити однією
узагальненою F-залежністю.
Означення 9.11. Комплексна функціональна залежність (CF-залежність) має
вигляд (X1, X2, …, Xk)→Y, де X1, X2, …, Xk та Y – різні підмножини схеми R.
Відношення r(R) задовільняє CF-залежності (X1, X2, …, Xk)→Y, якщо воно
задовільняє F-залежностям Xi→Xj та Xi→Y, 1≤i,j≤k. У цьому записі (X1, X2, …, Xk)
називається лівою частиною, X1, X2, …, Xk – лівими множинами, Y – правою частиною.
CF-залежності є не більш ніж скорочений спосіб запису множини F-залежностей з
еквівалентними лівими частинами.
Означення 9.12. Нехай G – множина CF-залежностей над R та F – множина F або CF-
залежностей над R. G еквівалентно F, G≡F, якщо кожне відношення r(R), яке задовольняє G,
задовольняє F та навпаки.
Це означення узгоджується із еквівалентністю для множини F-залежностей.
Означення 9.13. Множина F є покриттям G, якщо F≡G, де F та G складаються або з
множини F-залежностей та множин CF-залежностей, або з множин одного з цих видів.
Приклад 9.10. Множина CF-залежностей G={(A,B),(AC,BC)→DE} еквівалентна
множині F-залежностей F={A→B, B→A, AC→D, BC→E}.
Означення 9.14. Множина F-залежностей F називається характеристичною
множиною для CF-залежності (X1, X2, …, Xk)→Y, якщо F≡{(X1, X2, …, Xk)→Y}.
Якщо кожна ліва множина з CF-залежності використовується в якості лівої частини F-
залежності точно один раз (тобто F має вигляд {X1→Y1, X2→Y2, …, Xk→Yk}), то F
називається природньою характеристичною множиною для F-залежності.
Означення 9.15. Множина CF-залежностей F називається кільцевою, якщо існують
різні ліві множини X та Z, такі, що X↔Z у F.
Приклад 9.11. Нехай G=F={A→BC, B→AD, AE→I, BE→IJ}. Кільцевим покриттям
множини G служить G’={(A,B)→ABCD, (AE,BE)→IJ}.
Означення 9.16. Нехай G – множина CF-залежностей, яка містить (X1, X2, …,Xk)→Y.
Нехай Xi – одна з лівих множин та A – один з атрибутів Xi. Атрибут A називається
переміщуваним, якщо його можна перенести з Xi до Y із збереженням еквівалентності. Ліва
множина Xi переміщувана, якщо одночасно переміщувані всі її атрибути.
Означення 9.17. Кільцева множина G ненадлишкова, якщо з неї неможна видалити
жодної CF-залежності без порушення еквівалентності, і, крім того, жодна CF-залежність з G
не містить переміщуваних лівих множин. В протилежному випадку G надлишкове.
Лема 9.4. Нехай G – ненадлишкова кільцева множина CF-залежностей. Об’єднання
природніх характеристичних множин всіх CF-залежностей у G утворює ненадлишкову
множину F-залежностей, еквівалентну G.
Для кільцевих покриттів можна також визначити поняття редукованого та
мінімального покриття.
Означення 9.18. Нехай G – ненадлишкова кільцева множина. CF-залежність (X1, X2,
…, Xk)→Y з G називається редукованою, якщо ліві множини не містять переміщуваних
атрибутів, а праві – сторонніх. Множина G редукована, якщо редукована кожна CF-
залежність у G.
Означення 9.19. Нехай G – ненадлишкова кільцева множина. Множина G
мінімальна, якщо містить менше лівих множин, ніж будь-яка інша еквівалентна кільцева
множина.
Тема 10. НОРМАЛІЗАЦІЯ РЕЛЯЦІЙНИХ СХЕМ

Розглянемо поняття ключа і суперключа у світі знань, що стосуються F-залежностей.


Нагадаємо: для даної схеми відношення R ключ на R це підмножина K  R, така, що
для будь-якого допустимого відношення r(R) не існує двох різноманітних кортежів t1 і t2 у r,
таких, що t1(K) = t2(К), і ніяка власна підмножина К'  К не має цієї властивості.

Суперключ це будь-яка сукупність атрибутів, що містить ключ.


Бази даних і схеми баз даних
Введемо позначення R = (S, K), де R – схема відношення, що складається з S –
множини атрибутів і К – множини виділених ключів.
Визначення 10.1. Нехай U – множина атрибутів, кожен з яких співвіднесений з
певним доменом. Схемою реляційної бази даних R над U називається сукупність схем
p
відношень {R1, R2, …, Rp}, де Ri = (Si, Ki), 1 ≤ i ≤ p ,  Si  U , Si ≠ Sj при i ≠ j.
i 1
Реляційною базою даних d зі схемою бази даних R називається така сукупність
відношень {r1, r2, …, rp}, що для кожної схеми R=(S, K) з R існує відношення r в d, яке є
відношенням зі схемою S і задовільняє кожному ключу з K.
Визначення 10.2. Схема бази даних R повністю характеризує множину
функціональних залежностей F, якщо F = G. ( = - знак тотожності)
Визначення 10.3. Нехай R – схема відношення. F-залежність X → Y є
застосовуваною до R, якщо X → Y є F-залежністю над R.
Нормальні форми для баз даних
Нормальна форма являє собою обмеження на схемі бази даних, яке звільняє базу
даних від деяких небажаних властивостей.
Нормальна форма – властивість відношення в реляційній моделі даних, що
характеризує його з точки зору надмірності, яка потенційно може привести до логічно
помилкових результатів вибірки або зміни даних. Нормальна форма визначається як
сукупність вимог, яким повинне відповідати відношення.
Процес перетворення відносин бази даних до вигляду, який відповідає нормальним
формам, називається нормалізацією. Нормалізація призначена для приведення структури
бази даних до вигляду, що забезпечує мінімальну логічну надмірність, і не має на меті
зменшення чи збільшення продуктивності роботи або ж зменшення або збільшення
фізичного обсягу БД. Кінцевою метою нормалізації є зменшення потенційної суперечливості
збереженої в БД ін-мації. Загальне призначення процесу нормалізації полягає в наступному:
 виключення деяких типів надлишковості;
 усунення деяких аномалій оновлення;
 розробка проекту бази даних, який є достатньо "якісним" представленням реального
світу, інтуїтивно зрозумілий і може служити хорошою основою для подальшого
розширення;
 спрощення процедури застосування необхідних обмежень цілісності.
Усунення надмірності проводиться, як правило, за рахунок декомпозиції відносин
таким чином, щоб у кожному відношенні зберігалися тільки первинні факти (тобто факти, не
виведені з інших збережених фактів).
При тому, що ідеї нормалізації досить корисні для проектування БД, вони аж ніяк не є
універсальним чи вичерпним засобом підвищення якості БД. Це пов'язано з тим, що існує
дуже велика різноманітність можливих помилок і недоліків у структурі БД, які
нормалізацією не усуваються. Незважаючи на це, теорія нормалізації є дуже цінним
здобутком реляційної теорії та практики, оскільки вона дає науково строгі і обгрунтовані
критерії якості проекту БД і формальні методи для удосконалення цієї якості. Цим теорія
нормалізації різко виділяється на тлі чисто емпіричних підходів до проектування, які
пропонуються в інших моделях даних. Більш того, можна стверджувати, що в усій сфері
інформаційних технологій практично відсутні методи оцінки та поліпшення проектних
рішень, порівнянні з теорією нормалізації реляційних БД за рівнем формальної строгості.
Перша нормальна форма
Відношення знаходиться в першій нормальній формі (1НФ) тоді і тільки тоді, коли в
будь-якому допустимому значенні відношення кожен його кортнж містить тільки одне
значення для кожного з атрибутів.
Схема відношення R перебуває у першій нормальній формі (1НФ), якщо значення у
dom(A) є атомарними для кожного атрибуту A в R. Схема БД R перебуває у 1НФ, якщо
кожна схема відношення в R перебуває у 1НФ.
Перевага 1НФ полягає у тому, що вона дозволяє висловлювати F-залежності з
необхідним нам ступенем деталізації; вирішує проблеми з оновлення даних.
Друга нормальна форма
Відношення знаходиться в другій нормальній формі, якщо воно знаходиться в першій
нормальній формі, і при цьому будь-який його атрибут, який не входить до складу
потенційного ключа, функціонально повно залежить від кожного потенційного ключа.
Функціонально повна залежність означає, що атрибут функціонально залежить від всього
складного потенційного ключа, але при цьому не перебуває у функціональній залежності від
будь-якої з вхідних у нього частин. Або іншими словами: в 2NF немає неключових
атрибутів, залежних від частини складного потенційного ключа.
Друге важливе значення другої нормальної форми полягає в тому, що вона за
визначенням забороняє наявність неключових атрибутів, які взагалі не залежать від
потенційного ключа. Таким чином, 2NF забороняє створювати відношення як незв'язані
(хаотичні, випадкові) набори атрибутів.
Визначення 10.4. Для даної схеми відношення R, атрибута А в R і множини
функціональних залежностей F на R атрибут А називається первинним у R відносно F, якщо
А міститься у якому-небудь ключі схеми R. У протилежному випадку A називається
непервинним у R.
Визначення 10.5. Схема відношення R перебуває у 2НФ відносно множини
функціональних залежностей F, якщо вона перебуває у 1НФ і кожний непервинний атрибут
повністю залежить від кожного ключа для R.
Третя нормальна форма
Визначення 10.6. Для даної схеми відношення R, підмножини X множини R,
атрибута A в R і множини функціональних залежностей F атрибут A називається
транзитивно залежним від Х в R, якщо існує підмножина Y  R, така, що X → Y, Y → X,
Y → A відносно F і А  XY.
Визначення 10.7. Схема відношення R перебуває у 3НФ відносно множини
функціональних залежностей F, якщо вона перебуває у 1НФ і жоден з непервинних атрибутів
у R не є транзитивно залежним від ключа для R.
Лема 1. Будь-яка схема відношення, що є у 3НФ відносно F, є у 2НФ відносно F.
Нормалізація через декомпозицію
Нормалізація проводиться шляхом декомнозиції не-3НФ схеми відношення у схему
бази даних, що має 3НФ відносно тієї самої множини F. Декомпозиція схеми відношень
означає розбиття схеми відношення на пару схем відношень R1 і R2 (що, можливо,
перетинаються) так, аби будь-яке відношення r(R), що задовільняє F, розкладалося без втрат
на R1 і R2 , тобто щоб виконувалося  R (r )   R (r )  r . Процес декомпозиції
1 2
відношень може тривати для R1 і R2, якщо якесь з них не виявиться у 3НФ відносно F.
Схема БД R не є однозначною. Є точки, в яких можна обирати шляхи декомпозиції
певного відношення з метою видалення транзитивно залежного атрибута. Недоліки
декомпозиційної нормалізації – схема відношення може володіти експоненційною кількістю
ключів (що визначається розмірами схеми і заданої множини F-залежностей); через
винекнення часткових залежностей кількість породжених процесом схем відношення може
виявитися більшою, ніж насправді необхідно для 3НФ. Схему БД у 3НФ можуть утворювати
різні за величиною набори схем відношень. Тому при декомпозиції треба слідкувати за тим,
щоб проміжна множина атрибутів у пропонованій транзитивній залежності була
мінімальною.
За допомогою декомпозиції можна породити схеми зі “схованими” транзитивними
залежностями. Нехай задані схема R = A B C D та F = {A → B, B → C}. Атрибути A D є
ключем F, а B частково залежить від AD. При декомпозиції отримуємо R 1 = A C D K1 = {A
D} R2 = A B K2 = {A}. Хоча R1 та R2 формально перебувають у 3НФ, у R1 існує “схована”
транзитивна залежність C від A D.
Нормалізація синтезуванням
Основна задача зводиться до знаходження схеми БД у 3НФ, яка представляє схему
відношення, що не є у 3НФ. Нехай на вході задана схема відношення R і множина F-
залежностей F над R. За їх допомогою слід створити схему БД R = {R1,…, Rp} над R, що
задовільняє чотири вимоги:
1. Множина F повністю характеризується за допомогою R, тобто F = {K → Ri | Ri
входить у R, K – виділений ключ Ri }. Тобто, єдиними F-залежностями, які мають бути
нав’язані для виконання F у R, є ті, що виводяться з виділених ключів.
2. Кожна схема відношення Ri з R перебуває у 3НФ відносно F.
3. Не існує схеми БД з меншою кількістю схем, ніж R, яка задовільняє властивостям 1
і 2.
Ця вимога запобігає надлишковості.
4. Для будь-якого відношення r(R), що задовільняє F,
r   R1 (r )   R2 (r )     R p (r ) , тобто ця властивість дозволяє правильно
представити відношення зі схемою R своїми проекціями на схеми з R.
Схему БД R, що задовільняє даним вимогам, назвемо повною схемою БД для F.
Визначення 10.8. Нехай R – схема відношення у схемі БД R над U і F –множина F-
залежностей.
Нехай X  R та A  R. Атрибут A зовнішньо залежить від X в F, якщо в U існує
підмножина Y, така, що Y не є підмножиною R, X → Y, Y → X, Y → A в F і А  X Y.

Нехай R={R1, R2}, R1=A B, K1 = {A}, R2 = B C, K2 = {B, C}, F – множина F-


залежностей, представлених у R. Оскільки A → C, C → A, C → B, то B зовнішньо залежить
від A, однак B неможна видалити з R1, не змінюючи замикання множини F-залежностей,
представлених у R. Тобто, повні схеми БД у 3НФ, утворені як за методом декомпозиції, так і
шляхом синтезування, не містять атрибутів, що можуть бути видалені.
Схема БД, отримана за допомогою синтезу, не завжди без втрат розкладається по
схемах відношень R.
Визначення 10.9. Схема БД R над U володіє властивістю з’єднання без втрат
відносно множини F-залежностей F, якщо для будь-якого відношення, що задовільняє F,
виконується декомпозиція без втрат на схеми відношень у R.
Другою проблемою синтезу є те, що атрибути з R, які не входять до залежностей F, не
з’являються і у синтезованій з F схемі БД.
Визначення 10.10. Нехай R – cхема БД над U і G – множина F-залежностей,
представлених у R. Підмножина X в U називається універсальним ключем R для G, якщо
G|= X → U. Якщо деяка схема відношень зі схеми БД R містить універсальний ключ, то R
володіє властивістю з’єднання без втрат відносно представлених F-залежностей, і навпаки.
Проблема алгоритму синтезу полягає у тому, що в R може не виявитися схеми з
універсальним ключем. Вирішення полягає у включенні до F F-залежності U → C, де C –
атрибут, що не міститься в U, який може бути видалений після завершення роботи
алгоритму.
Усунення атрибутів
Визначення 10.11. Нехай R – повна схема БД для множини F-залежностей F, Ri –
схема відношення з R, B – атрибут в Ri. Атрибут B може бути усунений з Ri, якщо при заміні
виділених ключів Ri атрибут B підлягає видаленню з Ri.
Тема 11. НОРМАЛЬНА ФОРМА БОЙСА-КОДДА, БАГАТОЗНАЧНІ
ФУНКЦІОНАЛЬНІ ЗАЛЕЖНОСТІ

Нормальна форма Бойса-Кодда


Алгоритм синтезу породжує схеми відношень, які знаходяться у сильнішій за 3НФ
формі у тому сенсі, що жоден з виділених ключів не залежить транзитивно від жодного
ключа. Чи можна вилучити всі транзитивні залежності, зокрема між частинами виділених
ключів? Так, почавши зі схеми відношення R і множини F-залежностей F, для R можна
знайти схему бази даних R, позбавлену транзитивних залежностей, однак F може виявитися
не нав’язаною в R.
Визначення 11.1. Схема відношення R перебуває у нормальній формі Бойса-Кодда
(НФБК) відносно множини F-залежностей F, якщо вона перебуває у 1НФ і ніякий атрибут у
R не залежить транзитивно від жодного ключа R. Схема БД RR перебуває у НФБК відносно
множини F-залежностей F, якщо кожна схема відношення R  RR перебуває у НФБК
відносно F. Ще одне визначення:
Визначення 11.2. Схема відношення R перебуває у НФБК відносно множини F-
залежностей F, якщо для кожної підмножини Y з R і кожного атрибута A  R – Y з Y → A
випливає Y → R при F, тобто якщо Y нетривіально визначає довільний атрибут з R, то Y є
суперключем R .
Проблеми НФБК
Як випливає з попереднього, при заданій множині F-залежностей над R можна знайти
схему БД у 3НФ, яка повністю характеризує F. Для НФБК це не справедливо. Таким чином,
ми поставлені перед вибором між НФБК чи нав’язаністю F-залежностей. Множина F-
залежностей може не мати повної НФБК схеми БД.
Однак більшість відношень, які є у 3НФ, також перебувають і в НФБК.
Відношення у 3НФ може не бути у НФБК тільки якщо:
 виділені ключі відношення є складеними (тобто не являють собою один атрибут);
 у відношенні існує більш, ніж один виділений ключ;
 деякі атрибути у виділених ключах є спільними.

Раніше показано, що присутність функціональних залежностей (ФЗ) у реляційній


схемі означає можливість декомпозиції схеми, яка зменшує надлишковість і при цьому
зберігає інформацію. Однак існування ФЗ не є необхідною умовою для такої декомпозиції.
Розглянемо стан відношення Призначення табл. 1.
Таблиця 1. Відношення призначення
призначення (РЕЙС ДЕНЬ ТИЖНЯ ТИП ЛІТАКА)
106 Пн 747
106 Чт 747
106 Пн 1011
106 Чт 1011
204 Ср 707
204 Ср 727
Кортеж <f d p> у відношенні призначення означає, що рейс №f може виконуватися в
день тижня d на літаку типу p. У відношенні не виконується ні ФЗ РЕЙС→ТИП ЛІТАКА ні
РЕЙС→ДЕНЬ ТИЖНЯ, однак воно без втрат інформації розбивається на два відношення:
РЕЙС ДЕНЬ ТИЖНЯ і РЕЙС ТИП ЛІТАКА ( табл. 2).
Таблиця 2. Відношення призначення розкладається без втрат на відношення день
призначення і тип літака призначення
день призначення (РЕЙС ДЕНЬ ТИЖНЯ)
106 Пн
106 Чт
204 Ср

тип літака (РЕЙС ТИП ЛІТАКА)


призначення 106 747
106 1011
204 707
204 727
Розглянемо інший стан відношення призначення, що задається табл. 3. Якщо
розкласти цей стан на схеми РЕЙС ДЕНЬ ТИЖНЯ і РЕЙС ТИП ЛІТАКА, то знову
отримаємо проекції з табл. 2. Однак з’єднання проекцій не відновлює вихідного відношення.
Таблиця 3. Інший стан відношення призначення
призначення (РЕЙС ДЕНЬ ТИЖНЯ ТИП ЛІТАКА)
106 Пн 747
106 Чт 747
106 Чт 1011
204 Ср 707
204 Ср 727

БАГАТОЗНАЧНІ ЗАЛЕЖНОСТІ
Визначимо властивості першого стану відношення призначення, що відсутні у
другого, які забезпечують декомпозицію без втрат інформації. У першому випадку, якщо
літак деякого типу використаний для виконання маршруту в один день, він може бути
використаний для виконання цього маршруту в будь-який інший день. Ця властивість
відсутня у другому стані відношення призначення, оскільки рейс №106 може
використовувати тип 1011 в четвер, але не в понеділок.
Відношення в першому стані слід піддавати декомпозиції, бо при заданому рейсі
ДЕНЬ ТИЖНЯ не містить інформації про атрибут ТИП ЛІТАКА, і навпаки.
Сформулюємо цю властивість поіншому.
Якщо у відношенні призначення існують кортежі <f d p> і <f d’ p’> , то повинен бути
кортеж <f d’ p>. Дамо формальне означення:
Означення 11.3. Нехай R – реляційна схема, X і Y – підмножини R, що не
перетинаються, і нехай Z=R(XY). Відношення r(R) задовольняє багатозначній залежності
(БЗЗ) X  Y, якщо для будь-яких двох кортежів t1 і t2 з r, для яких t1(X)=t2(X), в r існує
кортеж t3 , для якого виконуються співвідношення t3(X)= t1(X), t3(Y)= t1(Y), t3(Z)= t2(Z).
Із симетрії означення відносно t1 і t2 випливає, що в r існує також t4, для якого t4(X)=
t1(X), t4(Y)= t2(Y), t4(Z)= t1(Z).
Приклад 11.1. БЗЗ РЕЙС  ДЕНЬ ТИЖНЯ виконується для відношення призначення
в стані табл. 1, але не табл. 3. Стан табл. 1 задовольняє також БЗЗ РЕЙС  ТИП ЛІТАКА.
Той факт, що стан призначення з табл.1 задовольняє двом БЗЗ, не є випадковим, що
видно з наступної леми.
Лема 11.1. Якщо відношення r зі схемою R задовольняє БЗЗ X  Y і Z=R-(XY), то r
задовольняє X  Z.
ВЛАСТИВОСТІ БАГАТОЗНАЧНИХ ЗАЛЕЖНОСТЕЙ
Покажемо, яким чином БЗЗ пов’язана з декомпозицією без втрат інформації.
Теорема 11.1. Нехай r – відношення зі схемою R; X,Y,Z –підмножини з R, такі, що
Z=R-(XY). Відношення r задовольняє БЗЗ X  Y тоді і тільки тоді, коли r без втрат
інформації розкладається у відношенні зі схемами R1=X Y і R2=X Z.
Теорема 11.1 дає спосіб перевірки виконуваності БЗЗ X  Y у відношенні R.
Для цього проекції r на X Y і X(R-X Y) з’єднуються і результат перевіряється на
співпадіння з r. Існує інший метод перевірки БЗЗ, що не потребує проектування і з’єднання, а
тільки деякого сортування та підрахунку.

Нехай Z=R-(X Y), R1=X Y, R2=X Z. Якщо r1=  R ( r ) і r2=  R ( r ) , то r1  r2 завжди


1 2
містить r. Нехай далі, для деякого X-значення x існують c1 кортежів у r1, для яких X-значення
співпадають з x, і c2 кортежів в r2 з такою ж властивістю.
Нехай c – кількість таких кортежів у r. Якщо для будь-якого X-значення x c=c1*c2, то
r= r1  r2. Для полегшення підрахунку введемо функцію cW [X=x], яка відображає
відношення на невід’ємні цілі числа наступним чином cW [X=x] (r)=|  W (  X  x (r ) )|.

Для перевірки істинності БЗЗ X  Y у відношенні r(R) приймемо Z=R-(X Y).


Далі відсортуємо відношення за рівними X-значеннями. Для кожного X-значення
підрахуємо кількість кортежів з цим значенням, кількість різних пов’язаних з ним Y-значень
і Z-значень. Перевіримо, чи є перше число добутком двох інших.
Ця властивість є ще одним означенням БЗЗ.
Означення 11.4. Нехай r – відношення зі схемою R, X і Y – підмножини R і Z=R-(X
Y). Відношення r задовольняє багатозначній залежності X  Y, якщо для кожного X-
значення x і Y-значення y в r такі, що x y належить r, cZ [ X=x ] (r) = cZ [X Y = x y ] (r).
Нехай r – відношення зі схемою R і X,Y – підмножини з R. Якщо r задовольняє ФЗ
X→Y, то r задовольняє БЗЗ X  Y. Нехай задана схема відношення R і множина ФЗ F над R.
Питається, які БЗЗ є справедливими у відношенні r(R), що задовольняє F.
Згідно з останнім наслідком, якщо X→Y належить F+, то r задовольняє X  Y, а з
леми 1 випливає, що r задовольняє X  R-(X Y). Чи існують в r БЗЗ, що не є пов’язаними ні з
якими ФЗ? Негативну відповідь на це питання дає
Теорема 11.2. Нехай F – множина ФЗ над R. Далі нехай X,Y,Z – підмножини R, де
Z=R-(X Y). Позначимо через X+ замикання X відносно F. Якщо Y  X+ і Z  X+ , то існує
відношення r(R), що задовольняє ФЗ і не задовольняє БЗЗ X  Y.
Приклад 11.2. Нехай R = A B C D E I і F={A→B C, C→D}. Тоді з F випливає A  B
C D і A  C, але не A  D E.
Тема 12. АКСІОМИ ВИВЕДЕННЯ ДЛЯ БАГАТОЗНАЧНИХ ЗАЛЕЖНОСТЕЙ,
ЧЕТВЕРТА НОРМАЛЬНА ФОРМА

АКСІОМИ ВИВЕДЕННЯ ДЛЯ БАГАТОЗНАЧНИХ ЗАЛЕЖНОСТЕЙ


Одні багатозначні залежності
Перші шість аксіом виведення, що наведені нижче, є аналогами одноіменних аксіом
для ФЗ, однак тільки перші три з них містять ті ж твердження. Аксіома М7 не має аналогу у
ФЗ. Нехай r – відношення зі схемою R і W,X,Y,Z – підмножини R.
М1. Рефлексивність. Відношення r задовольняє X  X.
М2. Доповнення. Якщо r задовольняє X  Y, то воно задовольняє XZ  Y.
М3. Аддитивність. Якщо r задовольняє X  Y і X  Z, то воно задовольняє X  YZ.
М4. Проективність. Якщо r задовольняє X  Y і X  Z, то воно задовольняє
X  Y  Z і X  Y-Z.
М5. Транзитивність. Якщо r задовольняє X  Y і Y  Z, то r задовольняє X  ZY.
М6. Псевдотранзитивність. Якщо r задовольняє X  Y і Y W  Z, то r задовольняє
X W  Z(Y W).
М7. Доповнення. Якщо r задовольняє X  Y і Z=R-(X Y), то r задовольняє X  Z.

Функціональні і багатозначні залежності


Звернемося до наслідків, які можна вивести з множини ФЗ і БЗЗ. Для їх комбінації
існують тільки дві аксіоми.
Нехай r – відношення зі схемою R; W,X,Y,Z – підмножини R.
С1. Копіювання. Якщо r задовольняє X→Y, то r задовольняє X  Y.
С2. Об’єднання. Якщо r задовольняє X  Y і Z→W., де W  Y і Y  Z=X, то r
задовольняє X→W.
-------------------------------------------------------------------------------------------------------------
Повнота системи аксіом і пов’язані з ними задачі
Теорема 3. Система аксіом виведення М1–М7 для БЗЗ є повною.
Теорема 4. Системи аксіом F1–F6, М1–М7, С1–С2 для множин ФЗ і БЗЗ є повними.
Аксіоми С1 і С2 є необхідними. Без аксіоми С1 виведення БЗЗ з множини одних ФЗ
було б неможливим.
Означення 12.1. Для заданого набору множин S={S1, …, Sp}, де U=S1…Sp,
мінімальним роз’єднаним базисом множин S(mdsb(S)) називається розбиття T1, T2,…, Tq
множини U, таке, що:
1 Кожне Si є об’єднанням деяких Tj.
2 Не існує розбиття з меншою кількістю елементів, що володіють тією ж властивістю.
ЧЕТВЕРТА НОРМАЛЬНА ФОРМА
Відомо, що кожне відношення r(R), що задовольняє БЗЗ X  Y, розкладається без
втрат на відношення зі схемами XY і XZ, де Z=R-(XY). Однак, у випадку якщо X  Y –
єдина залежність в R, то R знаходиться в 3НФ. Таким чином, 3НФ не визначає всі можливі
декомпозиції.
Означення 12.2. БЗЗ X  Y називається тривіальною для довільної схеми R, що
містить XY, якщо будь-яке відношення r(R) задовольняє X  Y.
Якщо X  Y – тривіальна залежність, що використовується для декомпозиції
відношення r(R), то однією з проекції виявиться саме r. Така декомпозиція немає ніяких
переваг.
Означення 12.3. БЗЗ X  Y застосовується до схеми R, якщо XY  R.

Означення 12.4. Нехай F – множина ФЗ і БЗЗ над U. Схема відношення R  U


знаходиться у четвертій нормальній формі (4НФ) відносно F, якщо для кожної БЗЗ X  Y,
що виводиться з F і застосовуваної до R, або БЗЗ є тривіальною, або X є суперключем для R.
Схема бази даних RR знаходиться у четвертій нормальній формі відносно F, якщо кожна
схема відношення, що входить до неї знаходиться у 4НФ відносно F.
Приклад 12.1. Нехай схема R = РЕЙС ДЕНЬ-ТИЖНЯ ТИП-ЛІТАКУ і нехай F
={РЕЙС  ДЕНЬ ТИЖНЯ}. R не знаходиться у 4НФ відносно F. Схема бази даних RR =
РЕЙС ДЕНЬ ТИЖНЯ, РЕЙС ТИП ЛІТАКУ знаходиться у 4НФ відносно F.
Кожне відношення r(R), що задовольняє F, розбивається без втрат по схемах з RR.
Розглянемо схему відношення R, в якій виконується БЗЗ X  Y; при цьому X є
ключем R. Для довільного відношення r(R) проекції

r1=  XY (r) і r2=  XZ (r) (де Z=R-(X Y))

містять ту ж кількість кортежів, що і r. У r немає дублікатів X-значень, так що


кількість кортежів співпадає з кількістю X-значень.
Будь-яка проекція, що містить атрибути X, обов’язково повинна містити всі різні X-
значення.
Такий розклад ніколи не може дати виграшу. Він не усуває надлишковості, бо XY і
XZ-значення не дублюються в r.
Множина F з ФЗ і БЗЗ, аналогічно до того як це робиться для побудови схем баз
даних в 3НФ, може бути використана для побудови декомпозицій схеми відношення R, що
знаходиться у 4НФ. Для цього, почавши з R, шукаємо нетривіальну БЗЗ X  Y, що
виводиться з F, для якої X не є ключем R. Далі R розбиваємо на два відношення R1=XY і
R2=XZ, де Z=R-(X Y). БЗЗ X  Y тепер є тривіальною в R1 і не застосовується до R2. Процес
декомпозиції повторюємо для тієї зі схем R1 і R2, яка не знаходиться у 4НФ відносно F.
Оскільки використовувані БЗЗ не є тривіальними, обидві реляційні схеми, що виникають,
містять менше атрибутів, ніж початкові. Таким чином процес декомпозиції неминуче
закінчиться.
Нехай RR – схема бази даних в 4НФ, отримана шляхом декомпозиції схеми R, і нехай
F – множина ФЗ і БЗЗ. Довільне відношення r(R), в якому виконується F, розкладається без
втрат інформації на відношення зі схемами RR.
Приклад 12.2. Нехай F = {A  B C D, B  A C, C→D} – множина залежностей над
схемою R=A B C D E I. Оскільки A  B C D є нетривіальною БЗЗ і при цьому A не є ключем
R, розбиваємо R на схеми відношень R1=A B C D і R2=A E I.
Схема R2 знаходиться у 4НФ відносно F. З F випливає БЗЗ B  A C на R, але ця БЗЗ
не є кандидатом для використання в декомпозиції, оскільки в силу C→D, B є ключем для R 1.
Однак з C→D випливає БЗЗ C  D, яку можна використати в декомпозиції R1. У результаті
отримуємо схеми відношень R11=A B C і R12=C D.
Обидві схеми знаходяться у 4НФ відносно F. Таким чином, схеми бази даних
RR={R11, R12, R2} знаходяться у 4НФ відносно F.
ЧЕТВЕРТА НОРМАЛЬНА ФОРМА ТА РЕАЛІЗАЦІЯ ЗАЛЕЖНОСТЕЙ
Множина F з ФЗ реалізується в базі даних RR, якщо існує множина G з ФЗ, що
еквівалентне F і застосовується до RR. Це означення по відношенню до ФЗ є справедливим з
наступних причин. Припустимо, що RR є схемою бази даних над U, а d – база даних над R,
що представляє проекцію одного відношення r(U). Якщо для кожної ФЗ X→Y з G можна
знайти фактичний функціональний взаємозв'язок в d (тобто для кожного X-значення
відповідне йому Y-значення) і, крім того G|=V→W, то з d можна відновити фактичний
функціональний взаємозвязок V→W.
Ця ж властивість є майже завжди вірною для БЗЗ. Проблема полягає в аксіомі
доповнення М7.
Лема 12.1. Якщо схема R знаходиться в 4НФ відносно множини F з ФЗ і БЗЗ, то R
знаходиться в НФБК відносно множини ФЗ, що виводяться з F.
ЗАЛЕЖНОСТІ З’ЄДНАННЯ
БЗЗ являють собою намагання виділення декомпозиції без втрат інформації, що
зберігають цю властивість для всіх відношень з заданою схемою. Однак БЗЗ не є повністю
адекватними в цьому смислі. Відношення може мати нетривіальну декомпозицію без втрат
на три схеми, але не володіти такою властивістю для будь-яких двох з них.
Означення 12.5. Нехай RR = {R1, …, Rp} – множина реляційних схем над U.
Відношення r(U) задовольняє залежності з’єднання (J-залежності)*[R1, R2, …,Rp],
якщо r розкладається без втрат на R1, R2, …, Rp, тобто r =  R (r)  R (r) …  R (r).
1 2 p

Замість *[R1, R2, …, Rp] будемо писати також *[RR].


Необхідною умовою виконання у відношенні r(U) J-залежності *[R1, R2, …, Rp], є
рівність U=R1R2 … Rp. З визначення також видно, що БЗЗ є частковим випадком J-
залежності.
Відношення r(R) задовольняє БЗЗ X  Y тоді і тільки тоді, коли r розкладається без
втрат на X Y і X Z, де Z=R-(X Y). Умова співпадає з J-залежністю *[X Y, X Z].
НОРМАЛЬНА ФОРМА ВИГЛЯДУ «ПРОЕКЦІЯ- З’ЄДНАННЯ»
Метою пошуку декомпозиції без втрат інформації є усунення надлишковості з
відношень. Вище наведено декомпозиції, яким не відповідають БЗЗ, отже, в термінах пошуку
декомпозицій без втрат 4НФ не є найкращим рішенням. Маючи на увазі декомпозиції,
спочатку визначається нормальна форма вигляду “проекція- з’єднання” (PJ-форма).
Потім це означення дещо модифікується, для того, щоб задовольнити іншому
критерію.
Означення 12.6. J-залежність *[R1, R2, …, Rp] над R називається тривіальною, якщо
вона задовольняється у будь-якому відношенні r(R).
Означення 12.7. J-залежність з’єднання *[R1, R2, …, Rp] застосовується до реляційної
схеми, якщо R = R1 R2 … Rp.
Означення 12.8. Нехай R – схема відношення і F – множина F- і J-залежностей над R.
Схема R знаходиться в PJ-нормальній формі (PJNF) відносно F, якщо для кожної J-
залежності *[R1, R2, …, Rp], що виводиться з F і застосовується до R, J-залежність є
тривіальною або кожне Ri є надключем R. Схема бази даних RR знаходиться в PJ-
нормальній формі відносно F, якщо в цій формі знаходиться кожна схема R з RR.
Якщо кожна схема Ri надає суперключ, то причина, за якою допускається, що J-
залежність *[R1, R2, …, Rp], застосовується до реляційної схеми R і не порушує PJNF, та ж
сама, що і у випадку 4НФ. Якщо кожна Ri є ключем, то всі проекції відношення r(R) на Ri
містять ту ж кількість кортежів, що і r, і таким чином, надлишковість не усувається.
Наведене вище означення PJNF є слабшим початкового, яке запропоноване Фейджином.
Крім усунення надлишковості, початкове означення з допомогою ключів забезпечує
реалізованість залежностей.
Означення 12.9. (переглянуте). Нехай R – схема відношення і F – множина F- і J-
залежностей. R знаходиться в PJ-нормальній формі (PJNF) відносно F, якщо для кожної J-
залежності *[R1, R2, …, Rp], що виводиться з F і застосовується до R, залежність *[R1, R2, …,
Rp], виводиться з ключевих F-залежностей в R.
З PJNF випливає 4НФ, отже, умови PJNF і реалізовуваності залежностей не завжди є
сумісними. При побудові схем вигляду PJNF з допомогою декомпозиції схеми відношень
слід при виборі керуватися тими J-залежностями, які порушують PJNF.
ВБУДОВАНІ ЗАЛЕЖНОСТІ З’ЄДНАННЯ

Якщо задані відношення r(R) і ФЗ X→Y, то виконання X→Y в проекції на  S (r), XY


 S  R тягне виконання X→Y у всьому r. Для J-залежності це є невірним.
Означення 12.10. Відношення r(R) задовольняє вбудованій залежності з’єднання (EJ-
з’єднання) *[R1, R2, …, Rp], якщо  S (r), задовольняє J-залежності *[R1, R2, …,Rp] (S=R1R2 …
Rp). Допускається R=S, тобто кожна J-залежність є EJ-залежністю.
Введемо для вбудованої багатозначної залежності (EMV-залежності) *[X Y, X Z]
позначення X  Y(Z) (читається: “X багатозначно визначає Y в контексті Z”).
Тема 13. ЗАГРОЗИ БЕЗПЕЦІ БАЗ ДАНИХ.

Атаки на сховища і БД є одними з найнебезпечніших для підприємств і організацій.


Згідно зі статистикою компанії infowatch, в останні роки кількість витоків даних в світі
неухильно зростає, при цьому на 2015 рік понад тридцять відсотків з них припадають на
зовнішніх порушників і більше шістдесяти виконано за участю співробітників організації.
Навіть якщо припустити, що в ряді випадків витік включала дані, до яких співробітник має
легальний доступ, кожен третій випадок припадав на зовнішню атаку. Також потрібно
відзначити, що, згідно з наведеними в даними, на зовнішні атаки припадають сім з восьми
витоків обсягом понад десяти мільйонів записів.
Зловмисників цікавлять такі види інформації, як внутрішня операційна інформація,
персональні дані співробітників, фінансова інформація, інформація про замовників / клієнтів,
інтелектуальна власність, дослідження ринку / аналіз діяльності конкурентів, платіжна
інформація. Ці відомості в результаті зберігаються в корпоративних сховищах і БД різного
об'єму.
Все це призводить до необхідності забезпечення захисту не тільки комунікацій,
операційних систем та інших елементів інфраструктури, а й сховищ даних як ще одного
бар'єра на шляху зловмисника. Однак на сьогоднішній день роботи в галузі забезпечення
безпеки БД спрямовані в основному на подолання існуючих і вже відомих уразливостей,
реалізацію основних моделей доступу і розгляд питань, специфічних для конкретної СКБД.
Метою даної лекції є комплексний розгляд і систематизація питань безпеки БД в світлі нових
загроз, загальних тенденцій розвитку інформаційної безпеки і зростанні ролі і
різноманітності сховищ даних.
Питання комплексної безпеки БД привертають увагу дослідників, їм щорічно
присвячується ряд робіт як в Україні, так і за кордоном. Можна відзначити такі дослідження,
як класичну роботу. У ній розглядаються підходи до забезпечення конфіденційності,
цілісності та доступності СКБД, запобігання, визначення та ігнорування атак. Пропонуються
підходи до забезпечення мандатного і рольового дискреційного доступу до реляційного
сервера.
Таким чином, сьогоднішні дослідження в області безпеки СУБД обмежуються
розвитком концепції конфіденційності, цілісності і доступності даних, що не відповідає
сучасним вимогам до систем захисту та інформаційної безпеки програмних рішень, причому
в контексті конкретних методів захисту, а не цілісного розгляду проблеми. При цьому вони
часто присвячені конкретним програмним продуктам, а не всьому класу відповідного
програмного забезпечення.
Еволюція систем безпеки БД
Історично розвиток систем безпеки БД відбувалося як реакція на дії зловмисників
відповідно до етапів еволюції самих сховищ (БД) і змінами типу і виду зростаючих загроз. Ці
зміни були обумовлені загальним розвитком БД від рішень на основному комплекті до
хмарних сховищ.
В архітектурному плані можна виділити такі підходи:
 Повний доступ всіх користувачів до серверу БД;
 Поділ користувачів на довірених і частково довірених засобами СКБД (системи
керування БД);
 Ведення системи аудиту (логів дій користувачів) засобами СКБД;
 Ведення шифрування даних; винос засобів аутентифікації за межі СКБД в
операційні системи і проміжне ПЗ;
 Відмова від повністю довіреного адміністратора даних.
Проте, введення засобів захисту як реакції на загрози не забезпечує захист від нових
способів атак і формує розрізнене уявлення про саму проблему забезпечення безпеки. З
одного боку, великі компанії можуть виділити достатню кількість коштів на забезпечення
безпеки для своїх продуктів, з іншого боку, саме з цієї причини є велика кількість
різнорідних рішень, відсутнє розуміння комплексної безпеки даних (і її компоненти
відрізняються від виробника до виробника), немає загального, єдиного підходу до безпеки
сховищ даних. Ускладнюються прогнозування майбутніх атак і перспективна розробка
захисних механізмів, для багатьох систем зберігається актуальність вже давно відомих атак,
ускладнюється підготовка фахівців з безпеки.
Саме розробка програмних засобів превентивного захисту (на випередження
зловмисника), забезпечення можливості впровадження такої технології можна вважати
найбільш актуальними завданнями на поточному етапі.
Сучасні проблеми забезпечення безпеки БД
Список основних вразливостей сховищ даних, актуальний на сьогоднішній день, не
зазнав істотних змін за останнє десятиліття. Проаналізувавши засоби забезпечення безпеки
СКБД, архітектуру БД, інтерфейси, відомі уразливості і інциденти безпеки, можна виділити
наступні причини виникнення такої ситуації:
 Проблемами безпеки серйозно займаються тільки великі виробники перш за
все в провідних продуктах лінійок для зберігання даних;
 Програмісти БД, прикладні програмісти і адміністратори БД не приділяють
належної уваги питанням безпеки;
 Різні масштаби і види збережених даних вимагають різних підходів до безпеки;
 Різні СКБД використовують різні мовні діалекти для доступу до даних,
організованих на основі однієї і тієї ж моделі;
 З'являються нові види і моделі зберігання даних.
Якщо наприклад розглядати СКБД Oracle Database Server, то вона має досить
розвинену систему безпеки, що включає основні і додаткові модулі і містить засоби
гранулювання доступу до рівня запису і маскування даних. Відзначимо, що продукт компанії
СКБД MySQL не може похвалитися таким рівнем захищеності. Це досить серйозна
проблема, оскільки MySQL - широко застосовувана СКБД як в електронній комерції, так і в
БД державних структур.
Багато уразливостей, позначені в дослідженнях, зберігають актуальність за рахунок
неуваги або незнання адміністраторами систем БД питань безпеки. Наприклад, відомі
техніки простої SQL-ін'єкції широко експлуатуються сьогодні по відношенню до різних web
та інших додатків, в яких не приділяється увага контролю вхідних даних запиту. Причинами
цього є як недостатня інформованість або увага адміністраторів СКБД і прикладних
програмістів, а також відсутність вбудованих засобів контролю відомих уразливостей в
більшості СКБД. Хорошим рішенням були б автоматизація і перенесення контролю таких
загроз на рівень сервера, однак різноманіття мовних діалектів не дозволяє це зробити.
Також потрібно відзначити, що застосування різних засобів забезпечення
інформаційної безпеки є для організації компромісом у фінансовому плані: впровадження
більш захищених продуктів і підбір більш кваліфікованого персоналу вимагають великих
витрат. До того ж компоненти безпеки можуть мати негативний вплив на продуктивність
систем управління БД, наприклад рівні узгодженості транзакцій. Такі підходи, як маскування
даних або введення перевірок безпеки доступу, також уповільнюють роботу.
Ще одна причина такої ситуації – розрізненість діалектів мови запитів до СКБД. Якщо
розглядати тільки відомі реляційні СКБД, незважаючи на наявність стандарту SQL, що
розвивається (SQL-92, SQL-99, SQL-2003, SQL-2008), навіть великі виробники не тільки
використовують власні розширення мови, але і не підтримують до кінця операції прийнятої
версії стандарту. Цей факт ускладнює розробку єдиних механізмів захисту БД рівня сервера.
Наведені вище проблеми поглиблюються з появою і широким поширенням
нереляційних сховищ даних і СКБД, що оперують іншою моделлю даних, однак
побудованих за тими ж принципами і мають аналогічне призначення, що і традиційні,
реляційні сервери. По суті різноманіття сучасних так званих NoSQL (нереляційних) рішень
призводить до різноманітності застосовуваних моделей даних і розмиває межу поняття БД.
Наслідком цих проблем і відсутності єдиних методик є нинішня ситуація з безпекою
NoSQL-систем. Ці рішення з'явилися на ринку недавно і ще не встигли пройти «шлях
помилок і уразливостей», характерний для їх більш зрілих реляційних аналогів. У більшості
NoSQL-систем відсутні не тільки загальноприйняті механізми безпеки на кшталт
шифрування, підтримки цілісності та аудиту даних, але навіть розвинені засоби
аутентифікації користувачів.
Особливості систем БД як об'єкта захисту
У зв'язку з появою нових рішень в області нереляційних сховищ, що розмивають
межу традиційного уявлення про СКБД (наприклад, система кешування даних в пам'яті
MemcasheDB або Hadoop HDFS), визначимо функції, що відрізняють СУБД від файлового
сховища та інших типів програмних продуктів.
У цьому ключі виділено кілька ознак. Переформулювавши першу ознаку – «підтримка
логічно узгодженого набору файлів», в силу активного розвитку in memory СКБД, що
здійснюють зберігання та всі операції над даними в оперативній пам'яті, наведемо критерії,
що відрізняють БД від файлового сховища в наступній редакції:
 Підтримка логічно узгодженого набору даних;
 Забезпечення мови маніпулювання даними;’
 Відновлення інформації після різного роду збоїв;
 Реальна паралельна робота декількох користувачів (процесів).
Використовуючи такий підхід, можна відокремити саме СКБД від файлових систем і
ПЗ іншого виду.
Відмінною особливістю систем БД від інших видів прикладного ПЗ є (щодо
інформаційної безпеки і не тільки) їх подвійна природа. З цієї точки зору СКБД включає в
себе два компоненти: збережені дані (власне БД) і програми керування (СКБД).
Забезпечення безпеки інформації, що зберігається, зокрема, неможливо без
забезпечення безпечного управління даними. Виходячи з цієї концепції, всі уразливості і
питання безпеки СКБД можна розділити на дві категорії: залежні від даних і незалежні від
даних.
Відзначимо, що уразливості, незалежні від даних (їх структури, організації і т.д.), є
характерними для всіх інших видів ПЗ. До цієї групи можна віднести несвоєчасне оновлення
ПЗ або наявність невикористовуваних функцій.
Залежними від даних (в тій чи іншій мірі) є велике число аспектів безпеки. Зокрема,
залежними безпосередньо можна назвати механізми логічного висновку і агрегування даних,
що є специфічними проблемами СКБД. У той же час багато уразливостей є побічно
залежними від даних. Наприклад, сучасні СКБД (включаючи і реляційні, і нереляційні
рішення) підтримують запити до даних з використанням деякої мови запитів. У свою чергу, в
цій якості використовуються спеціалізовані мови запитів (SQL, CQL, OQL і інших), набори
доступних користувачеві функцій (які, в свою чергу, теж можна вважати операторами мови
запитів) або довільні функції на мові програмування (найчастіше Java) .
Архітектура мов, що використовуються по крайній мірі, те, що стосується
спеціалізованих мов (запитів) і наборів функцій, безпосередньо пов'язана з моделлю даних,
яка застосовується для зберігання інформації. Таким чином, модель визначає особливості
мови, а особливість мови – це наявність в ній тих чи інших уразливостей. Причому
уразливості загального типу, наприклад ін'єкція (під ін'єкцією будемо розуміти атаку на БД
шляхом модифікації вхідних запитів, що змушує сервер СКБД виконати нелегітимний набір
дій), виконуються по-різному (SQL-ін'єкція, JAVA-ін'єкція) в залежності від синтаксису і
семантики мови, які, як уже сказано вище, частково визначаються моделлю даних і, отже, є
залежним від даного компоненту.
Вимоги до безпеки БД
Таким чином, на підставі поділу уразливостей можна виділити залежні і незалежні
від даних заходи забезпечення безпеки сховищ інформації.
Незалежними від даних можна назвати наступні вимоги до безпечної системи БД.
1.· Функціонування в довіреному середовищі.
Під довіреним мається на увазі інформаційне середовище, інтегруюча сукупність
захисних механізмів, які забезпечують обробку інформації без порушення політики безпеки.
В даному випадку СКБД повинна функціонувати в довіреній інформаційній системі з
відповідними методами обміну даними.
2. Організація фізичної безпеки файлів даних.
Дане питання потребує докладнішого вивчення, оскільки структури даних, що
застосовуються в різних моделях даних СКБД можуть мати різні значення при шифруванні і
захисту файлів даних. Однак в першому наближенні питання фізичної безпеки файлів даних
схоже з питанням фізичної безпеки будь-яких інших файлів користувачів і додатків.
3.· Організація безпечного і актуального налаштування СКБД.
До даного аспекту відносяться такі загальні питання забезпечення безпеки, як
своєчасне встановлення оновлень, відключення невикористовуваних модулів або
застосування ефективної політики паролів.
Наступні вимоги можна назвати залежними від даних.
1.· Безпека призначеного для користувача шару ПЗ.
2. Безпечна організація даних і маніпулювання ними.
Питання організації даних і управління ними є ключовим в системах зберігання
інформації. Незважаючи на те, що в наведеному переліку він вказаний останнім, саме в цю
область входять завдання організації даних з контролем цілісності, забезпечення захисту від
логічного висновку і інші, специфічні для СКБД проблеми безпеки. Фактично це завдання
включає в себе основний пул залежних від даних уразливостей і захисту від них.
Шляхи створення захищених БД
Для подолання названих проблем забезпечення інформаційної безпеки СКБД
необхідно перейти від методу закриття уразливостей до комплексного підходу забезпечення
безпеки сховищ інформації. Основними етапами цього переходу повинні стати наступні
положення.
1. Розробка комплексних методик забезпечення безпеки сховищ даних на поточному
етапі.
Створення комплексних методик дозволить застосовувати їх (або їх відповідні версії)
при розробці сховищ даних і користувальницького ПЗ. Основою для створення таких
документів можуть стати, наприклад, узагальнюючі проблематику роботи або дотримання
комплексної методики, що дозволить уникнути багатьох помилок управління СКБД і
захиститися від найбільш поширених на сьогоднішній день уразливостей.
2. Оцінка і класифікація загроз і уразливостей СКБД.
Спеціалізована класифікація загроз і уразливостей СКБД дозволить упорядкувати їх
для подальшого аналізу і захисту, дасть можливість встановити залежність між
уразливостями і причинами (джерелами) їх виникнення. В результаті при введенні
конкретного механізму в К з'явиться можливість встановити і спрогнозувати пов'язані з ним
загрози і заздалегідь підготувати відповідні засоби забезпечення безпеки.
3. Розробка стандартних (таких, що застосовуються до різних СКБД без внесення
змін або з мінімальними змінами) механізмів забезпечення безпеки.
Стандартизація підходів і мов роботи з даними дозволить створити
мультиплатформенні засоби забезпечення безпеки, які застосовуються до різних СКБД. З
одного боку, це методичні та теоретичні підходи, що застосовуються в рамках моделі даних.
На сьогоднішній день є напрацювання таких механізмів по реляційній моделі, однак вони не
вирішують всіх нагальних питань безпеки. З іншого – це розробка теоретичного базису для
нових СКБД, зокрема, конкретизація і формалізація агрегатних моделей даних. Поява
готових програмних засобів багато в чому залежить від виробників і розробників СКБД і їх
відповідність стандартам, а також достатності визначених у стандарті засобів для побудови
розвинених механізмів безпеки.
4. Розробка теоретичної бази інформаційного захисту систем зберігання і
маніпулювання даними.
Вище відзначено ряд характерних особливостей, специфічних для сховищ даних:
подвійна природа СКБД, залежність уразливостей і механізмів управління від даних та
описана організація їх моделі, загрози логічного виведення, різна значимість поєднань даних.
Все це визначає специфічний характер безпеки СКБД і вимагає нових теоретичних підходів
до забезпечення захисту даних в програмних системах такого роду.
Окреме велике питання – це розвиток теоретичного базису в контексті формалізації
моделі даних, а також розробка підходів забезпечення цілісності інформації для нових
NoSQL-сховищ.
Тема 14. ВСТУП ДО ІНТЕЛЕКТУАЛЬНИХ СИСТЕМ
ПРЕДСТАВЛЕННЯ ЗНАНЬ ТА ВИВІД ЗА ЗНАННЯМИ.
Значення експертного аналізу
Якщо поставити питання: "при виконанні яких умов комп'ютерну програму можна
назвати експертом?" Цілком логічно зажадати, щоб така програма володіла знаннями.
Просто здатність виконувати деякий алгоритм, наприклад проводити аналіз списку елементів
на наявність якої-небудь властивості, явно не відповідає цій вимозі.
Знання, якими володіє програма, повинні бути сконцентровані на певну предметну
область. Випадковий набір імен, дат і місць подій, сентенцій з класиків і т.п. — це зовсім не
ті знання, які можуть послужити основою для програми, що претендує на здатність виконати
експертний аналіз. Знання припускають певну організацію і інтеграцію, тобто знання – це
окремі відомості що співвідносяться одне з одним і утворюють щось на зразок ланцюжка, в
якому одна ланка "тягне" за собою наступну.
І, нарешті, з цих знань повинно безпосередньо випливати рішення проблем. Просто
продемонструвати свої знання, що стосуються, наприклад, технічного обслуговування
комп'ютерів, — це далеко не те ж саме, що привести зремонтувати комп'ютер.
Експертна система — це програма для комп'ютера, яка оперує зі знаннями в певній
предметній області з метою вироблення рекомендацій або вирішення проблем.
Експертна система може повністю взяти на себе функції, виконання яких звичайно
вимагає залучення досвіду людини-фахівця, або грати роль асистента для людини, що
ухвалює рішення. Іншими словами, система, що вимагає ухвалення рішення, може отримати
його безпосередньо від програми або через проміжну ланку — людину, яка спілкується з
програмою. Той, хто ухвалює рішення, може бути експертом з своїми власними правами, і в
цьому випадку програма може "виправдати" своє існування, підвищуючи ефективність його
роботи. Альтернативний варіант — людина, що працює в співпраці з такою програмою,
може добитися з її допомогою результатів більш високої якості.
Взагалі кажучи, правильний розподіл функцій між людиною і машиною є однією з
ключових умов високої ефективності впровадження експертних систем. Технологія
експертних систем є одним з напрямів нової області дослідження, яка отримала
найменування штучного інтелекту (Artificial Intelligence AI).
Дослідження в цій області сконцентровані на розробці і упровадженні комп'ютерних
програм, здатних емулювати (імітувати, відтворювати) ті області діяльності людини, які
вимагають мислення, певної майстерності і накопиченого досвіду. До них відносяться задачі
ухвалення рішень, розпізнавання образів розуміння людської мови. Ця технологія вже
успішно застосовується в деяких областях техніки і життя суспільства — органічній хімії,
пошуку корисних копалин, медичній діагностиці. Перелік типових задач, вирішуваних
експертними системами, включає:
 добування інформації з первинних даних (таких як сигнали, що поступають від
гідролокатора);
 діагностика несправностей (як в технічних системах, так і в людському
організмі);
 структурний аналіз складних об'єктів (наприклад, хімічних з'єднань);
 вибір конфігурації складних багатокомпонентних систем (наприклад,
розподілених комп'ютерних систем);
 планування послідовності виконання операцій, що приводять до заданої мети
(наприклад, виконуваних промисловими роботами).

Характеристики експертних систем


Експертна система відрізняється від інших прикладних програм наявністю наступних
ознак:
1.· Моделює не стільки фізичну (або іншу) природу певної проблемної області,
скільки механізм мислення людини стосовно вирішення задач в цій проблемній області. Це
істотно відрізняє експертні системи від систем математичного моделювання або
комп'ютерної анімації. Не можна, звичайно, сказати, що програма повністю відтворює
психологічну модель фахівця в цій предметній області (експерта), але важливо, що основну
увагу всетаки надається відтворенню комп'ютерними засобами методики вирішення
проблем, яка застосовується експертом, тобто виконанню деякої частини задач так само, як
це робить експерт.
2. Система, крім виконання обчислювальних операцій, формує певні міркування і
висновки, грунтуючись на тих знаннях, якими вона володіє. Знання в системі
представлені, як правило, на деякій спеціальній мові і зберігаються окремо від власне
програмного коду, який і формує висновки і міркування. Цей компонент програми прийнято
називати базою знань.
3. При вирішенні задач основними є еврістичні і наближені методи які, на відміну
від алгоритмічних, не завжди гарантують успіх. Евристика, по суті, є правилом впливу (rule
of thumb), який в машинному вигляді представляє деяке знання, придбане людиною у міру
накопичення практичного досвіду вирішення аналогічних проблем. Такі методи є
приблизними в тому значенні, що, поперше, вони не вимагають вичерпної початкової
інформації, і, подруге, існує певний ступінь упевненості (або невпевненості) в тому, що
пропоноване рішення є вірним.
Експертні системи відрізняються і від інших видів програм з області штучного
інтелекту:
1. Експертні системи мають справу з предметами реального світу, операції з котрими
звичайно вимагають наявності значного досвіду, накопиченого людиною. Безліч програм з
області штучного інтелекту є суто дослідницькими і основна увага в них надається
абстрактним математичним проблемам або спрощеним варіантам реальних проблем (іноді їх
називають "іграшковими" проблемами), а метою виконання такої програми є "підвищення
рівня інтуїції" або відпрацювання методики. Експертні системи мають яскраво виражену
практичну спрямованість або в науковій або комерційній області.
2. Однією з основних характеристик експертної системи є її продуктивність, тобто
швидкість отримання результату і його достовірність (надійність). Дослідницькі програми
штучного інтелекту можуть і не бути достатньо швидкими, можна змиритися і з існуванням
в них відмов в окремих ситуаціях, оскільки, врешті-решт, — це інструмент дослідження, а не
програмний продукт. А ось експертна система повинна за прийнятний час знайти рішення,
яке б не було гіршим, ніж те, яке може запропонувати спеціаліст в цій предметній області.
3. Експертна система повинна володіти здатністю пояснити, чому запропоновано саме
таке рішення, і довести його обгрунтованість. Користувач повинен отримати всю
інформацію, необхідну йому для того, щоб бути впевненим, що рішення ухвалене не "зі
стелі". На відміну від цього, дослідницькі програми "спілкуються" тільки зі своїм творцем,
який і так (швидше за все) знає, на чому грунтується її результат. Експертна система
проектується у розрахунку на взаємодію з різними користувачами, для яких її робота
повинна бути, по можливості, прозорою.
Нерідко термін система, заснована на знаннях (knowledge-based system),
використовується як синонім терміну експертна система, хоча, строго кажучи, експертна
система — це більш широке поняття. Система, заснована на знаннях, — це будь-яка система,
процес роботи якої заснований на застосуванні правил відношень до символічно
представлених знань, а не на використанні алгоритмічних або статистичних методів. Таким
чином, програма, здатна міркувати про погоду, буде системою, заснованою на знаннях навіть
у тому випадку, якщо вона не здатна виконати метеорологічну експертизу. А ось щоб мати
право називатися метеорологічною експертною системою, програма повинна бути здатною
давати прогноз погоди (інше питання — наскільки він буде достовірний).
Підсумовуючи все сказане, відзначимо — експертна система містить знання в
певній предметній області, накопичені в результаті практичної діяльності людини (або
людства), і використовує їх для вирішення проблем, специфічних для цієї області. Цим
експертні системи відрізняються від інших, "традиційних" систем, в котрих перевага
віддається більш загальним і менш пов'язаним з предметною областю теоретичним методам,
частіше всього математичним.
Процес створення експертної системи часто називають інженерією знань (knowledge
engineering) і він розглядається у якості "вживання методів штучного інтелекту".
Базові функції експертних систем
Оскільки теорія експертних систем виросла з більш загальної концепції штучного
інтелекту, то немає нічого дивного у тому, що проблематика цих областей має багато
загального.
Придбання знань
Бучанан таким чином сформулював [Buchanan et al, 1983] функцію придбання знань:
"Придбання знань це передача потенційного досвіду вирішення проблеми від деякого
джерела знань і перетворення його у вигляд, який дозволяє використовувати ці знання в
програмі".
Передача знань виконується в процесі достатньо тривалих і розлогих співбесід між
фахівцем по проектуванню експертної системи (будемо надалі називати його інженером по
знаннях) і експертом в певній предметній області, здатним достатньо чітко сформулювати
досвід, що є у нього. За існуючими оцінками, таким методом можна сформувати від двох до
п'ять "елементів знань" (наприклад, правил впливу) в день. Звичайно, це дуже низька
швидкість, тому багато дослідників розглядають функцію придбання знань у якості одного з
головних "вузьких місць" технології експертних систем [Feigenbaum, 1977].
Причин такої низької продуктивності дуже багато. Нижче перераховані тільки деякі з
них:
1. Фахівці у вузькій області, як правило, користуються власним жаргоном, який важко
перекласти на звичайну "людську" мову, а тому потрібно достатньо багато додаткових
питань для уточнення його логічного або математичного значення.
2. Факти і принципи, що лежать в основі багатьох специфічних областей знання
експерта, не можуть бути чітко сформульовані в термінах математичної теорії або
детермінованої моделі, властивості якої добре зрозумілі. Так, експерту у фінансовій області
може бути відомо, що певні події можуть стати причиною зростання або зниження
котирувань на фондовій біржі, але він нічого вам не скаже точно про механізми, які
приводять до такого ефекту, або про кількісні оцінці впливу цих чинників.
3. Для того, щоб розв'язати проблему в певній області, експерту недостатньо просто
володіти сумою знань про факти і принципи в цій області. Наприклад, досвічений фахівець
знає, якого роду інформацією потрібно володіти для формулювання тієї або іншої думки,
наскільки надійні різні джерела інформації і чи можна розчленувати складну проблему на
більш прості, які можна вирішувати більш або менш незалежно. Виявити в процесі
співбесіди такого роду знання, що погано піддаються формалізації бо базовані на особистому
досвіді, значно складніше ніж отримати простий перелік якихось фактів або загальних
принципів.
4. Експертний аналіз навіть в дуже вузькій області, виконуваний людиною, дуже
часто потрібно помістити в досить широкий контекст, який включає і багато речей, на погляд
експерта є самоочевидними, але ні в якому разі не для сторонньої особи.
У деяких дослідників виник інтерес до автоматизації процесу передачі знань фахівцем
машині. Один з напрямів досліджень в цій області — автоматизоване добування знань
(automated knowledge elicitation) — з'явилося як побічний продукт у розвитку систем
людиномашинного діалогу. Інші дослідники вважають, що "розшити" це вузьке місце
(діалогу між машиною та користувачем) можна, рухаючись по шляху машинного навчання.
Ідея полягає в тому, щоб машина вчилася вирішувати проблеми приблизно так, як вчиться
людина.
4. Представлення знань
Представлення знань — ще одна функція експертної системи.
Теорія представлення знань — це окрема область досліджень, тісно пов'язана з
філософією формалізму.
Предмет дослідження в цій області — методи асоціативного зберігання інформації,
подібні до тих, які існують в мозку людини. При цьому основну увагу, природно, надається
логічній, а не біологічній стороні процесу, випускаючи деталі фізичних перетворень.
В 70-х роках дослідження в області представлення знань розвивалися у напрямках:
 розкриття принципів роботи пам'яті людини,
 створення теорії отримання відомостей з пам'яті,
 розпізнавання і відновлення знань.
Деякі з досягнутих теоретичних результатів привели до створення комп'ютерних
програм, які моделювали різні способи об'єднання понять (концептів). З'явилися комп'ютерні
програми, які могли деяким чином відшукувати потрібні "елементи" знання на певному етапі
вирішення проблеми. З часом психологічна достовірність цих теорій відійшла на другий
план, а основне місце, принаймні з точки зору проблематики штучного інтелекту, зайняла їх
здатність служити інструментом для роботи з новими інформаційними і управляючими
структурами.
В області експертних систем представлення знань цікавить нас в основному як засіб
відшукання методів формального опису великих масивів корисної інформації з метою їх
подальшої обробки за допомогою символічних обчислень.
Формальний опис означає впорядкування в рамках якої-небудь мови, що містить
достатньо чітко формалізований синтаксис побудови виразів і такого ж рівня семантику, що
пов'язує значення виразу з його формою.
Символічні обчислення означають виконання нечислових операцій, в яких можуть
бути сконструйовані символи і символьні структури для представлення різних концептів і
відносин між ними.
В області штучного інтелекту ведеться інтенсивна робота із створення мов
представлення {representation languages). Під цим терміном мають на увазі комп'ютерні мови,
орієнтовані на організацію описів об'єктів і ідей, на противагу статичним послідовностям
інструкцій або зберіганню простих елементів даних.
Основними критеріями доступу до представлення знань є логічна адекватність,
евристична потужність і природність, органічність нотації. Ці терміни, швидше за все,
потребують пояснень.
Логічна адекватність означає, що представлення повинне володіти здатністю
розпізнавати всі відмінності, які ви закладаєте в початкову сутність.
Наприклад, неможливо представити ідею, що кожні ліки мають який-небудь побічний
небажаний ефект, якщо лише не можна буде провести відмінність між призначенням
конкретного лікарського препарату і його побічним ефектом (наприклад, аспірин поглиблює
виразкову хворобу). В більш загальному вигляді вираз, що передає цей ефект, звучить так:
"кожні ліки володіють небажаним побічним ефектом, специфічним для цього препарату".
Евристична потужність означає, що разом з наявністю виразної мови представлення
має існувати деякий спосіб застосування та інтерпретації представлень, сконструйований
так, щоб з їх допомогою можна було розв'язати проблему. Часто виявляється, що мова, яка
володіє більшою виразною здатністю в термінах кількості семантичних відмінностей,
виявляється проблемнішою в управлінні описом взаємозв'язків в процесі рішення проблеми.
Виразна ефективність у багатьох отриманих формалізмів може виявитися достатньо
обмеженою у порівнянні з живою мовою або навіть стандартною логікою. Часто рівень
евристичної потужності оцінюється по результату, тобто по тому, наскільки легко вдається
витягнути потрібне знання стосовно конкретної ситуації. Знати, які знання найкраще
підходять для вирішення конкретної проблеми, – це одна з якостей, яка відрізняє дійсно
фахівця, експерта в певній області, від новачка або просто начитаної людини.
Природність нотації слід розглядати як певну перевагу системи, оскільки більшість
програмних засобів, побудованих на базі експертних систем, потребує накопичення великого
об'єму знань, а вирішити таку задачу досить важко, якщо синтаксис мови представлення
дуже складний. Будь-який фахівець скаже вам, що при інших рівних характеристиках краще
та система, з якою простіше працювати. Вирази, якими формально описуються знання,
повинні бути по можливості простими для написання, а їх значення повинне бути
зрозумілим навіть тому, хто не знає, як же комп'ютер інтерпретує ці вирази. Прикладом може
служити декларативний програмний код, який сам по собі дає достатньо чітке уявлення про
процес його виконання навіть тому, хто не має уявлення про деталі реалізації комп'ютером
окремих інструкцій.
В 80-х роках науковцями було запропоновано чимало угод, придатних для кодування
знань на мовному рівні. Серед них найвідомішими є:
 породжуючі правила (productior rules) [Davis and King, 1977];
 структуровані об'єкти (structured objects) [Findler, 1979];
 логічні програми (logic programs) [Kowalski, 1979].
В більшості експертних систем використовується один або декілька з перерахованих
формалізмів, а аргументи на користь і проти будь-якого з них дотепер є темою для жвавих
дискусій серед теоретиків.
Більшість фрагментів програмного коду, які ілюструють функціонування
інтелектуальних систем, написана на мові CLIPS, в якій використовується комбінація
продукуючих правил і структурованих об'єктів. В додаток віднесено достатньо розлогий
опис основних концепцій і програмних конструкцій мови CLIPS, який супроводжується
багатьма прикладами. Там же можна знайти і нетривіальні програми, засобами яких
продемонстровано як багато цікавих можливостей мови, так і реалізація її засобами методів
штучного інтелекту.
Управління процесом пошуку рішення
При проектуванні експертної системи серйозна увага повинна бути приділена i тому,
як здійснюється доступ до знань і як вони використовуються при пошуку рішення. Знання
про те, які знання потрібні в тій або іншій конкретній ситуації і уміння ними розпорядитися –
важлива частина процесу функціонування експертної системи. Такі знання отримали
найменування метазнань — тобто знань про знання. Вирішення нетривіальних проблем
вимагає і певного рівня планування управління, при виборі, яке питання потрібно задати,
який тест виконати, і т.д.
Використання різних стратегій перебору наявних знань, як правило, має досить
істотний вплив на характеристики ефективності програми. Ці стратегії визначають, яким
способом програма відшукує вирішення проблеми у деякому просторі альтернатив.
Більшість формалізмів представлення знань можуть бути використані в різних режимах
управління, і розробники експертних систем продовжують експериментувати в цій області.
Роз'яснення ухваленого рішення
Виникає питання про те, як допомогти користувачу зрозуміти структуру і функції
взаємодії людини і машини, яка з'явилася на перетині таких областей, як штучний інтелект,
промислова технологія, фізіологія і ергономіка. На сьогодні внесок в цю область дослідників,
що займаються експертними системами, полягає в розробці методів представлення
інформації про поведінку програми в процесі формування ланцюжка логічних висновків при
пошуку рішення. Представлення інформації про ЕС системи важливе з багатьох причин.
Користувачі, що працюють з системою, потребують підтвердження того, що у
кожному конкретному випадку висновок, до якого прийшла програма, в основному
коректний.
Інженери, що мають справу з формуванням бази знань, повинні переконатися, що
сформульовані ними знання застосовані правильно, у тому числі і у разі, коли існує
прототип.
Експертам в предметній області бажано прослідити хід міркувань і спосіб
використовування тих відомостей, які з їх слів були введені в базу знань. Це дозволить
судити, наскільки коректно вони застосовуються в даній ситуації.
Програмістам, які супроводжують, відладжують і модернізують систему, потрібно
мати в своєму розпорядженні інструмент, що дозволяє заглянути в "її нутро" на рівні більш
високому, ніж виклик окремих мовних процедур.
Менеджер системи, що використовує експертну технологію, який врешті-решт несе
відповідальність за наслідки рішення, прийнятого програмою, також потребує
підтвердження, що ці рішення достатньо обгрунтовані.
Здатність системи пояснити методику ухвалення рішення називають ще прозорістю
системи. Мається на увазі, наскільки просто персоналу з'ясувати, що робить програма і
чому. Цю характеристику системи слід розглядати в cукупності з режимом управління,
оскільки послідовність етапів ухвалення рішення тісно пов'язана із заданою стратегією
поведінки. Відсутність достатньої прозорості поведінки системи не дозволить експерту
впливати на її продуктивність. Відстежування і оцінка поведінки системи – задача досить
складна і для її вирішення необхідні спільні зусилля експерта і фахівця по інформатиці.
Резюме. Якщо потенційний користувач експертної системи задасть питання: "А чи
може вона розв'язати мої проблеми?" Відповідь ухильна: "дивлячись які". Існує кілька
чинників, від яких залежить остаточна відповідь: природа проблеми, наявність певного
досвіду в тій предметній області, до якої відноситься проблема, і можливість зіставлення
результатів аналізу проблеми і наявного досвіду методом, доступним комп'ютерній програмі.
Потенційному користувачу слід спочатку задуматись над наступним: чи є у нього на
прикметі експерт, який
 здатний розв'язати проблему;
 знає, як розв'язується проблема;
 здатний пояснити іншому, як розв'язується проблема;
 має у своєму розпорядженні час, щоб пояснити іншому, як розв'язується проблема;
 має достатні спонукальні мотиви до активної участі у цьому заході.
Наприклад, прогноз погоди – це не та задача, яку може вирішити хто-небудь, тільки
навчений великим досвідом експерт. Розпізнавання мови – це задача, яку вирішує практично
кожний, але ніхто з нас (включаючи і професійних лінгвістів) не може зрозуміло пояснити,
як це робиться. А тому використовувати для вирішення цієї проблеми методи, засновані на
аналізі знань, навряд чи вдасться. Тут більшого слід чекати від статистичного моделювання.
Навіть маючи на прикметі геніального експерта, котрий знає, як розв'язується задача, не
можна розраховувати на успіх, якщо цей експерт не може або не бажає детально і зрозуміло
пояснити, як він це робить. Як правило, експерт високого класу не займається пошуком
недоліків в пропозиціях роботи в тій області, з якою він добре знайомий, а тому вважає за
краще виконувати її, а не вести просторові бесіди про те, як він це робить.
В задачі також можуть існувати чинники, що обмежують можливість "машинного"
відтворення людського досвіду. Наприклад:
 в процесі рішення задачі використовуються здібності органів чуття людини,
недоступні на сьогоднішній день у світі машин;
 в рішення задачі залучені міркування здорового глузду людства або великий
об'єм знань, що самі собою зрозумілі для будь-якої людини.
Дуже важливо відділити ті знання, володіння якими властиве саме експертам у певній
галузі, від тих знань, які відомі будь-кому, що виконує в цій області рутинну роботу.
Не можна випустити з уваги і величезний об'єм знань про навколишній світ, яким ми
все осмислюємо: знаннями про предмети і їх властивості, людей і мотивацію їх дій,
взаємозв'язки у фізичному світі і найвірогідніший перебіг подій в тих або інших умовах —
список можна продовжувати до безмежності. Цю сукупність знань ми не включаємо в
знання, що відрізняють експерта, але дотепер ще не зовсім ясно, наскільки вони важливі
комп'ютеру для вирішення вузькоспеціальної проблеми. Таким чином, будь-яка задача,
яку не вдається "інкапсулювати" в обмежений перелік фактів і правил, на
сьогоднішній день не під силу експертним системам.
З другого боку, проблеми, які можуть бути вирішені переліком асоціативних зв'язків
між осяжними сукупностями даних і класами подій, чудово підходять для ЕС. Отже:
Оволодіння знаннями – це передача досвіду рішення проблеми від людини програмі.
Представлення знань – це кодування інформації про досвід вирішення проблем
усередині машини.
Управління процесом пошуку рішення – ухвалення рішення про послідовність
використовування наявних знань.
Пояснення ухвалених рішень – це передача інформації про хід рішення проблеми
користувачу.
Тема 15. ОГЛЯД ДОСЛІДЖЕНЬ В ОБЛАСТІ ШТУЧНОГО ІНТЕЛЕКТУ
Барр і Файгенбаум запропонували наступне визначення, яке ніхто не ставив під
сумнів майже два десятиліття [Barr and Feigenbaum, 1981]: "Штучний інтелект (ШІ) – це
область інформатики, яка займається розробкою інтелектуальних комп'ютерних систем,
тобто систем, що володіють можливостями, які ми традиційно пов'язуємо з людським
розумом, – розуміння мови, навчання, здатність міркувати, вирішувати проблеми і т.д."
Іншими словами, дослідження в області штучного інтелекту направлені на розробку
програм, що вирішують задачі, з якими зараз краще справляється людина, оскільки вони
вимагають залучення таких функцій людського мозку, як здатність до навчання на основі
сприйняття, асоціативної організації пам'яті і здатності робити висновки на основі думок .
Таким чином, розробку програми, яка виконуватиме складну статистичну обробку
даних, не можна розглядати як дослідження в області ШІ, які б складні алгоритми в ній не
використовувались. А ось створення програми породження і перевірки гіпотез відноситься
саме до цієї області. Але, з другого боку, розділити процес перевірки гіпотез на окремі
експерименти – це мистецтво, яке дослідник осягає як в результаті спеціального навчання,
так і на власному досвіді. Скласти комп'ютерну програму, яка виконувала б те ж саме, –
задача далеко не тривіальна. Як в кожній новій області, і тут існують різні точки зору на
головне призначення досліджень по штучному інтелекту. Деякі учені схиляються до того, що
штучний інтелект є відгалуженням технічних наук, оскільки основний напрям досліджень в
цій сфері – створення інтелектуальних штучних істот, скажімо роботів. Інші роблять наголос
на зв'язках з тими областями, які займаються механізмом пізнання, – процесами обробки
інформації в мозку людини. Але все таки основні зусилля в цій області робляться у напрямі
емуляції мислення людини – розробці методів, які дозволили б запрограмувати машину так,
щоб вона могла моделювати (відтворювати) або навіть перевершувати здібності людського
розуму. Дослідження в цій області тісно пов'язані з суміжними – інформатикою (наукою про
обробку інформації за допомогою комп'ютерів), психологією і лінгвістикою, що призводить
іноді до певного тертя в науковому середовищі, але набагато частіше результатом є поява
нових і несподіваних ідей.
Історію досліджень в області штучного інтелекту, починаючи приблизно з 1950 року і
по сьогоднішній день, можна розділити на три періоди. За основу періодизації взято ті
напрями досліджень, які найбільш активно розвивалися протягом кожного з них.
1. Класичний період: ігри і доказ теорем
Дослідження в області штучного інтелекту почалися практично відразу ж після появи
комп'ютерів і перших дослідів по їх застосуванню для інших, більш "приземлених" цілей.
Все почалося з того, що незабаром після закінчення Другої світової війни були зроблені
спроби вирішувати за допомогою комп'ютера ігрові задачі і головоломки. Зараз, аналізуючи
цей період, можна прослідкувати, як деякі ідеї і підходи до вирішення проблем за допомогою
комп'ютера виросли саме з цих перших експериментів.
1.1 Пошук у просторі станів
Фундаментальна ідея, яка з'явилася в результаті цих перших дослідів, отримала
найменування пошук в просторі станів. По суті, ідея дуже проста.
Безліч проблем можна сформулювати в термінах трьох найважливіших інгредієнтів:
 початковий стан проблеми, наприклад початковий стан головоломки;
 тест завершення – перевірка, чи досягнуто необхідного кінцевого стану або
знайдено вирішення проблеми (прикладом може слугувати правило визначення, чи
зібрана головоломка);
 множина операцій, які можна використовувати для зміни поточного стану
проблеми, наприклад кроки або переміщення фігур при збиранні головоломки.
Один із способів представлення такого концептуального простору станів – граф, в
якому станам відповідають вершини, а операціям – дуги. Він не містить вершин, які
повторюються, що може привести до утворення петель на графі.
Метод формування анаграм послідовним переліченням є прикладом вживання
алгоритму, що отримав найменування generate-and-test (породження і перевірка).
(1) Генерувати новий стан, модифікуючи існуючий; наприклад, змінити
послідовність букв, додавши нову в існуючу послідовність.
(2) Перевірити, чи не є стан, що утворився, кінцевим (рішенням); наприклад,
перевірити, чи не є послідовність, що утворилася, осмисленим словом. Якщо це так, то
завершити, інакше перейти до кроку (1).
Множину рішень, які задовольняють умові на кроці (2), іноді називають простором
рішень. В деяких головоломках, рішень багато, а в інших існує всього декілька або тільки
одне. Алгоритм має два основні варіанти: пошук вглиб {depth-first search) і пошук вшир
(breadth-first search).[3] Відрізняються варіанти порядком формування станів на кроці (1).
Дамо їх неформальний опис:
Для будь-якого даного вузла N алгоритм пошуку вглиб будує нащадок цього вузла,
тобто формує стан, який утворюється в результаті вживання операторів до вузла N, а потім
переходить до формування вузла, найближчого до N, на тому ж рівні графа ("сусіду" N),
тобто формує стан, який утворюється в результаті вживання оператора до вузла-батька N.
Алгоритм пошуку вшир діє навпаки — спочатку формуються всі "сусіди" вузла N, а
потім вже будуються його нащадки. Таким чином, в алгоритмі пошуку вшир є видимими
послідовно стани, представлені вузлами одного і того ж рівня на графі, а в алгоритмі пошуку
вглиб є видимими стани на одному шляху, а потім відбувається повернення назад на один
рівень і формується наступний шлях.
Відзначимо, що властивості цих алгоритмів істотно відрізняються.
 Алгоритм пошуку вшир відшукує рішення, шлях до якого на графі —
найкоротший, якщо таке існує. Іншими словами, він знаходить найкоротший шлях між
початковим станом і рішенням. Алгоритми, що володіють такою властивістю, називаються
вирішуваними (admissible).
 Алгоритм пошуку вглиб може швидше знайти рішення, особливо, якщо при
його виконанні використовуються евристики для вибору чергової гілки.
Але цей алгоритм може ніколи не закінчитися, якщо простір станів нескінченний.
Число вузлів росте експоненціально у міру збільшення числа рівнів на графі. Це
явище часто називають комбінаторним вибухом і воно являє дуже серйозну проблему при
програмуванні таких задач, наприклад при "грубому" переборі всіх можливих варіантів
позицій в грі в. Оскільки людський мозок більш слабкий ніж комп'ютер при вирішенні задач,
пов'язаних з перебором варіантів, природно припустити, що серйозний шахіст вирішує цю
задачу якимсь іншим способом. Швидше за все він використовує свій досвід, уяву і
аналітичні здібності, поперше, для формування загальної стратегії гри, а подруге, для вибору
якнайкращого чергового ходу. Ось такий спосіб рішення ми і називаємо "інтелектуальним",
на відміну від "грубого перебору".[4]
В ігрових програмах також використовується пошук в просторі станів, але стратегія
пошуку більш селективна, ніж у разі прямого застосування алгоритму generate-and-test.
Потрібно брати до уваги і те, що в грі, як правило, беруть участь дві протиборчі сторони.
Були розроблені непогані програми для гри в шашки, нарди і шахи, які не можна віднести до
класу систем, заснованих на знаннях, а швидше до класу програм, що володіють здатністю
вибірково аналізувати простір станів, що значно підвищує швидкість і ефективність аналізу.
В середині 50-х років дослідники в області ШІ зацікавились напрямком, який отримав
назву – доказ теорем. Значення задачі доказу полягає в тому, щоб показати, як деяке
твердження, яке потрібно довести {теорема), логічно виходить з декларованої безлічі інших
тверджень або аксіом (які вважаються істинними або є такими апріорі).
Дослідженням обчислювальної осяжності (або неосяжності) проблем займається
теорія складності. Спершу нам буде потрібно тільки знати, що існують класи проблем,
рішення яких вимагає ресурсів, що експоненційно зростають при лінійному збільшенні
розмірності задачі. Наприклад, час, необхідний для відшукання шляху в лабіринті,
експоненціально збільшується при збільшенні кількості розгалужень в лабіринті.
Аналогічно, час, необхідний для пошуку доведення теореми шляхом обчислення
тверджень, росте експоненційно по відношенню до кількості змінних. Такі проблеми є в
загальному випадку неосяжними і називаються NP-hard. Проблеми, час рішення яких
пов'язаний з розмірністю задачі поліноміальної функції, вважаються осяжними. Наприклад,
перевірка заданого маршруту в лабіринті або перевірка правильності доведення деякої
теореми – осяжні проблеми, Але можна показати, що, на жаль, більшість проблем, які
цікавлять нас в області штучного інтелекту, відноситься до класу NP-hard. Тому таке
важливе значення надається використанню евристичних методів при їх рішенні.
Як і у випадку з головоломками, деякі концепції і методи, розроблені в області
машинного доказу теорем (іноді цю область досліджень називають automated reasoning –
машинним пошуком логічного висновку), дуже допомагають людям при вирішенні
практичних проблем. Отже, знання, що стосуються рішення деякої проблеми, можна
представити як набір аксіом, тобто теорію, а процес пошуку рішення проблеми можна
розглядати як спробу довести теорему, якою є шукане рішення. Іншими словами, пошук
рішення серед сформульованих теорем аналогічний пошуку шляху на графі в просторі станів
і для його аналізу можна використовувати той же апарат.
На жаль, процес породження всіх можливих теорем, витікаючих із заданої множини
аксіом, має всі риси комбінаторного вибуху, оскільки на основі первинних теорем, які
безпосередньо випливають з аксіом, можна сформулювати нову множину теорем і т.д.
Пошук рішення за допомогою доведення теорем може спричинити за собою таку кількість
обчислень, з якою не справиться жоден комп'ютер, і можна довести, що деякі з таких
обчислень навіть теоретично ніколи не зможуть завершитися. В області машинного пошуку
логічного висновку істотні успіхи досягнуті в напрямі, який пов'язаний з генерацією
формальних математичних доказів, але ці методи важко застосовні до менш формалізованих
областей. Оскільки більшість людських істот не володіє видатними здібностями в області
побудови логічних висновків, та ще беручи до уваги комбінаторні складнощі, навряд чи
варто розраховувати на істотний вплив участі людини у формальних міркуваннях такого
роду. Швидше допомога може виявитися в тому, що людина зможе робити більш
правдоподібні припущення або породжувати більш вірогідні гіпотези, що носять
неформальний характер. Це саме той вид висновків, який використовується при моделюванні
шляхів пошуку рішення реальних проблем в експертних системах.
1.2. Евристичний пошук
Оскільки сліпий пошук можливий тільки в невеликому просторі варіантів,
напрошується природний висновок, що необхідний деякий спосіб направленого пошуку.
Якщо такий спосіб використовує при пошуку шляхи на графі в просторі станів деяких знань,
специфічних для конкретної предметної області, його прийнято називати евристичним
пошуком. Краще всього розглядати евристику як деяке правило впливу, яке, хоча і не
гарантує успіху (як детермінований алгоритм або процедура ухвалення рішення), і у
більшості випадків виявляється дуже корисним.
Проста форма евристичного пошуку – це сходження на гору. В процесі пошуку в
програмі використовується деяка оцінкова функція, за допомогою якої можна грубо
оцінити, наскільки "хорошим" (або "поганим") є поточний стан. Потім можна застосувати ту
ж функцію для вибору чергового кроку, що переводить систему в наступний стан.
Наприклад, проста оцінкова функція для програми гри в шахи може включати
очевидну оцінку матеріалу (кількості і якості фігур, що є на дошці) – свого і суперника.
Потім програма перебирає можливі оператори переходу в новий стан (можливі ходи фігур) і,
порівнюючи результати варіантів, відшукує такий, який характеризується максимальним
значенням оцінкової функції. Іншими словами, шукається такий хід, який дає найбільший
матеріальний виграш.
Основний алгоритм, що реалізує ідею сходження на гору, можна сформулювати так:
(1) Знаходячись в даній точці простору станів, застосувати правила породження нової
множини можливих рішень, наприклад множину ходів фігур, допустимих у даній позиції.
(2) Якщо один з нових станів є рішенням проблеми, припинити процес. Інакше
перейти в той стан, який характеризується найвищим значенням оцінкової функції.
Повернутися до кроку (1).
Але вживання цього підходу натрапляє на добре відомі труднощі. Головна з них – як
сформулювати оцінкову функцію, яка адекватно б відображала "якість" поточного стану.
Продовжуючи наш приклад з грою в шахи, помітимо що мати багато фігур, більше ніж у
суперника, зовсім не значить мати кращу позицію, тобто бути ближче до успіху. Така проста
оцінкова функція не враховує багатьох особливостей цієї гри (а в більш широкому контексті
– особливостей даної предметної області). Більше того, навіть якщо оцінкова функція і
дозволяє адекватно оцінити поточну ситуацію, існують різноманітні ситуації гри, які самі по
собі можуть бути джерелом утруднень. Наприклад, в даному стані немає очевидного
чергового ходу, тобто виявляється, що всі можливі ходи однаково добрі (або погані). Це не
що інше, як вихід на "плато" в нашому сходженні, коли жоден з можливих шляхів не тягне за
собою підйом. Інше можливе джерело утруднень – наявність локальних максимумів, з яких
можливий тільки спуск, тобто "погіршення" стану. Наприклад, я можу узяти вашого ферзя і
після цього програти партію.
Кращими властивостями володіє інша форма евристичного пошуку, яка отримала
назву спочатку найкращий {best-first search). Так само, як і у варіанті сходження на гору, в
нашому розпорядженні є оцінкова функція, за допомогою якої можна порівнювати стани в
просторі станів. Основна ж відмінність нового методу від раніше розглянутого полягає в
тому, що порівнюються не тільки ті стани, в які можливий перехід з поточного, але і всі, до
яких "можна дістатися". Такий алгоритм, природно, вимагає значно більших
обчислювальних ресурсів, але ідея полягає в тому, щоб брати до уваги не тільки найближчі
стани, тобто локальну обстановку, а "охопити" якомога більшу ділянку простору станів і
бути готовим, у разі потреби, повернутися туди, де ми вже були, і піти іншим шляхом, якщо
найближчі претенденти не обіцяють істотного прогресу в досягненні мети. Ось ця
можливість відмовитися від частини пройденого шляху в ім'я глобальної мети і дозволяє
знайти більш ефективний шлях. Необхідність берегти раніше зроблені оцінки станів і
постійно їх обновлювати, звичайно, вимагає значних обчислювальних ресурсів.
Алгоритм А*
Існує добре відомий алгоритм пошуку, який відноситься до групи перший кращий,
отримав найменування А* (вимовляється "А із зірочкою").
Основна ідея алгоритму полягає у використанні для кожного вузла n на графі
проcтору станів оцінкової функції вигляду: f(n)= g(n)+ h(n).
Тут g(n) відповідає відстані на графі від вузла, який представляє кінцевий (цільовий)
стан. Чим менше значення оцінкової функції f(n), тим "краще", тобто. вузол лежить на
найбільш короткому шляху від початкового стану до кінцевої (мети). Ідея алгоритму полягає
у тому, щоб за допомогою f(n) відшукати найкоротший шлях на графі від вихідного стану до
цільового.
Звідси слідує, що якщо h(n) – нижня оцінка дійсного стану до цільового стану, тобто,
якщо h(n) ніколи не дає завищеної оцінки відстані, то алгоритм А* завжди відшукає
оптимальний шлях до мети за допомогою оцінкової функції f(n). Алгоритм, що має таку
властивість називається вирішуваним.
Обчислювальна потужність сучасних комп'ютерів всетаки недостатня для того, щоб
використовувати алгоритми пошуку рішень навіть за допомогою направленого пошуку із
застосуванням оцінкової функції, не говорячи вже про методику сліпого перебору можливих
станів. Простір станів, в якому потрібно вести пошук, при вирішенні таких задач, як
розпізнавання мови, вибір конфігурації комп'ютерної системи або планування послідовності
операцій, настільки великий, що його неможливо проаналізувати такими узагальненими
методами за осяжний відрізок часу, якщо тільки не застосовувати знання, які стосуються
конкретної предметної області. Розвиток експертних систем пішов по шляху залучення
досвіду експертів, як поведінки конкретних об'єктів в конкретній ситуації, так і стратегії
логічного висновку, що стосується деталей, в певній наочній області, що і дозволяє подолати
труднощі, пов'язані з складністю формалізованого пошуку в просторі станів.
Достатньо докладно результати перших досліджень в області програмування ігор і
машинного доказу теорем описані в збірці статей під редакцією Фейгенбаума і Фельдмана
1963.
Найістотніші результати, отримані в цей період, можна сформулювати таким чином:
• проблему будь-якої складності, у принципі, можна звести до проблеми пошуку в
просторі станів, якщо тільки вдається її формалізувати в термінах початкового стану,
кінцевого стану і операцій переходу в просторі станів;
• пошук в просторі станів повинен прямувати певним чином представленими
знаннями про конкретну наочну область.
Дуже рідко вдається звести використовування знань до формулювання адекватної
оцінної функції і таким чином допомогти програмі оцінити свою поведінку в поточній
ситуації і знайти правильний шлях до рішення. Але в більшості випадків потрібне щось
більше, подібне до глобальної стратегії вирішення проблем або явного використовування
знань про об'єкти, їх властивості і пов'язані з ними дії в конкретній предметній області.
Романтичний період: комп'ютер починає розуміти
Період від середини 60-х до середини 70-х вчені вважають "романтичним" в історії
досліджень штучного інтелекту. В цей час увага дослідників з середилася в основному на
проблемі машинного "розуміння", тобто здібності сприймати природну мову людини,
зокрема вести осмислений діалог. Ці спроби філософи зустріли з певним скепсисом. Вони
сумнівалися в тому, що по відношенню до комп'ютерної програми взагалі можна вживати
слово "розуміння".
1. Система SHRDLU
Кульмінаційним моментом цієї епохи з'явилася розробка Виноградом [Winograd,
1972] системи SHRDLU, яка розуміла досить представницьку підмножину слів англійської
мови і робила певні висновки в обмеженій області (в світі, побудованому з деталей дитячого
конструктора). Програма демонструвала свої можливості сприйняття мовних команд,
реконструюючи створений нею "світ деталей", відповідаючи на питання, що стосуються як
конфігурації деталей, так і своїх дій з ними. Вона могла відповідати на питання на зразок
наступних: "якого кольору блок, на якому стоїть червона піраміда?" і будувати план
виконання команди, наприклад: "постав синю піраміду на зелений кубик".
Можна було вважати, що система SHRDLU розуміє фрази на людській мові оскільки
вона адекватно на них реагувала. "Розумність" такого роду сприйняття була названа
"процедуральною семантикою". Висновок про розумність програми грунтувався на ідеї, що
якщо програма здатна у відповідь на питання виконати відповідні дії, то можна вважати, що
вона "зрозуміла" задане питання. Така точка зору на проблему машинного "розуміння"
грунтується на відтворенні в першу чергу поведінкової реакції, а не здібностей людського
мислення.
Інший напрям досліджень був пов'язаний із спробами відтворити механізм розуміння
в менш штучному і більш близькому до реального контексті, наприклад в ситуації візиту до
лікаря або відвідин ресторану. Шанк і Колбі [Schank and Colby, 1973] скористались
структурою, названою ними сценарієм, для об'єднання різноманітних елементів, що
представляли в сукупності реальну ситуацію.
Сценарій можна розглядати як об'єднання різноманітних цілей, рішень і звичаїв,
пов'язаних з певними подіями.
Вживання механізму сценаріїв можна розглядати в світлі проблеми представлення
знань на більш високому рівні, ніж у разі процедуральної семантики. Деякі дослідники
прийшли до висновку, що залежність від контексту є головною перешкодою в рішенні
проблеми комп'ютерного розуміння природної мови. В результаті були початі дослідження в
напрямі, де перевага віддається не формальним моделям мови і пов'язаних з її сприйняттям
розумових процесів, незалежних від конкретної предметної області, а відносно
неформальним, контекстним способам міркувань.
Інші дослідники (наприклад, [Newell and Simon, 1972] і [Anderson, 1976]) спробували
на нескладних задачах (простенькі головоломки, ігри в слова і тести, що оцінюють здібність
до запам'ятовування) змоделювати властивий людині підхід до вирішення проблем. Вони
прагнули зробити так, щоб знання і стратегія поведінки програми якомога більше були схожі
на знання і стратегію поведінки людини в аналогічній ситуації. Оцінка успішності
моделювання проводилася шляхом порівняння поведінки людини і програми при вирішенні
однієї і тієї ж задачі.
Але таке компаративне вивчення стикається з фундаментальною проблемою — не
існує прямого методу показати, що людина і програма штучного інтелекту роблять одні і ті ж
речі однаковим способом. В результаті використовується непряме аргументування.
Наприклад, демонструється, що людина і програма роблять аналогічні помилки, якщо
зустрічаються з проблемою підвищеної складності і помилковими даними, або що розподіл
часу на виконання однакових етапів рішення задачі у людини і програми має однаковий
характер при рішенні аналогічних задач різних класів. Загальноприйнятою стала точка зору,
що простий збіг відповідей на однакові питання — недостатній доказ збігу способів
міркувань, оскільки існує безліч відмінних стратегій і способів використовування наявних
знань, які можна застосувати для вирішення однієї і тієї ж проблеми.
Схеми представлення знань
Ньюелл (Newell) і Саймон (Simon) запропонували схему, відому як набір правил, що
породжують (production rules). З часом, ті що породжують правила, стали основним
інструментом при проектуванні експертних системи. Ньюеллу і Саймону також належить
пріоритет в розробці методики, що отримала назву аналіз протоколу (protocol analysis). Ця
методика полягає в тому, що людині пропонується "думати вголос" в процесі вирішення
проблеми, а потім зафіксований протокол аналізують і намагаються відшукати в ньому
концепції і процедури, які були використані людиною. Цей підхід можна вважати
попередником використовуваної сьогодні методики витягання знань. Вже перші дослідження
на стику психології і інформатики показали, наскільки складною є проблема представлення
знань, але вони також і продемонстрували, що її рішення слід шукати швидше на шляху
емпіричних досліджень, ніж філософських дебатів.
В романтичний період було зроблено безліч досліджень, метою яких було з'ясувати,
яким чином і різноманіття відомостей про окремі факти, і загальні принципи побудови
навколишнього нас світу можна використовувати в комп'ютерній програмі, яка орієнтована
на побудову логічного міркування, направленого на досягнення певної мети. Ці дослідження
включали використовування конструкцій наступних видів (частіше в чистому вигляді, але
іноді і в комбінації):
 правил у формі, "якщо має місце ця умова, то застосуй цей оператор";
 різного роду мереж, в яких вузли відповідають концепціям, а дуги — відносинам
між ними;
 логічних формул, що представляють окремі факти і принципи, включаючи
управляючу інформацію про те, коли застосувати ту або іншу відповідність.
Слід зазначити, що більшість створених в цей період програм носила тільки
дослідницький характер. Лише небагато робіт отримали продовження і утілилися в щось,
прикладене до реальних задач.
Проте безліч схем представлення знань, яким ми віддаємо перевагу в сучасних
розробках, засновані саме на результатах, отриманих в той романтичний період. Без
результатів, отриманих в цей час, навряд чи розробники сучасних експертних систем мали б
своєму в розпорядженні таку різноманітність функцій і структур.
Ми не можемо зі всією упевненістю чітко сформулювати, що є фундаментом
машинного розуміння, можна, принаймні, перерахувати його необхідні складові.
Перша – це здатність уявляти знання про навколишній світ і формулювати думки,
грунтуючись на таких уявленнях. В експертних системах ця здатність демонструється на
практиці з урахуванням того, що в таких системах представляються знання про конкретну
наочну область, відповідно і породжувані ними думки відносяться тільки до цієї області. Як і
програма Винограду, експертна система виглядає вельми обмеженою в значенні об'єму
знань, а вірогідність отримати достовірне з нашої точки зору судження зворотна об'єму
знань, залучених у виведення думки.
Іншою ознакою "розуміючої" машини є здатність знаходити еквівалентність або
аналогію між різними уявленнями в однакових ситуаціях. Тут, звичайно, рахунок далеко не
на користь експертних систем, оскільки в таких системах введення інформації виконується в
абсолютно певній, жорсткій формі, що повністю відповідає запасам в системі знань. Будь-яке
відхилення від очікуваної схеми може привести до практично непередбачуваних наслідків.
І останнє – розуміння припускає здатність навчатися яким-небудь нетривіальним
способом. Зокрема, нова інформація повинна інтегруватися в уже наявне знання і, можливо,
модифікувати його. Такі здібності рідко демонструються в сучасних експертних системах,
хоча останніми роками і намітився певний прогрес в області машинного навчання .
Потрібно відзначити, що сучасні експертні системи ще слабо відповідають багатьом з
цих критеріїв, але висновок про те, що вони не володіють "розумінням" хоча б в окремій
предметній області, також спірний. В своїй області кожна з сучасних експертних систем
"розуміє", тобто здатна вирішувати проблеми, не набагато гірше, ніж людина [Davis, 1989].
Ряд добре описаних систем вирішує свої задачі на такому ж рівні, що і людина-експерт, хоча
і не демонструє "розуміння" того вигляду, яким так були стурбовані дослідники в
описуваний романтичний період. Девіс наполягає на тому, що не існує зв'язку на рівні
необхідності між приватним процесом вирішення проблеми і самим рішенням. Іншими
словами, все, що нам потрібно від експертної системи, – це отримати відповідь, більш-менш
близьку до того, який дає експерт-людина, або допомогти людині дати правильну відповідь.
Результати останніх досліджень в області вдосконалення експертних систем
підштовхують нас все ближче до розпливчатих цілей машинного "розуміння". Ці ж
результати породили і новий погляд на процес рішення проблем людиною і надали в наше
розпорядження значно більш широкий набір концепцій, придатних для аналізу активності як
людини, так і машини при рішенні проблем.
Період модернізму: технології і додатки
Період, який дослідники називають періодом модернізму, продовжувався з середини
70-х до кінця 80-х років. Він характеризується значним прогресом в області експертних
систем, так званою "зимівлею" в області "чистого" штучного інтелекту, інтерес до якого
поновився з появою Всесвітньої павутини.
Можна стверджувати, те що відбувається в ньому багато в чому визначається
розвитком Internet-додатків, зокрема інтелектуальних агентів і порадників, що полегшують і
спрощуючих витягання інформації при роботі із засобами електронної комерції. Успіхи і
невдачі в області штучного інтелекту в цей період значною мірою залежать від можливості і
бажання дослідників подолати вплив традиційних концепцій, характерних для колишніх
періодів, і зосередити зусилля на реальних проблемах нового інформаційного середовища.
У знанні – сила
В період модернізму зросла упевненість, що евристичні можливості "вирішувача"
проблем визначаються уявленням в явній формі відповідних знань, доступних програмі, а не
вживанням якогось витонченого механізму визначення взаємовпливу або складних оцінних
функцій. Значні зусилля були направлені на розробку методів розбиття знань, властивих
людині, на модулі, які можна б було активізувати по заданій схемі. Вже при перших спробах
зімітувати процес вирішення проблем, характерний для людського розуму, дослідники
зіткнулися з обмеженими можливостями представлення знань і необхідністю спростити
механізм їх взаємовпливу, хоча більш пізні дослідження і допомогли певною мірою подолати
ці труднощі.
Було ясно, що стратегія явного представлення людського знання у формі модулів, що
направляються заданою схемою, володіє певними перевагами перед включенням знань в
алгоритм, які можуть бути реалізовані за допомогою програмних технологій, більш близьких
до традиційних:
– Процес відтворення явних знань, що нагадує кулінарний рецепт, потенційно обіцяє
більш чутливий механізм налаштування відповідно тому, як експерт береже і застосовує
знання, що є у нього. Рідко хто з експертів може представити чітко сформульовану
послідовність операцій, що гарантує успішне завершення процедури в будь-якій ситуації, у
відповідь на питання про те, як він діє в процесі рішення проблеми. Швидше знання, якими
володіє експерт, витягуються у міру з'ясування, як поступати в типових ситуаціях, а потім до
них додаються виключення з таких ситуацій.
– Такий метод програмування знань створює передумови для досить швидкого
створення прототипу системи і подальшого її поступового розвитку. Якщо конструктор
системи і програміст справилися з своєю роботою належним чином, створену в результаті
програму нескладно модифікувати і функціонально розширити. Помилки і провали, знайдені
в процесі експлуатації в закладених в систему знаннях, можуть бути скоректовані і
заповнені, причому це не спричиняє за собою кардинальну переробку основного
програмного коду. Якщо ж в структурі системи не передбачена така "модульна" знань, їх
зміни можуть спричинити за собою повну реконструкцію системи.
– Більшість з тих, хто працювали з практичними програмами рішення проблем,
прийшла до висновку, що корисною може бути і програма, яка не вирішує проблему цілком
або не має рації абсолютно завжди. Експертна система може функціонувати і як "розумний
асистент", який пропонує декілька альтернативних варіантів рішення проблеми і відкидає
менш прийнятні.
В цей період розробники на практиці переконалися в тому, як складно створювати і
відладжувати системи, що базуються на правилах. У міру розширення бази знань виявилося,
що правила мають тенденцію взаємодіяти в межах системи самим несподіваним чином,
змагавшися за пріоритет при рішенні проблеми, що різні режими управління правилами
ефективні для проблем одного типу і не дають ефекту при рішенні проблем іншого типу. З
часом в цьому перестали бачити щось незвичайне, але спочатку свідоцтва такого ефекту
сприймалися як анекдоти.
Практичний досвід навчив нас, що найкращі результати при рішенні проблем різного
роду можна отримати, тільки використовуючи відмінні методики. Ці методики отримали
найменування "евристична класифікація", "ієрархічна перевірка гіпотез" або "пропозиція,
перевірка і виправлення" що, як правило, зводяться до різних стратегій управління
послідовністю застосування правил.

You might also like