Page 48 - 4800
P. 48

ЛАБОРАТОРНА РОБОТА № 6
                                       ДИНАМІЧНІ БАЗИ ДАНИХ

                   Мета роботи:  Ознайомитися  з призначенням і  використанням динамічних баз
            даних. Вивчити правила опису і організації динамічних БД в Пролозі.

                   6.1 Вступ

                   У  Пролозі  реляційна  база  даних  представляється  у  вигляді  набору  фактів,  що
            дозволяє використовувати Пролог, як могутню мову запитів для баз даних. Вбудований
            в Пролог алгоритм уніфікації автоматично вибирає факти з правильними значеннями
            для  відомих  параметрів  і  уніфікує  значення  для  будь-яких  невідомих  параметрів.
            Алгоритм  пошуку  з  поверненням  дозволяє  знаходити  всі  рішення  для  поставлених
            запитів.
                   У  попередніх  роботах  розглядалися  статичні  бази  даних,  де  факти  були
            частиною  коду  програми  і  не  могли  бути  змінені  під  час  роботи  з  програмою.
            Принциповою відмінністю динамічних баз даних є те, що під час роботи з програмою, з
            них  можна  видаляти  будь-які  твердження,  а  також  додавати  нові.  Інша  важлива
            особливість динамічної бази полягає у тому, що вона може бути збережена на диск та
            зчитана з диска в оперативну пам’ять.
                   Факти,  що  належать  динамічним  базам  даних,  обробляються  відмінним  від
            інших предикатів чином з метою прискорення роботи з базами даних великого об’єму.
            Предикати динамічної БД відрізняються від інших тим, що вони описуються в окремій
            секції програми – database. Маніпулювання фактами в динамічній БД здійснюється з
            використанням трьох стандартних предикатів:
                   – asserta(Term) – додає нові факти в початок динамічної бази даних.
                   – assertz(Term) – додає нові факти в кінець динамічної бази даних,
                   – retract(Term) – видаляє факт з динамічної бази даних.
                   Для  модифікації  якого-небудь  факту  в  динамічнй  БД  необхідно  спочатку
            видалити  його  з  неї,  а  потім  додати  в  зміненому  вигляді.  Для  забезпення  роботи  з
            даними  динамічної  БД,  що  знаходяться  на  жорстоку  диску,  використовуються  такі
            стандартні предикати:
                   –  save(„file_name”)  –  збереження  динамічної  БД  в  текстовому  файлі  з  ім'ям
            file_name.
                   – consult(„file_name”) – завантаження динамічної БД з текстового файлу з ім'ям
            file_name.
                   Слід  зауважити,  що  іноді  частину  інформації  бази  даних  доцільно зберігати  у
            вигляді тверджень статичної БД і заносити ці дані до динамічної БД відразу ж після
            активізації програми. При цьому предикати статичної БД повинні мати інше ім'я, але ту
            ж  саму  структуру  даних,  що  і  предикати  динамічної  БД.  Причому  опис  предикатів
            динамічної  БД  здійснюється  в  секції  database,  а  предикатів  статичної  БД  –  в  секції
            predicates.

                    6.2 Прості прийоми роботи з динамічними БД

                   У секції database декларуються предикати, що описують динамічну базу даних.
            Опис предикатів динамічної БД повинен передувати опису всіх звичайних предикатів.
                   У  наведеній  нижче  програмі  6_1  розглянуто  приклад  використання  явної
            динамічної бази даних, структура якої відповідає відношенню
                   Особа(Ім’я, Вік, Стать).
                   На  основі  явної  динамічної  БД,  яка  допускає  модифікацію  під  час  роботи,  в
            програмі за допомогою правил визначені ще три неявні бази даних:
                   Чоловік (Ім’я, Вік), Жінка (Ім’я, Вік), Дитина (Ім’я, Вік, Стать)
                   Предикат  реrson()  можна  використовувати  так  само,  як  і  будь-які  інші
            предикати.  Відмінність  лише  у  тому,  що  для  нього,  під  час  виконання  програми,
            можливе  додавання  і  видалення  фактів.  Факти,  що  додаються  таким  чином,
            зберігаються  в  оперативній  пам’яті.  На  основі  програми  6_1,  розглянемо  прості
            прийоми роботи з динамічними БД.
                   /* Програма 6_1 */





                                                         48
   43   44   45   46   47   48   49   50   51   52   53