ЗАСОБИ ПІДТРИМКИ ПРОЦЕСІВ НАДБАННЯ ЗНАНЬ І УМІНЬ ПРИ ОПАНУВАННІ РЕЛЯЦІЙНОЇ АЛГЕБРИ ТА РЕЛЯЦІЙНОГО ЧИСЛЕННЯ
Аннотація
У статті розглянуті питання ренінжинірингу операцій реляційної алгебри в в код мовою SQL з метою полегшення процесу засвоєння реляційної алгебри студентами комп’ютерних напрямів освіти. Також розглянуті основні етапи створення програмного продукту та приклади її роботи.
Постановка проблеми та її зв’язок з навчально-практичними задачами. Реляційна модель даних є основною в сучасних СУБД. Мови представлення структурних елементів моделі та маніпулювання ними є невід’ємною складовою будь-якої моделі даних. В реляційній моделі даних (РМД) мовами маніпулювання даними є, зокрема, мова реляційної алгебри (РА) і мова реляційного числення (РЧ) [1]. Вони, як і структура РМД, побудовані на формальному математичному базисі і послужили теоретичним підґрунтям для створення мови SQL. Але, на відміну від SQL, вони не підтримуються сучасними СУБД, тому засвоєння матеріалу з мов РА і РЧ не є активним, тобто вони вивчаються, в основному, на лекційних заняттях. Під час виконання лабораторних робіт студентам, як правило, пропонується реалізація операцій РА засобами мови SQL [2,3]. Це, призводить до того, що знижуються рівень засвоєння теоретичної основи реляційних баз даних. Оскільки студенти з ком’ютерних напрямів освіти мають відчувати внутрішні механізми операцій в РМД, тому створення засобів та інтелектуальних інформаційних технологій підтримки активного засвоення реляційної алгебри та реляційного числення студентами комп’ютерних напрямів освіти є актуальною.
Огляд публікацій та аналіз невирішених питань. Одним із підходів до розв’язання наведеної задачі є створення інтерпретаторів мов реляційної алгебри і реляційного числення для виконання лабораторних робіт з організації баз даних. В [1] наведена інформація, що у перших реляційних СУБД мовами маніпулювання як раз і були мові РА або РЧ, але з часом „стандартною” стала мова SQL, за допомогою якої виконуються лабораторні роботи з опанування РА і РЧ [2,3], знання яких необхідні при оптимізації схем виконання запитів, реплікацій, тощо. в розподілени. Основна ідея проекту полягає в доповненні реляційної СУБД такими засобами маніпулювання даними, як мови реляційної алгебри і реляційного числення із можливістю взаємного перетворення, а також перетворенням у скрипти мови SQL та навпаки. Основні проблеми, що потребують вирішення в процесі роботи, пов’язані із забезпеченням взаємодії між різними мовами маніпулювання даними, тому що інтерпретатори мов РА і РЧ будуть реалізуються програмними модулями, а SQL є „внутрішньою” мовою СУБД. Оскільки у більшості сучасних СКБД діагностика помилок в SQL - програмах не розвинута, то потрібно буде розробити розвинуті засоби виявлення помилок граматичного розбору як для РА і РЧ, так і для SQL-коду.
Метою даного дослідження є підвищення ефективності навчального процесу при викладанні реляційної моделі даних та реляційної алгебри у дисциплінах,пов’язаних з базами даних. Для досягнення означеной мети необхідно розв’язати такі задачи:
Скласти формальну граматику реляційної алгебри.
Розробити загальну схему реалізації інтерпретатора РА.
Визначити лексеми мови РА та розробити або обрати із існуючих лексичний аналізатор.
розробити або обрати із існуючих синтаксичний аналізаторзпрограмувати додаткові програмні засоби, що підвищують ефектиность роботи інтерпретатора.
Розробити методичні матеріали щодо проведення лабораторних робіт з тематики, яка стосується реляційної алгебри.
Результати досліджень. Реляційна алгебра Кодда [1], для вивчення якої було розроблено програмний продукт, складається з набору операторів, що використовують відношення як операнди і повертають відношення як результат. Кодд визначив так звану "початкову" алгебру - набір з восьми операторів, що становлять дві групи, по чотири оператори в кожній:
Перша група – “Операції над множинами”: об'єднання, переріз, віднімання (різниця), декартовий добуток.
Друга група – “Спеціальні реляційні операції”: вибірка, проекція, з'єднання, ділення.
В основі операцій реляційної алгебри лежить класична теорія множин, але відповідні операції реляційної алгебри мають деякі особливості.
Почнемо з операції об'єднання (те ж саме стосується перерізу й різниці). Зміст операції об'єднання в реляційній алгебрі в цілому залишається теоретико-множинним, але відношення мають бути сумісними для об’єднання, тобто мати однакові заголовки.
Для взяття добутку відношень, вони повинні бути сумісні по взяттю розширеного прямого добутку. Двоє відносин сумісні по взяттю прямого добутку в тім і тільки в тому випадку, якщо множини імен атрибутів цих відносин не перетинаються. Ці особливості були враховані при розробці програмного продукту, оскільки їх врахування є необхідним елементом правильності дій, що виконуються над відношеннями [1].
Лексичний та синтаксичний аналіз, які є обов’язковими при роботі з природними мовами і мовами програмування, вимагають формалізації мови. Формальним засобом представлення реляційної алгебри форми Бекуса-Наура, які запозичені із [1]:
relation ::= identification
attribute ::= identification
expression ::= monadic-expression|dyadic-expression
monadic-expression ::= renaming|restriction| projection | extension
renaming ::= term RENAME attribute AS attribute | term [ rename-commalist ]
term ::= relation | ( expression )
restriction ::= term WHERE condition
extension::= EXTEND term ADD scalar-expression AS attribute|EXTEND term[extension-commalist ]
Як відомо процес інтерпритації та компіляції складається з трьох фаз: лексичного аналізу, синтаксичного та семантичного аналізу. Отже, наступним этапом розробки програмного комплексу було стоврення засобів лексичного і синтаксичного аналізу.
Лексичний аналіз. Основна задача лексичного аналізу - розбити вхідний текст, що складається з послідовності одиночних символів, на послідовність слів, чи лексем, тобто виділити ці слова з безперервної послідовності символів. Усі символи вхідної послідовності з цього погляду розділяються на символи, що належать яким-небудь лексемам, і символи, що поділюють лексеми (роздільники) [3,4]
Для автоматизації розробки лексичного аналізатору було використано одну з найбільш розповсюджених систем – LEX [5], вхідною мовою якого є регулярні вирази.
Лексичний аналізатор, згенерований LEX, при виклику його синтаксичним аналізатором посимвольно читає