- •Робота з продукційними правилами та їх організація у базі даних
- •1 Мета роботи
- •2 Методи опису продукційних правил
- •3 Підсистема виведення, способи логічного виведення
- •4 Компонент виведення
- •5 Реалізація продукційних правил в скбд Microsoft Access
- •5.1 Реляційна алгебра
- •6 Приклад опису предметної області “Студент”
- •9.2 Вимоги до оформлення звіту:
- •10 Література
- •Робота з продукційними правилами та їх організація у базі даних
- •7 Контрольні запитання
5.1 Реляційна алгебра
10
РА визначається з допомогою декількох операторів, які застосовуються до відношень і в результаті дають інші відношення. Цей формальний апарат орієнтований на множини, оскільки кожний оператор застосовується до всього відношення в цілому. Порядок. В якому операції реляційної алгебри вказані у запитах, визначає також порядок застосування цих операцій у БД. 5.2 Реляційне числення
Запити впорядковуються з допомогою формул логіки предикатів першого порядку над кортежами баз даних. Результат запиту—множина кортежів, які задовольняють формулі. Цей апарат орієнтований на покортежну обробку, оскільки кожна формула визначає властивості, які характеризують кортеж результату. РЧ непроцедурна мова запитів, оскільки запит не пропонує методу обчислення результату запиту.
П'ять основних операцій визначають реляційну алгебру: об'єднання, симетрична різниця, декартовий перетин, проекція і вибірка. Покажемо, як кожна з них виражається в логічній програмі.
Операція об'єднання будує одне n - арне відношення з двох n - арних відношень r і s. Нове відношення, яке позначимо r_union_s, є об'єднанням r і s. Це відношення безпосередньо задається логічною програмою, що складається з двох правил:
r_union_s(X1, ..., Xn) r(X1, ..., Xn). r_union_s(X1, ..., Xn) s(X1, ..., Xn).
Визначення симетричної різниці використовує поняття заперечення. Введемо предикат not. Інтуїтивно ясно, що ціль not G істинна щодо Р, якщо G не є логічним наслідком Р у випадку основних фактів, проте, визначення коректно. Такий випадок і має місце при розгляді реляційних баз даних.
Визначається n - арне відношення r_diff_s для n - арних відношень r і s: r_diff_s(X1,... ,Xn) ¬ r(X1,... ,Xn), not s(X1,... ,Xn).
r_diff_s(X1,... ,Xn) ¬ s(X1,... ,Xn), not r(X1,... ,Xn).
Декартовий перетин може бути визначено одним правилом. Якщо r – m -apне відношення, а s - n - арне, то (m + n) - арне відношення r_x_s визначається так:
r_x_s(X1,... ,Xm+n) ¬ r(X1,... ,Xm),s(Xm+1,…,Xm+n)...
Проекція полягає в побудові відношення, що використовує лише деякі аргументи вихідного відношення. Визначення в будь-якому конкретному випадку не викликає складностей. Наприклад, проекція r13 лишає перший і третій аргументи трьохарного відношення, тобто
r13(Х1,Х3) ¬ р(Х1,Х2,X3).
11
Так само просто описується будь-який конкретний випадок вибірки. Розглянемо відношення, що описує набори, у яких треті елементи більші других, і відношення, у якому перший елемент є Сміт або Джонс. У обох випадках для ілюстрації використовується трьохарне відношення r. Перший приклад демонструє побудову відношення г1:
r1(Х1,Х2,Х3) ¬ r(Х1,Х2,Х3),Х2 > Х2.
Другий приклад демонструє побудову відношення r2, що використовує диз’юнктивне відношення сміт_або_джонс:
r2(X1,X2,X3) ¬ r(X1,X2,X3), сміт_або_джонс(Х1). сміт_або _джонс( сміт).
смит_або_ джонс(джонс).
Деякі похідні операції реляційної алгебри безпосередньо виражаються в конструкціях логічного програмування. Розглянемо дві з них - перетин й об'єднання.
Якщо r і s - деякі і-арні відношення, то їх перетин r_meet_s теж є і-арним відношенням, що задається єдиним правилом:
r_meet_s(X1,... ,Xn) ¬ (X1,... ,Xn),s(X1,... ,Xn).
Прямому об'єднанню точно відповідає кон’юнктивне питання з загальними змінними.
Реляційна алгебра не є “дружньою” мовою. Для взаємодії з базою даних розроблена мова запитів, орієнтована на користувача.
Покажемо найбільш типовий оператор блок запиту мови SQL для запиту до БД:
SELECT < список атрибутів > FROM < відношення > WHERE < предикат >
Блок запиту має просту інтерпретацію у реляційній алгебрі: він еквівалентний виконанню операції вибірки з предикатом з речення WHERE над декартовим добутком відношень , вказаних у реченні FROM та подальшою проекцією результату з речення SELECT.
Очевидно, що якщо предикат з речення WHERE включає умову з’єднання, декартовий добуток заміняється з’єднанням; декартовий добуток не вимагається, якщо речення FROM містить одне відношення.
Потужність мови SQL досягається можливістю вкладення блоків один в один у предикат речення WHERE:
SELECT < список атрибутів > FROM < відношення > WHERE < атрибут > IN
12
SELECT < список атрибутів > FROM < відношення > WHERE < предикат >
Погляд—відношення, яке не зберігається у БД, визначається з допомогою деякого виразу мови запитів. Такий вираз може посилатися на відношення БД або інші погляди. Якщо погляд визначений, то він може бути використаний для пошуку даних аналогічно до звичайного відношення БД.
СКБД оперує з композицією запитів, об’єднуючи користувацький запит з визначенням погляду та отримуючи новий вираз запиту, який оперує лише з відношеннями БД.
