Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
49
Добавлен:
05.03.2016
Размер:
1.28 Mб
Скачать

9.7 Зміст звіту по лабораторній роботі

Звіт по лабораторній роботі повинен містити:

1. Програми роботи з динамічними БД, використані при виконанні даної роботи, а також опис структури цих програм (згідно індивідуального завдання).

2. Вміст файлових БД, збережених на диску (згідно індивідуального завдання).

3. Результати виконання завдань 9.1, 9.2, 9.3, і 9.4.

Лабораторна робота №10 робота з складно структурованими базами даних

Мета роботи:

1. Знайомство з організацією складно структурованих БД в Турбо-Пролозі.

2. Закріплення знань по опису складних структур даних.

3. Отримання навиків складання Пролог-програм для роботи з БД.

4. Розробка інформаційно-запитальної системи на Пролозі.

10.1 Опис логічної моделі даних

Дана лабораторна робота розвиває навики представлення структурних об'єктів даних і управління ними. Вона показує, що Пролог є природною мовою запитів до бази даних і як з його допомогою переходити до формування простих баз знань.

Як уже наголошувалося раніше, одним із способів представлення БД на Пролозі може бути представлення БД у вигляді множини фактів. Наприклад, в базі даних про сім’ю, кожна сім’я може описуватися одним фактом. При цьому у складі будь-якої сім'я можна виділити три її компоненти: чоловік, дружина і діти. Виходячи з цього, в предметній області „сім’я” можуть бути виділені три об’єкти, які описуються відношенням

Сім’я(Чоловік, Дружина, Діти)

Оскільки кількість дітей в різних сім'ях може бути різною, то об’єкт Діти доцільно представити у вигляді списку, що складається з довільного числа елементів:

Діти = [Дитина1, Дитина2, . . ., ДитинаN]

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

Член_сім’ї(Ім'я, Прізвище, Дата_народження, Діяльність)

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

Дата(Число, Місяць, Рік)

Особливий інтерес представляє інформація про вид діяльності, яка може містити відомості про те: працює, вчиться або не працює який-небудь член сім’ї. Причому, в тому випадку, якщо людина працює, слід мати дані про місце його роботи, посаду і оклад. Якщо вчиться, то слід вказати місце навчання. Якщо не працює, то треба мати про це інформацію. Таким чином, вид діяльності для кожного з членів сім'ї може бути описаний одній з можливих структур:

Працює(Де, Ким, Оклад) або Навчається(Де) або Непрацює

Графічно інформацію про кожну сім’ю можна представити у вигляді структури, приведеної на рис.3.1.

Інформація про сім'ю, зображену на рис.3.1, є екземпляром відношення Сім’я і може бути занесена в базу даних у вигляді факту (твердження):

Рисунок 10.1 – Структурована інформація про сім'ю.

сім’я(член_сім’ї(Василь, Петренко, дата(2, січень, 1960), працює(ПП, директор, 1000)).

член_сім’ї( Марія, Петренко, дата(22, травень, 1964), непрацює),

[член_сім’ї(Іван, Петренко, дата(14, грудень, 1986), навчається(університет)),

член_сім’ї(Галина, Петренко, дата(1, серпень, 1990), вчиться(школа))]).

Тоді БД складатиметься з послідовності фактів, подібних цьому, і описуватиме всі сім'ї, що представляють інтерес для нашої програми.

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

Рисунок 10.2 – Опис об’єктів за їх структурними властивостями.

Так, в запитах до БД можна посилатися на всіх Петрових за допомогою терму

сім’я( член_сім’ї( _, Петренко, _, _ ), _, _ )

Символи підкреслення означають різні анонімні змінні, значення яких нас не турбують. Посилатися на всі сім'ї з трьома дітьми дозволяє терм:

сім’я( _, _, [_,_, _])

Щоб знайти всіх заміжніх жінок, що мають принаймні трьох дітей, можна поставити запитання:

сім'я( _, член_сім’ї(Ім’я, Прізвище,_,_),[_,_,_ |_]).

Основним моментом в цих прикладах є те, що вказувати об'єкти, що нас цікавлять, можна не тільки за їх вмістом, але за їхньою структурою.