ЛК. 17 – Бази даних та знань.
Перелік питань 1. Визначання поняття бази даних та її 2. 3. 4. 5. характеристика. Класифікація баз даних. Етапи проектування баз даних. Визначення бази знань. Використання баз даних і баз знань у мові Prolog.
1. Визначання поняття бази даних та її характеристика. База даних (БД) — впорядкований набір логічно взаємопов'язаних даних, що використовуються спільно, та призначені для задоволення інформаційних потреб користувачів. У технічному розумінні включно й система керування БД. Головним завданням БД є гарантоване збереження значних обсягів інформації та надання доступу до неї користувачеві або ж прикладній програмі. Таким чином БД складається з двох частин: збереженої інформації та системи управління нею. З метою забезпечення ефективності доступу записи даних організовують як множину фактів (елемент даних).
Характеристика БД Часто зустрічається характеристика БД на основі певних параметрів або необхідних вимог, наприклад: q значна кількість даних; q незалежність даних; q відкритий доступ до даних; q підтримка транзакцій з гарантією відповідних властивостей; q гарантована відсутність збоїв; q одночасна робота з багатьма користувачами. З подальшим розвитком БД змінюються й ці вимоги та додаються нові, тому одностайності щодо повноти цієї характеристики немає.
2. Класифікація БД Структуровані БД використовують структури даних, тобто структурований опис типу фактів за допомогою схеми даних, відомішої як модель даних. Модель даних описує об'єкти та взаємовідносини між ними. Існує декілька моделей (чи типів) баз даних, основні: плоска, ієрархічна, мережна та реляційна. Приблизно з 2000 року більше половини БД використовують реляційну модель. До неструктурованих БД відносяться повнотекстові бази даних, які містять неструктуровані тексти статей чи книг у формі, що дозволяє здійснювати швидкий пошук (як наприклад вікіпедія).
Класифікація БД за моделлю даних: qІєрархічні; q. Мережеві; q. Реляційні; q. Об'єктно-орієнтовані; q. Об'єктно-реляційні.
Класифікація БД Ієрархічні бази даних можуть бути представлені як дерево, що складається з об'єктів різних рівнів. Верхній рівень займає один об'єкт, другий - об'єкти другого рівня і т. д. Мережеві бази даних подібні до ієрархічних, за винятком того, що в них є покажчики в обох напрямках, які з'єднують споріднену інформацію. Реляційна модель орієнтована на організацію даних у вигляді двовимірних таблиць. Кожна реляційна таблиця являє собою двовимірний масив і має наступні властивості: q кожен елемент таблиці - один елемент даних; q всі осередки в стовпчику таблиці однорідні, тобто всі елементи в стовпчику мають однаковий тип (числовий, символьний тощо); q кожен стовпчик має унікальне ім'я; q однакові рядки в таблиці відсутні; q порядок проходження рядків і стовпчиків може бути довільним.
Класифікація БД Об'єктна СУБД ідеально підходить для інтерпретації складних даних, на відміну від реляційних СУБД, де додавання нового типу даних досягається ціною втрати продуктивності або за рахунок різкого збільшення термінів і вартості розробки додатків. Об'єктна база, на відміну від реляційної, не вимагає модифікації ядра при додаванні нового типу даних. Новий клас і його екземпляри просто надходять у зовнішні структури бази даних. Система управління ними залишається без змін. Об'єктно-орієнтована база даних (ООБД) - база даних, в якій дані оформлені у вигляді моделей об'єктів, що включають прикладні програми, які управляються зовнішніми подіями. Результатом поєднання можливостей (особливостей) баз даних і можливостей об'єктно-орієнтованих мов програмування є об'єктно-орієнтовані системи управління базами даних (ООСУБД). ООСУБД дозволяють працювати з об'єктами баз даних також, як з об'єктами у програмуванні в об'єктно-орієнтованих мовах програмування. ООСУБД розширює мови програмування, прозоро вводячи довготривалі дані, управління паралелізмом, відновлення даних, асоційовані запити й інші можливості.
Класифікація БД за технологією фізичного зберігання: q БД у вторинній пам'яті (традиційні); q БД в оперативній пам'яті (in-memory databases); q БД у третинній пам'яті (tertiary databases). Класифікація БД за вмістом: q географічні; q історичні; q наукові; q мультимедійні.
Класифікація БД за ступенем розподіленості: q централізовані (зосереджені); q розподілені. Окреме місце в теорії та практиці займають: q просторові (англ. spatial) БД; q тимчасові, або темпоральні (temporal) БД; q просторово-часові (spatial-temporal) БД.
3. Етапи проектування БД Проектування баз даних - процес створення схеми бази даних і визначення необхідних обмежень цілісності. Основні завдання: q Забезпечення зберігання в БД всієї необхідної інформації; q Забезпечення можливості отримання даних по всім необхідним запитам; q Скорочення надмірності та дублювання даних; q Забезпечення цілісності бази даних.
Основні етапи проектування баз даних: Концептуальне (інфологічне) проектування Логічне (даталогічне) проектування Фізичне проектування
Концептуальне (інфологічне) проектування - побудова семантичної моделі предметної області, тобто інформаційної моделі найбільш високого рівня абстракції. Така модель створюється без орієнтації на якусь конкретну СУБД і модель даних. Терміни «семантична модель» , «концептуальна модель» і «інфологічна модель» є синонімами. Крім того, в цьому контексті рівноправно можуть використовуватися слова «модель бази даних» і «модель предметної області» оскільки така модель є як спосіб реальності, так і спосіб проектованої бази даних для цієї реальності.
Концептуальне (інфологічне) проектування Конкретний вид і зміст концептуальної моделі бази даних визначається вибраним для цього формальним апаратом. Зазвичай використовуються графічні нотації, подібні ER-діаграм. Найчастіше концептуальна модель бази даних включає в себе: q опис інформаційних об'єктів, або понять предметної області і зв'язків між ними; q опис обмежень цілісності, тобто вимог до допустимих значень даних і до зв'язків між ними.
Логічне (даталогічне) проектування - створення схеми бази даних на основі конкретної моделі даних, наприклад, реляційної моделі даних. Для реляційної моделі даних даталогічна модель - набір схем відносин, зазвичай із зазначенням первинних ключів, а також «зв'язків» між відносинами, що представляють собою зовнішні ключі. Перетворення концептуальної моделі в логічну модель, як правило, здійснюється за формальними правилами. Цей етап може бути в значній мірі автоматизований. На етапі логічного проектування враховується специфіка конкретної моделі даних, але може не враховуватися специфіка конкретної СУБД.
Фізичне проектування - створення схеми бази даних для конкретної СУБД. Специфіка конкретної СУБД може включати в себе обмеження на іменування об'єктів бази даних, обмеження на підтримувані типи даних і т. п. Крім того, специфіка конкретної СУБД при фізичному проектуванні включає вибір рішень, пов'язаних з фізичним середовищем зберігання даних (вибір методів управління дискової пам'яттю, поділ БД по файлах і пристроям, методів доступу до даних), створення індексів і т. д.
4. Визначення бази знань Ба за зна нь, БЗ — це особливого роду база даних, розроблена для управління знаннями (метаданими), тобто збором, зберіганням, пошуком і видачею знань. Розділ штучного інтелекту, що вивчає бази даних і методи роботи із знаннями, називається інженерією знань. База знань — це сукупність відомостей (про реальні об'єкти, процес, події або явища), що відносяться до певної теми або задачі, організована так, щоб забезпечити зручне представлення цієї сукупності як в цілому так і будь-якої її частини. Це означає, що система управління базою знань (саме знань, а не даних) повинна забезпечити уявлення і обробку моделі, зіставною за своєю складністю з моделлю, що використовується свідомістю людини. Найважливіший параметр БЗ — якість знань, що накопичені в ній. Кращі БЗ містять релевантну і свіжу інформацію, мають довершені системи пошуку інформації і ретельно пророблену структуру і формат знань.
Класифікація баз знань Залежно від рівня складності систем, в яких застосовуються бази знань, розрізняють: q БЗ всесвітнього масштабу, наприклад: Інтернет; q БЗ національні — наприклад, Вікіпедія; q БЗ галузеві — наприклад, автомобільної енциклопедії; q БЗ організацій; q БЗ експертних систем; q БЗ спеціалістів. Тип інформації і її місцезнаходження в базі визначаються системою підтримки бази знань. Гарна підтримка — гарантія високої продуктивності БЗ.
5. Використання БД і БЗ у мові Prolog Розглянемо наступну задачу. Потрібно реалізувати експертну систему, яка б визначала тварину, яку мав на увазі користувач із семи зазначених. Експертна система знайде тварину за допомогою опитування користувача. Цей приклад демонструє бектрекінг для перегляду бази даних і показує ефективне використання предикату not. Типовим діалогом користувача з експертною системою може бути наступний: goal: run. Has it hair? yes does it eat meat? yes has it a fawn color? yes has it dark spots? yes Your animal may be a (an) cheetah!
Використання БД і БЗ у мові Prolog Для програмування діалогу потрібні два кроки. Перший крок полягає у наповненні бази системи знаннями, а результуючий - в побудові виведення відповіді. database xpositive(symbol, symbol) xnegative(symbol, symbol) predicates animal_is(symbol) it_is(symbol) ask(symbol, symbol) remember(symbol, symbol) positive(symbol, symbol) negative(symbol, symbol) clear_facts run clauses
Використання БД і БЗ у мові Prolog animal_is(cheetah) : - it_is(mammal), it_is(carnivore), positive(has, tawny_color), positive(has, dark_spots). animal_is(tiger) : - it_is(mammal), it_is(carnivore), positive(has, tawny_color), positive(has, black_stripes). animal_is(giraffe) : - it_is(ungulate), positive(has, long_neck), positive(has, long_legs), positive(has, dark_spots). animal_is(zebra) : - it_is(ungulate), positive(has, black_stripes). animal_is(ostrich) : - it_is(bird), negative(does, fly), positive(has, long_neck), positive(has, long_legs), positive(has, black_and_white_color). animal_is(penguin) : - it_is(bird), negative(does, fly), positive(does, swim), positive(has, black_and_white_color). animal_is(albatross) : it_is(bird), positive(does, fly_well).
Використання БД і БЗ у мові Prolog it_is(mammal) : - positive(has, hair). it_is(mammal) : - positive(does, give_milk). it_is(bird) : - positive(has, feathers). it_is(bird) : - positive(does, fly), positive(does, lay_eggs). it_is(carnivore) : - positive(does, eat_meat). it_is(carnivore) : - positive(has, pointed_teeth), positive(has, claws), positive(has, forward_eyes). it_is(ungulate) : - it_is(mammal), positive(has, hooves). it_is(ungulate) : - it_is(mammal), positive(does, chew_cud). positive(X, Y) : - xpositive(X, Y), !. positive(X, Y) : - not(xnegative(X, Y)), ask(X, Y, yes).
Використання БД і БЗ у мові Prolog negative(X, Y) : - xnegative(X, Y), !. negative(X, Y) : - not(xpositive(X, Y)), ask(X, Y, no). ask(X, Y, yes) : - !, write(X, " it ", Y, 'n'), readln(Reply), frontchar(Reply, 'y', _), remember(X, Y, yes). ask(X, Y, no) : - !, write(X, " it ", Y, 'n'), readln(Reply), frontchar(Reply, 'n', _), remember(X, Y, no). remember(X, Y, yes) : - assertz(xpositive(X, Y)). remember(X, Y, no) : - assertz(xnegative(X, Y)). clear_facts : - write("nn. Please press the space bar to exitn"), retractall(_, dbasedom), readchar(_). run : - animal_is(X), !, write("n. Your animal may be a (an) ", X), nl, clear_facts. run : - write("n. Unable to determine what"), write("your animal is. nn"), clear_facts.
Використання БД і БЗ у мові Prolog Кожна тварина описується деяким числом характерних атрибутів, які вона має або ж не має. Вони задаються в предикатах animal_is і it_is. Питання, на які користувачу потрібно відповісти, реалізуються за допомогою використання предикатів рositive (X, Y) і negative (X, Y). Але система, між іншим, може задати і питання типу : Does it have hair? Отримавши відповідь, система приєднує її до попередньої інформації для подальшого використання. Для простоти цей приклад програми буде розглядати тільки стверджувальні та заперечувальні відповіді. Тому вона використовує базу даних, яка містить тільки два предикати: ъ database xpositive(symbol, symbol) xnegative(symbol, symbol)
Використання БД і БЗ у мові Prolog Наприклад, твердження , що тварина не має волосся тоді може бути задане таким чином: xnegative(has, hair). Але, попередньо, перед тим , як задавати запитання, система перевіряє чи відповідь не була відома раніше: positive(X, Y): xpositive(X, Y), !. positive(X, Y): - not (xnegative(X, Y)), ask(X, Y, yes). negative(X, Y): xnegative(X, Y), !. negative(X, Y): - not (xpositive(X, Y)), ask(X, Y, no).
Використання БД і БЗ у мові Prolog Відмітимо, що останні правила, які використовуються тут при визначенні предикатів positive і negative забезпечують реалізацію тієї ситуації, щоб спростування не трапилось раніше, ніж пройшло опитування користувача. Предикат ask задає питання і організовує обробку відповіді. Якщо відповідь починається з букви Y, тоді система приймає відповідь Yes, а, якщо відповідь починається з N, тоді в якості відповіді приймається - No.
Використання БД і БЗ у мові Prolog ask(X, Y, yes): - !, write(X, "it", Y, 'n'), readln(Reply), frontchar(Reply, 'y', _), remember(X, Y, yes). ask(X, Y, no): - !, write(X, "it", Y, 'n'), readln(Reply), frontchar(Reply, 'n', _), remember(X, Y, no). remember(X, Y, yes): - assertr(xpositive(X, Y)). remember(X, Y, no) : - assertr(xnegative(X, Y)).
Використання БД і БЗ у мові Prolog При роботі з базами даних потрібно також пам`ятати, що під час поповнення бази новими фактами, старі факти повинні зберігатись, щоб не стертись новими. Цю функцію в програмі виконує вмонтований предикат retractall, який використовується при визначенні предикату clearfacts. clear_facts: write("nn Please press the space bar to exitn"), retractall(_, dbasedom), readchar(_).
Використання БД і БЗ у мові Prolog Якщо ви попередньо наберете програму і наповните базу, тоді для запуску програми ви можете використати предикат run: animal_is(X), !, write("n. Your animal may be a(an)", X), nl, clear_facts. run: - write("n. Unable to determine what"), write("your animal is. nn"), clear_facts.