Навігація
Головна
 
Головна arrow Інформатика arrow Бази даних
< Попередня   ЗМІСТ   Наступна >

Об'єктно-реляційна база даних

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

У гібридних об'єктно-реляційних базах даних об'єктно-орієнтований підхід використовується в створенні інтерфейсу користувача і алгоритму програми. У го же час система таблиць формується в рамках реляційної моделі даних.

У розширених об'єктно-реляційних базах даних об'єктно-орієнтований підхід використовується насамперед при побудові системи таблиць. Для цього розроблена модифікація мови SQL2, що отримала назву мови програмування SQL3.

Види структур

"Проміжною" моделлю даних між реляційними та об'єктно-орієнтованими базами даних є об'єктно-реляційна модель (ОРБД).

Її поява викликана двома причинами.

  • 1. Складністю побудови нової моделі даних "з листа". Зручніше це робити на основі наявних перевірених розробок.
  • 2. Облік наступності з широко використовуваними реляційними моделями, які не можна миттєво замінити на об'єктно орієнтовані БД.

Розрізняють, як зазначалося раніше, два різновиди ОРБД - гібридні і розширені.

  • 1. У гібридних ОРБД [1-3] інтерфейс користувача і алгоритм додатки виконані з урахуванням об'єктно-орієнтованого підходу, тоді як власне БД є реляційної. Прикладами можуть служити СУБД Paradox і InterBase в рамках програмного продукту Delphi. У якомусь сенсі гібридної можна вважати СУБД Access при використанні мови програмування Visual Basic for Application (VBA).
  • 2. У розширених (постреляціонних) ОРБД передбачається об'єктно-орієнтоване побудова власне бази даних шляхом використання відомих і введення нових типів даних, пов'язаних між собою. Цей зв'язок найчастіше здійснюється створенням методів за допомогою тригерів і збережених процедур. У розширеній об'єктно-реляційної моделі [1-3] допускається, на відміну від реляційної моделі даних, неатомарность даних у полі. У таких полях може розташовуватися інша таблиця або масив. До подібних СУБД відносяться Informix Universal Server, Oracle 8, UniSQL. У таких СУБД широко використовується мова SQL3.

Зауважимо, що постреляціонних [1] називають БД, в яких частково проведена денормализация даних, при цьому допускається нетомарность записів.

Розглянемо більш детально обидва різновиди.

Гібридні ОРБД

Цей різновид ОРБД розглянута на прикладі програмного продукту Delphi.

Додаток Delphi спочатку призначалася для автоматизації програмування (об'єктно-орієнтованого програмування), оскільки дозволяло різко підняти продуктивність праці програмістів за рахунок використання готових "кубиків-програм". Треба було лише належним чином з'єднати ці "кубики".

Надалі з'ясувалося, що застосований в Delphi об'єктно-орієнтований підхід може бути використаний при проектуванні баз даних. В рамках Delphi застосування об'єктно-орієнтованого проектування (див. Рис. 7.2) та програмування не викликає ускладнень в інтерфейсі користувача і алгоритмі програми. Покажемо це.

При роботі Delphi на екрані монітора з'являється "картинка" (рис. 8.1). Компоненти-класи розділені на групи, обумовлені відповідними закладками (сторінками).

Форма Delphii, сама будучи об'єктом, служить "колектором" для об'єктів. Як тільки компонент поміщається у форму (і отримує порядковий номер), він стає об'єктом.

Зауважимо, що компоненти TPanel, TBevel також є контейнерами (у формі), використовуваними для форматування, дизайну (поділу об'єктів та їх вирівнювання). Іншими "мініконтейнер" служать компоненти DataModule і TQuickRep (звіт).

Екран для роботи з додатком Delphi

Рис. 8.1. Екран для роботи з додатком Delphi

Для активного об'єкта у формі при побудові програм в "Інспекторові об'єктів" можуть використовуватися властивості (сторінка "властивості") і події (закладка "події"), зазвичай запускають програми-методи.

Всі компоненти розділені на наступні основні групи: Standard, Additional, Dialogs, Win32, System, VCL, Internet, DataAccess, DataControl, QReport, Decision Cube, ActiveX. У процесі автоматизованого програмування найчастіше використовують перші чотири сторінки.

З позицій власне баз знань і баз даних слід звернути особливу увагу на сторінки DataAccess і DataControI. До них примикають сторінки QReport, Decision Cube.

Склад компонентів деяких закладок DataAccess і DataControI показаний на рис 8.2. На рис. 8.3 та 8.4 показані властивості і події компонента ТТаblе.

Розглянемо опис програмних можливостей Delphi.

Додаток Delphi може працювати з трьома реляційними СУБД: dBase, Paradox - в локальному режимі (рис. 8.3); InterBase, який інсталюється окремо, - в режимі клієнт-сервер.

Зауважимо, що СУБД InterBase можливо використовувати в двох варіантах: локальному (сервер і клієнт на одному комп'ютері, використовується зазвичай в процесі відладки) і віддаленому (сервер і клієнт на різних комп'ютерах).

Склад деяких сторінок компонента Delphi

Рис. 8.2. Склад деяких сторінок компонента Delphi

Незалежно від використовуваної СУБД інтерфейс користувача і алгоритм додатки будується з використанням об'єктно-орієнтованого підходу. Підтвердимо стисло це твердження.

А. Мова спочатку піде про реалізацію власне бази даних.

А1. Спочатку задається ім'я БД. За допомогою цього імені здійснюється посилання на БД. Однак при цьому потрібно вказувати деколи довгий шлях (адреса) доступу, що незручно при багаторазовому зверненні до БД. У силу цього частіше використовується Алі-ас (синонім) БД - ім'я, що заміняє довгий шлях. Побудова аліаса ведеться за допомогою Delphi-утиліт BDE Administrator і SQL Explorer.

А2. Створення таблиць БД для СУБД Paradox (локальний режим) і InterBase (режим "клієнт-сервер"), так само як і заповнення БД даними, специфічно для кожного випадку. Неважко бачити, що при створенні власне бази даних не використовується об'єктно орієнтований підхід.

Б. Інтерфейс. Для побудови інтерфейсу немає чітких формальних правил. Однак деякі рекомендації можуть бути сформульовані.

Інтерфейс складається з урахуванням побажань користувача. Вид інтерфейсу залежить від інструментарію, що надається СУБД або програмним додатком.

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

Властивості компонента Table

Рис. 8.3. Властивості компонента Table

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

Б1. Форми Delphi.

Події компонента Table

Рис. 8.4. Події компонента Table

Б1.1. Форми Delphi часто називають вікнами. Вікно називають модальним (М), якщо доступ до попереднього відкритого вікна можливий тільки після закриття М-вікна. В іншому випадку вікно називають немодальним.

Хай є дві форми - Form1 і Form2, при цьому Form2 викликається з Form1.

У разі немодального вікна для форми Forml пишеться програмний модуль uniti

procedure TForml .Button 1 Click (Senser: Tobject);

begin

Form2.Show;

end;

Щоб можна було працювати з другим вікном (формою), у програмі uniti (розділ implementation) додається посилання на програмний модуль unit2 (форми Form2)

implementation

uses unit2;

Тепер з uniti можна запускати немодального вікно Form2.

Щоб зробити Form2 модальним вікном, слід встановити її властивість BorderStyle = bsDialog. При цьому треба внести зміни до uniti: замість Forml.Show написати Form2.ShowModal.

Б1.2. Замість "ручного" створення многооконного інтерфейсу можливо використовувати шаблони, в яких виділяються два варіанти:

  • • багатодокументний інтерфейс (Multiple Document Interface - М DI);
  • • однодокументний інтерфейс (Simple Document Interface - SDI).

При використанні MDI дочірні вікна не перевищують за розмірами батьківське вікно і можуть розташовуватися мозаїкою (Title) або каскадом (Cascade). У батьківському вікні міститься головне меню програми. MDI організовується так само, як модальне вікно, при цьому властивість FormStyle = fsMDIFomi для батьківського вікна і FormStyle = fsMDIChild - для дочірніх вікон. При створенні MDI можливе використання шаблону або побудова MD1 з "нуля".

В останньому випадку вибирається File / New головного меню Delphi і в діалоговому вікні New Items на сторінці New виділяють значок Application, вводячи по черзі батьківське і дочірні вікна.

SDI може містити також кілька вікон, при цьому дочірні вікна не обмежені розмірами батьківського вікна, званого іноді головним.

У програмний модуль unit головного вікна включаються посилання на всі дочірні unit-модулі:

implementation

uses SDIWdw;

У unit-програмах дочірніх вікон повинні бути посилання на unit- програму головного вікна:

imlementation

uses SDIMain;

Перед згортанням головного вікна спочатку згортаються дочірні вікна.

Краще використовувати шаблони SOI (MDI). Для цього звертаються до головного меню Delphi (File / New), входять в діалогове вікно New Items і на вкладці (сторінці) Projects вибирають необхідний шаблон: SDI (одна форма і один програмний модуль) або MDI (дві форми і три модуля).

Б2. Послідовність операцій роботи користувача може бути задана за допомогою меню або системи кнопок.

Б2.1. Формування меню досить просто і тому детально тут не розглядається. Впорядкування елементів меню (фактично - об'єктів), написання програм для них не відрізняються від "прив'язування" програм до таких елементів управління, як кнопка, поле зі списком і т. Д. Зауважимо лише, що є два різновиди меню - головне (TMainMenu сторінки Standard ) і спливаюче меню (TPopuMenu), яке викликається натисканням правої кнопки миші.

Б2.2. Іншою можливістю завдання послідовності операцій роботи користувача є використання системи кнопок (TButton, TBitBtn). У Delphi зазвичай використовують меню, а кнопки частіше відіграють допоміжну роль і використовуються, наприклад, для закриття форм, зміни доступу до елементів меню.

Властивостями меню, так само як і системи кнопок, найбільш часто використовуваними, є Enabled і Visible.

Б3. Гнучкість меню забезпечується використанням елементів управління.

Б3.1. Універсальні елементи управління розміщені на сторінках Standard, Additional, Dialog палітри компонент. До таких елементів відносяться TLabel, TEdit, TMemo, TComboBox. TButton, TBitBtn.

Специфічно використання TLabel. Властивість Caption застосовують для завдання заголовків таблиць БД, назв до таких компонентів, як TEdit, TMemo.

У свою чергу властивості Editl.Text і Memol.Line застосовують для завдання параметрів (одно- і багаторядкових), наприклад, в запитах. Мабуть найчастіше перераховані елементи управління використовують властивості Enabled, Visible.

Б3.2. Спеціалізованими елементами управління, пов'язаними безпосередньо з БД, є компоненти сторінки DataControl. До них слід віднести насамперед DBGrid, DBEEdit, DBNavigator, DBMemo.

Компоненти DBEdit дозволяють створити форму бази даних в стовпець. Такі форми часто застосовуються при роботі в СУБД Access для заповнення БД.

Б4. Повідомлення. Його можна зробити звичайним, використовуючи, наприклад,

MessageDlg (Query1 ['Name'], mtlnformation, [mbOk], О);

Однак переважніше застосувати схему виняткової ситуації try ... except

begin

try

Query1 ['Plan'] <Queryl ['Fakt']

except

ShowMessage ('Кількість вакансій менше числа прийнятих. Змініть правила або посади прийнятих');

Exit;

end;

Програма спрацює, якщо є виняткова ситуація. Інтерфейс користувача утворюється і кінцевим об'єктом описуваних далі "ланцюжків" доступу. Висвітлимо їх в алгоритмі додатки (АП), оскільки інші об'єкти "ланцюжків" беруть участь саме в АП.

В. Алгоритм програми. Програми додатків можуть бути написані на одному або поєднанні трьох мов: інтерфейсний SQL, вкладений SQL, Object Pascal (OP).

Bl. Можливі три "ланцюжка" доступу (рис. 8.5):

TTable - TDataSource - TDBGrid (частіше використовується в СУБД Paradox);

TQuery - TDataSource - TDBGrid (частіше застосовуються для СУБД InterBase);

TStoredProc - TDataSource - TDBGrid (іслользуют тільки для СУБД InterBase).

Об'єктно-орієнтований інтерфейс користувача (додаток Delphi)

Рис. 8.5. Об'єктно-орієнтований інтерфейс користувача (додаток Delphi):

BDE - Borland Database Engine (ядро Delphi)

Будемо їх називати далі "ланцюжками" Table, Query і StoredProc відповідно.

У цих "ланцюжках" компонент TDBGrid є візуальним, а решта - невізуальному. Компоненти TTable, TQuery, TStoredProc забезпечують безпосередній доступ до БД (по Аліаса), тоді як компонента TDataSource грає роль "размножителя": до нього можуть підключатися візуальні компоненти TDBNavigator, TDBText, TDBEdit, TDBMemo, TDBListBox, TDBComboBox та інші. Ці підключаються компоненти (якщо "заховати" компонент TDBGrid за допомогою властивості Visible або, краще, Enabled) можуть утворювати "аналог" форм Access (для заповнення БД). Поняття "форма" в сенсі Access в Delphi відсутня.

Зв'язки в "ланцюжках" встановлюються в статичному режимі (побудови доступу), або в динамічному при виконанні програми.

"Ланцюжок" StoredProc специфічна і використовується тільки в режимі клієнт-сервер, та й то рідко.

В.2. Поряд з перерахованими "ланцюжками" можуть використовуватися і "укорочені ланцюжка", складені з невізуальних об'єктів, контейнером для яких служить модуль (об'єктів) DataModule.

Такий контейнер організовується через меню Delphi (File / NewDataModule). Зв'язок між компонентами TTable - TDataSource і TQuery - TDataSource встановлюється так само, як це робиться у формі при використанні її в якості контейнера для розглянутих раніше "ланцюжків".

DataModule зберігається під яким-небудь ім'ям, і для нього створюється програмний модуль unit, ім'я якого додається в тексти програмних модулів інших форм програми (File / Use Unit). При посиланнях на такий модуль (об'єктів) слід спочатку вказати його ім'я, наприклад DataModulel.DataSourcel.

До цих пір мова йшла про доступ до даних без їх зміни. Однак при роботі з БД мають місце операції оновлення (вставити, змінити, знищити). Вони можуть виконуватися вручну або автоматично (при виконанні програм).

У першому випадку це має місце при створенні БД (заповненні БД даними). Оновлення може здійснюватися безпосередньо в таблицях або через своєрідні форми, складені з компонент TDBEdit. Такі оновлення не викликають утруднень.

В3. Вкладений SQL використовується тільки в режимі клієнт-сервер.

В4. Інтерфейсний SQL використовується в локальному режимі і режимі клієнт-сервер.

Зауважимо, що інтерфейсний мова SQL досить гнучкий при роботі з БД, проте в ньому немає поняття циклів і переходів. Крім того, у властивості SQL компоненти TQuery (чи властивості будь компоненти, наприклад Memo.Text, з якої запозичується SQL-oпeратор) може бути записаний і запущений тільки один оператор, після виконання якого його слід видалити і ввести новий. Таким чином, для виконання декількох операторів їх слід вводити по одному, для чого потрібно непросте програмне рішення, або "вбудовувати" в оператори Object Pascal.

У силу сказаного сфера дії інтерфейсного мови SQL обмежена. Його оператори в чистому вигляді найчастіше використовують в одиничних запитах як в локальному режимі, так і в режимі клієнт-сервер.

У локальному режимі частіше використовують мову Object Pascal, складовими операторами якого можуть бути SQL-оператори.

В5. Основну роль у локальному режимі грає мова програмування Object Pascal. У режимі клієнт-сервер він, спільно з інтерфейсним мовою SQL, використовується в клієнтській частині.

Слід зазначити, що в Object Pascal існують два різновиди програм:

  • 1) "прив'язані" безпосередньо до подій;
  • 2) не пов'язані безпосередньо з подією (зазвичай "прив'язані до форми") і викликаються з інших програм.

Побудова перших програм широко описано в літературі, тоді як про других практично не згадується. Останні пишуться повністю вручну.

За допомогою реляційних БД і даного різновиду ОРБД намагалися вирішити завдання створення бази даних для зберігання графічних даних і даних з великим обсягом полів. При цьому самі дані зберігалися у файлах, а в базі даних були лише посилання на ці файли. Однак такий шлях виявився непродуктивним через виникаючих численних проблем.

Таким чином, в гібридній ОРБД інтерфейс користувача і • алгоритм додатки побудовані з використанням об'єктно-орієнтованого підходу, а власне база даних - реляційна.

 
Якщо Ви помітили помилку в тексті позначте слово та натисніть Shift + Enter
< Попередня   ЗМІСТ   Наступна >
 
Дисципліни
Агропромисловість
Аудит та Бухоблік
Банківська справа
БЖД
Географія
Документознавство
Екологія
Економіка
Етика та Естетика
Журналістика
Інвестування
Інформатика
Історія
Культурологія
Література
Логіка
Логістика
Маркетинг
Медицина
Нерухомість
Менеджмент
Педагогіка
Політологія
Політекономія
Право
Природознавство
Психологія
Релігієзнавство
Риторика
Соціологія
Статистика
Техніка
Страхова справа
Товарознавство
Туризм
Філософія
Фінанси
Пошук