Мова опису інформаційних моделей EXPRESS

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Федеральне агентство з освіти
Сибірська державна автомобільно-дорожня академія
(СібАДІ)
Кафедра КК і С
Курсова робота
на тему: Мова опису інформаційних моделей (EXPRESS)
з дисципліни «CALS-технології»
Виконала: ст-ка гр.41С
Перевірив:
Омськ - 2009

Зміст
Введення
1 Переваги CALS
2 CALS в Росії
3 Держава захищає CALS-технологій
4 Проблеми стандартизації опису продукції, технології та бізнесу
5 Об'єктно-орієнтоване моделювання на EXPRESS
6 Загальна систематизація підходів
6.1 Класифікація патернів відображення
6.2 Відображення інформаційних схем
6.2.1 Схема-незалежна стратегія
6.2.2 Схема-залежна стратегія
6.3 Відображення спадкування класів
6.3.1 Паттерн OneInheritanceHierarchy-OneTable
6.3.2 Паттерн OneClass-OneTable
6.3.3 Паттерн OneInheritancePath-OneTable
6.3.4 Паттерн AllClasses-OneTable
6.3.5 Паттерн BLOB
6.4 Відображення атрибутів
6.4.1 Представлення простих типів
6.4.2 Відображення атрибутів простих типів
6.4.2.1 Паттерн Attribute-Column
6.4.2.2 Паттерн Attribute-Table
6.4.3 Відображення асоціацій
6.4.3.1 Паттерн ForeignKeyAssociation
6.4.3.2 Паттерн ClassAssociation
6.4.3.3 Паттерн GenericAssociation
6.4.4 Відображення селективних типів
6.4.4.1 Паттерн Select-Columns
6.4.4.2 Паттерн ClassSelect
6.4.4.3 Паттерн HierarchySelect
6.4.4.4 Паттерн GenericSelect
6.4.5 Відображення агрегатів
6.4.5.1 Паттерн ClassAggregate
6.4.5.2 Паттерн HierarchyAggregate
6.4.5.3 Паттерн GenericAggregate
6.5 Відображення метаданих

7 Реалізація проміжного об'єктно-реляційного шару в середовищі Oracle9

7.1 Схема-незалежна стратегія

7.2 Схема-залежна стратегія

7.3 BLOB стратегія

8 Рекомендації використання

Висновок

Список використаних джерел

Введення
Термін CALS (Continuous Acquisition and Lifecycle Support - безперервна інформаційна підтримка поставок і життєвого циклу) означає сукупність принципів та технологій інформаційної підтримки життєвого циклу продукції на всіх його стадіях. Російськомовний аналог поняття CALS - Інформаційна Підтримка життєвого циклу Виробів (ІПІ). Останнім часом за кордоном поряд з CALS використовується також термін Product Lifecycle Management (PLM).
Мета впровадження CALS - мінімізація витрат у ході життєвого циклу виробу, підвищення його якості і конкурентоспроможності.
Для опису схем даних використовується розроблений мова EXPRESS. Ця мова регламентує:
· Креслення (пряме і асоціативне)
· Проектування конструкцій
· Інженерний аналіз
· Технологічну підготовку
· Виробництво
· Тестування даних та обмін ними в спеціальному текстовому форматі

1. Переваги CALS
Технології, стандарти та програмно-технічні засоби CALS забезпечують ефективний і економічний обмін електронними даними та безпаперових електронними документами, що дає наступні переваги:
· Можливість паралельного виконання складних проектів кількома робочими групами (паралельний інжиніринг), що істотно скорочує час розробок;
· Планування та управління багатьма підприємствами, що беруть участь в життєвому циклі продукції, розширення і вдосконалення коопераційних зв'язків (електронний бізнес);
· Різке скорочення кількості помилок і переробок, що призводить до скорочення термінів реалізації проектів і суттєвого підвищення якості продукції;
· Розповсюдження засобів і технологій інформаційної підтримки на післяпродажні стадії життєвого циклу - інтегрована логістична підтримка виробів.
На економічні показники підприємств, що застосовують CALS-технології, безпосередньо впливають такі фактори:
· Скорочення витрат і трудомісткості процесів технічної підготовки і освоєння виробництва нових виробів;
· Скорочення термінів виведення на ринок нових конкурентоспроможних виробів;
· Скорочення браку і витрат, пов'язаних з внесенням змін в конструкцію;
· Збільшення обсягів продажів виробів, забезпечених електронної технічною документацією (зокрема, експлуатаційної), складеної відповідно до вимог міжнародних стандартів;
· Скорочення витрат на експлуатацію, обслуговування і ремонт виробів ("витрат на володіння"), які для складної наукомісткої продукції часом рівні або перевищують витрати на її закупівлю.
Ось деякі кількісні оцінки ефективності впровадження CALS в промисловості США:
· Пряме скорочення витрат на проектування - від 10 до 30%;
· Скорочення часу розробки виробів - від 40 до 60%;
· Скорочення часу виведення нових виробів на ринок - від 25 до 75%;
· Скорочення частки шлюбу та обсягу конструктивних змін - від 20 до 70%.
· Скорочення витрат на підготовку технічної документації - до 40%;
· Скорочення витрат на розробку експлуатаційної документації - до 30%.
За закордонними даними, втрати, пов'язані з недосконалістю інформаційної взаємодії з постачальниками, тільки в автомобільній промисловості США становить близько 1 млрд. дол на рік. Аналогічні втрати мають місце і в інших галузях промисловості.
У тих же джерелах вказується, що витрати на розробку реактивного двигуна GE 90 для літака «Боїнг-777» склали 2 млрд. дол, а розробка нової моделі автомобіля компанії «Форд» коштує від 3 до 6 млрд. дол Це означає, що економія від зниження прямих витрат на проектування тільки по двох зазначених об'єктів може скласти від 500 млн. до 2,2 млрд. дол
Як бачимо, впровадження CALS-технологій призводить до суттєвої економії і отримання додаткового прибутку. Тому ці технології та їх окремі компоненти широко застосовуються в промисловості розвинутих країн. Так, з числа 500 найбільших світових компаній, що входять до переліку Fortune 500, близько 100% використовують такий найважливіший компонент CALS, як засобу PDM (Product Data Management - «управління даними про виріб»). Серед підприємств з річним оборотом понад 50 млн. дол такі системи використовують більше 80%.
У зв'язку з великими обсягами очікуваної економії і додаткових прибутків у цю сферу залучаються значні інвестиції, вимірювані мільярдами доларів. За даними зарубіжних джерел, інвестиції уряду США в сферу CALS-технологій складають близько 1 млрд. дол на рік. Затрати інших країн менше, проте, наприклад, уряд Фінляндії витратило на національну програму в цій області понад 20 млн. дол і приблизно таку ж суму (близько 25 млн. дол) вклали в неї приватні компанії. Корпорація General Motors протягом 1990 - 1995 років витратила на ці цілі 3 млрд. дол Середні витрати на один проект, присвячений вирішенню локального завдання в області CALS-технологій (наприклад, розробка стандарту або програми), становлять 1,2 - 1,5 млн. дол при середньому терміні виконання від двох до чотирьох років.
Ці цифри свідчать про те, яке значення надають на Заході проблематики, пов'язаної з CALS-технологіями.

2. CALS в Росії
Росія суттєво відстає від провідних промислово розвинених країн в частині запровадження сучасних ІТ, у тому числі технологій CALS. Це відставання загрожує далекосяжними негативними наслідками, перш за все, високою ймовірністю різкого скорочення експортного потенціалу російських виробників наукомісткої продукції, аж до повного витіснення їх з міжнародного ринку, що може, на думку зарубіжних експертів, відбутися до 2005 - 2008 році.
Світовий ринок повністю відторгне продукцію, не забезпечену електронною документацією і не володіє засобами інтегрованої логістичної підтримки постпроізводственних стадій життєвого циклу. Вже сьогодні багато іноземні замовники вітчизняної продукції висувають вимоги, задоволення яких неможливе без впровадження CALS-технологій:
· Представлення конструкторської та технологічної документації в електронній формі;
· Представлення експлуатаційної та ремонтної документації у формі інтерактивних електронних технічних посібників, забезпечених ілюстрованими електронними каталогами запасних частин та допоміжних матеріалів і засобами дистанційного замовлення запчастин і матеріалів;
· Організація інтегрованої логістичної підтримки виробів на постпроізводственних стадіях їх життєвого циклу;
· Наявність і функціонування електронної системи каталогізації продукції;
· Наявність на підприємствах відповідних вимогам стандартів ІСО 9000:2000 систем менеджменту якості і т. д.
Виконання цих вимог зумовлює необхідність впровадження на вітчизняних підприємствах CALS-технологій в повному обсязі.

3. Держава захищає CALS-технологій
У період з 1999-го по 2002 рік Мінпромнауки РФ спільно з Держстандартом РФ і Міносвіти РФ здійснили ряд заходів, спрямованих на створення передумов до запровадження CALS-технологій у промисловості Росії.
Були створені початкові елементи інфраструктури, необхідної для розробки і впровадження CALS-технологій: Державний науково-освітній центр CALS-технологій, Науково-дослідний центр (НДЦ) CALS-технологій «Прикладна логістика» і технічний комітет ТК 431 Держстандарту Росії, що координує розробку вітчизняної нормативної бази.
Підготовлено науково-методичні розробки: концепція розвитку CALS-технологій в промисловості Росії [1], концепція інтегрованої логістичної підтримки наукомістких виробів і концепцію впровадження CALS-технологій на машинобудівному підприємстві.
Вжито розробки в галузі створення нормативної бази: Держстандарт РФ затвердив шість документів ДСТУ ISO 10303 і шість документів в статусі рекомендацій щодо стандартизації Р 50. Були підготовлені проекти 7 ГОСТ Р і три проекти авіаційних галузевих стандартів. Крім того, розроблена програма робіт з підготовки нових стандартів та коригуванні існуючих (ЕСКД, СРПП та ін.)
Створено програмні засоби, що реалізують CALS-технології. У їх числі - програмний продукт Technical Guide Builder, призначений для автоматизованої підготовки електронної технічної експлуатаційної документації на продукцію, що експортується, що відповідає вимогам CALS-стандартів. Створення за допомогою цього продукту інтерактивних електронних технічних керівництв значно підвищує конкурентоспроможність продукції. Інший продукт - PDM STEP Suite - служить для управління даними про виріб в процесі конструювання і технологічної підготовки виробництва, що вкрай необхідно підприємствам, як розробляють наукомістку продукцію, так і продають ліцензії на її виробництво.
Нарешті, розроблені методичні основи створення інтегрованої системи управління якістю продукції, яка відповідає вимогам стандартів ISO серії 9000 версії 2000 року.
Роботи з впровадження CALS-технологій у промисловість Росії інтенсивно продовжуються при пильній увазі і підтримці Мінпромнауки РФ, Держстандарту РФ та інших міністерств і відомств Росії. Автори сподіваються, що ці роботи дозволять якщо не повністю подолати, то хоча б істотно скоротити відставання російської промисловості від промисловості провідних країн Заходу.

4. Проблеми стандартизації опису продукції, технології та
бізнесу
Початком сучасного етапу стандартизації опису продукції і технології можна вважати появу в середині 80-х років проекту STEP (STandard for the Exchange of Product model data) - серії стандартів для забезпечення універсального механізму обміну даними про продукцію і технології як між різними організаціями, так і між різними етапами життєвого циклу продукції. Ядром STEP був майже об'єктно-орієнтована мова інформаційного моделювання EXPRESS (ISO 10303, part11). Не будучи мовою програмування, не підтримуючи "методи" та механізми їх успадкування, діюча версія EXPRESS забезпечує об'єктно-орієнтовану ідеологію для опису концептуальних моделей даних (множинне спадкування даних і обмежень, що виводяться атрибути та ін.)
Другим "китом", на якому заснований EXPRESS, є модель "сутність-зв'язок" (ER модель). Так само, відчувається вплив і SQL. Графічна версія - EXPRESS-G вже повністю витіснила IDEF 1X, який використовувався на початкових етапах проекту STEP. У новій версії - EXPRESS v2 вже передбачається повна об'єктно-орієнтованість, з підтримкою моделювання процесів, подій, транзакцій, а також єдина формальна метамодель, набагато більш деталізована і семантично більш сувора, ніж частини Generic Resources серії стандартів ISO 10303 (parts 41-49) .
Вся робота над проектом велася під егідою підкомітету 4, технічного комітету 184 ISO (ISO TC184/SC4), до кінця 90-х років в рамках якого з'явилося ще кілька серій стандартів (різного ступеня завершеності), пов'язаних з описом вже не тільки продукції і технології (ISO 13584, ISO 14959, ISO 15926), а й управління виробництвом (Manufacturing Management - MANDATE - ISO 15531) і використовують як основи мова EXPRESS.
За 15 років навколо EXPRESS і STEP сформувалася вже ціла галузь ІТ, яка забезпечує значне зменшення трудовитрат при "запуску" нових технологій і нових видів продукції. Причому, якщо серія ISO 10303 починалася перш за все для обслуговування автомобільної та аерокосмічної промисловості, то зараз вона охоплює вже більшість видів виробництв, включаючи електротехнічне, кораблебудівної, будівництво, нафтохімічне і т.п. З'явилися не тільки компанії, що спеціалізуються на інструментарії технології STEP, а й організації загальнометодологічного плану, пов'язані з розвитком технології "даних про продукцію" (Product Data Technology-PDT), наприклад EuroSTEP, PDT Solutions, PDTAG, PDES та ін
Важливо відзначити активне використання Internet при розробці стандартів, в роботі над якими приймають участь багато організацій та фахівці всіх провідних країн світу. Це і серії телеконференцій з дискусіями з найбільш важливих питань, і електронне голосування за твердженням проектів стандартів на різних стадіях розробки аж до статусу Міжнародного стандарту, і організація очних семінарів / конференцій, і організація повного електронного архіву, доступного по Мережі. Така технологія організації проектів на основі управління знаннями симптоматична для "нової ери" однак вона робить тільки перші кроки і серйозно суперечить існуючим соціальним інститутам.
Незважаючи на зовнішні успіхи сама ідеологія, методологія і технологія STEP / EXPRESS вимагає глибокого вдосконалення. З одного боку, потрібна "гармонізація" і "модулярізація" стандартів всередині самого ISOTC184/SC4, c іншого, виявилося необхідним вийти за рамки опису "продукції та технології" та включити більш широке коло питань бізнесу, з третього боку все більш виникає необхідність в узгодженні аналогічних робіт з іншими організаціями, що займаються розробками в тому ж напрямку і перш за все з групами CSMF (Conceрtual Schema Modelling Facilities) і CDIF (CASE Data Interchange Format) в рамках об'єднаного технічного комітету ISO та Міжнародної Електротехнічної Комісії (ISO / IEC JTC1), з консорціумом WWW (W3C), з базовими підгрупами OMG (Object Management Group), з групою KIF (Knowledge Interchange Format) ANSI ASC X3T2, а також з OAG (Open Application Group).

5. Об'єктно-орієнтоване моделювання на EXPRESS
Коротко розглянемо підмножина мови EXPRESS, що безпосередньо відноситься до специфікації об'єктно-орієнтованих даних. EXPRESS включає в себе також досить розвинену імперативну частину, призначену для визначення поведінкових властивостей об'єктів і завдання обмежень на них. Однак у силу предмета статті ці подробиці будуть опущені, а їх опис може бути знайдено в оригіналі стандарту мови
Мова EXPRESS підтримує набір стандартних, вбудованих в нього елементарних типів даних INTEGER, REAL, NUMBER, LOGICAL, BOOLEAN, BINARY і STRING для представлення, відповідно, цілих, дійсних і довільних числових даних, логічних і булевих значень, послідовностей двійкових даних і рядків. Для перелічуваних типів передбачена спеціальна конструкція ENUMERATION. Агрегатні типи ARRAY, SET, BAG і LIST надають можливість визначення різного роду контейнерів, таких як масиви, множини, мультимножини та списки. Опціонально можуть бути задані їх розміри, способи індексації елементів, умова множинності еквівалентних елементів для масивів і списків, а також допустимість розрідженості елементів у масивах. Селективні типи, що вводяться оператором SELECT, дозволяють використовувати змінні і константи, що приймають значення одного з альтернативних типів, оголошених у списку оператора. Нові похідні типи даних створюються на основі стандартних і визначених типів з допомогою конструкції TYPE. Допускається довільна вкладеність визначень користувача типів, яка, зокрема, забезпечує створення багатовимірних масивів, вкладених селективних і агрегатних конструкцій.
Типи GENERIC, AGGREGATE, а також ARRAY, SET, BAG і LIST OF GENERIC забезпечують узагальнену реалізацію функцій і процедур з використанням абстракцій простих і агрегатних даних.
Для об'єктних типів використовується конструкція ENTITY, що передбачає різноманітні моделі простого та множинного спадкування за допомогою кваліфікаторів AND, ANDOR, ONEOF. При специфікування об'єктного типу задаються атрибути та асоціації різної кратності (EXPLICIT), зворотні асоціації (INVERSE), а також похідні обчислювані властивості об'єктів (DERIVED). Останні визначаються типами і виразами, які можуть включати в себе значення явних атрибутів, константи, виконувані оператори, включаючи виклик функцій і процедур, як стандартних, так і для користувача.
Обмеження цілісності даних задаються безпосередньо при визначенні об'єктного типу за допомогою конструкції WHERE, визначальною логічні умови у вигляді виразів логічного типу, а також за допомогою кваліфікатора UNIQUE, приписуваного умова унікальності атрибутам, асоціаціям і похідним властивостями в популяціях споріднених об'єктів. Для завдання глобальних обмежень над різнорідними об'єктами передбачена конструкція RULE, що дозволяє описати обмеження у вигляді формальної специфікації функції логічного типу.
Визначення глобальних констант, простих і об'єктних типів даних, глобальних обмежень об'єднуються в розділі інформаційної схеми моделі (SCHEMA). За допомогою конструкцій імпорту USE і REFERENCE досягається можливість використання в одній схемі визначень з інших схем, що забезпечує розробку складних інформаційних моделей шляхом ієрархічної композиції окремих схем. Таким чином, охоплюються різноманітні практично змістовні випадки об'єктно-орієнтованого моделювання прикладних даних.
Нижче представлений приклад інформаційної моделі на мові EXPRESS - схема ActorResource, специфицируются інформацію про персони і організаціях, що беруть участь у спільному проекті, їх ролі в ньому і стосунки між ними.
SCHEMA ActorResource;
TYPE ActorSelect = SELECT (Organization, Person);
END_TYPE;
TYPE AddressTypeEnum = ENUMERATION OF (
END_TYPE;
TYPE Label = STRING (255);
END_TYPE;
TYPE ActorRole = Label;
END_TYPE;
ENTITY Address
ABSTRACT SUPERTYPE OF (ONEOF (PostalAddress, TelecomAddress));
Purpose: AddressTypeEnum;
UserDefinedPurpose: OPTIONAL STRING;
INVERSE
OfPerson: SET OF Person FOR Addresses;
OfOrganization: SET OF Organization FOR Addresses;
WHERE
WR1: (Purpose <> AddressTypeEnum.USERDEFINED) OR
((Purpose = AddressTypeEnum.USERDEFINED) AND
EXISTS (UserDefinedPurpose));
END_ENTITY;
ENTITY PostalAddress
SUBTYPE OF (Address);
AddressLines: LIST [1:?] OF Label;
END_ENTITY;
ENTITY TelecomAddress
SUBTYPE OF (Address);
TelephoneNumbers: OPTIONAL LIST [1:?] OF Label;
FacsimileNumbers: OPTIONAL LIST [1:?] OF Label;
ElectronicMailAddresses: OPTIONAL LIST [1:?] OF Label;
WWWUrls: OPTIONAL LIST [1:?] OF Label;
WHERE
WR1: EXISTS (TelephoneNumbers) OR EXISTS (FacsimileNumbers) OR
EXISTS (ElectronicMailAddresses) OR EXISTS (WWWUrls);
END_ENTITY;
ENTITY Organization;
Id: INTEGER;
Name: Label;
Description: OPTIONAL STRING;
Roles: LIST [0:?] OF UNIQUE ActorRole;
Addresses: LIST [1:?] OF UNIQUE Address;
INVERSE
IsRelatedBy: SET OF OrganizationRelationship FOR RelatedOrganizations;
Relates: SET OF OrganizationRelationship FOR RelatingOrganization;
Engages: SET OF Person FOR EngagedIn;
UNIQUE
UR1: Id;
END_ENTITY;
ENTITY OrganizationRelationship;
Name: Label;
Description: OPTIONAL STRING;
RelatingOrganization: Organization;
RelatedOrganizations: SET [1:?] OF Organization;
END_ENTITY;
ENTITY Person;
Id: INTEGER;
FamilyName: OPTIONAL Label;
GivenName: OPTIONAL Label;
MiddleNames: OPTIONAL LIST [1:?] OF Label;
PrefixTitles: OPTIONAL LIST [1:?] OF Label;
SuffixTitles: OPTIONAL LIST [1:?] OF Label;
Roles: LIST [0:?] OF UNIQUE ActorRole;
Addresses: OPTIONAL LIST [1:?] OF UNIQUE Address;
EngagedIn: SET OF Organization;
UNIQUE
UR1: Id;
WHERE
WR1: EXISTS (FamilyName) OR EXISTS (GivenName);
END_ENTITY;
END_SCHEMA;
До теперішнього часу в рамках міжнародних програм по стандартизації прикладних інформаційних моделей та інтероперабельності програмних додатків накопичений значний ресурс багатопрофільних міждисциплінарних моделей. Ресурс охоплює такі наукові та промислові області, як машинобудування, авіаційну та космічну промисловість, суднобудування, нафтогазовий комплекс, архітектуру і будівництво, електронну промисловість, фармацевтику, геоінформатику. Значна частина розроблених на мові EXPRESS специфікацій прийнята в якості документів ISO-10303. Інша частина розробляється безпосередньо промисловими альянсами для подальшого подання до міжнародної організації по стандартах.
До істотних особливостей прикладних інформаційних моделей слід віднести:
· Складність і масштабність моделей, що виражаються у великій кількості типів, що визначаються в рамках однієї інформаційної схеми, у застосуванні альтернативних механізмів множинного спадкоємства і поліморфного перевизначення властивостей об'єктних типів, а також у використанні вкладених агрегатних і селективних конструкцій і двонаправлених асоціацій;
· Необхідність підтримки запитів до даних у декларативному предикативному і навігаційному стилях, а також ефективну реалізацію базових операцій маніпулювання ними;
· Широкий контекст використання моделей у додатках, що оперують як з даними однієї багатопрофільної інформаційної схеми, так і з даними декількох незалежних схем.
Дані особливості обумовлюють пошук ефективних рішень для об'єктно-реляційного відображення та їх систематизацію для комплексного використання в конкретних прикладних контекстах.

6. Загальна систематизація підходів

6.1 Класифікація патернів відображення

Незалежно від особливостей застосовуваних підходів нам бачиться ряд пов'язаних між собою аспектів відображення прикладних даних з об'єктно-орієнтованої моделі в реляційну. Перш за все, це технічні питання семантичного відображення в реляційну метамодель базових конструкцій мови EXPRESS, а саме:
· Елементарних базових типів;
· Перелічуваних типів;
· Асоціативних зв'язків між об'єктами;
· Селективних типів;
· Агрегатних типів;
· Вкладених структур даних, заснованих на базових, перелічуваних, асоціативних, селективних і агрегатних типах даних;
· Простих і складних об'єктних типів у рамках моделі множинного спадкування;
· Інформаційних схем.
Не менш істотними для практичного застосування є часто суперечать один одному проблеми:
· Вибору стратегії відображення у відповідності з контекстом використання семантики інформаційної моделі;
· Підтримки метаданих в реляційному поданні та їх конструктивного застосування в ході сесії користувачів;
· Ефективності реалізації об'єктних запитів і операцій маніпулювання об'єктами (створення, модифікація, видалення);
· Оптимізації використовуваних ресурсів, включаючи витрати пам'яті;
· Сопровождаемости рішень та їх гнучкості по відношенню до можливої ​​еволюції використовуваних прикладних моделей.

6.2 Відображення інформаційних схем
Питання про вибір стратегії відображення в рамках схемо-залежного (СЗ) або схемо-незалежного (СН) підходів є найбільш принципових для систематизації методів об'єктно-реляційного відображення та їх адекватного застосування в додатках.
6.2.1 Схема-незалежна стратегія
Схемо-незалежна стратегія орієнтована на використання єдиної реляційної схеми для представлення довільних прикладних даних, моделі яких специфіковані на EXPRESS. Для додатків, що оперують одночасно з декількома перманентно змінюваними прикладними моделями, застосування схемо-незалежна стратегії є найкращим. Супровід та адміністрування реляційної бази даних з фіксованою системою таблиць, склад і структура якої не змінюється, досить прості.
До недоліків стратегії слід віднести необхідність підтримки й використання словників метаданих, без яких реалізація проміжного об'єктно-реляційного шару неможлива. Самі словники також можуть бути представлені у вигляді таблиць, що зберігають інформацію про вихідні прикладних моделях і включених до складу єдиної реляційної системи. Іншим недоліком є ​​відносно низька ефективність виконання базових операцій маніпулювання об'єктами, оскільки їх реалізація пов'язана з необхідним додатковим аналізом супутніх метаданих.
6.2.2 Схема-залежна стратегія
Схемо-залежна стратегія більшою мірою орієнтована на додатки, які оперують з єдиною моделлю даних, не змінюваної протягом усього життєвого циклу проекту. Організація реляційної системи в цьому випадку може відображати і враховувати особливості конкретної прикладної моделі. Схемо-залежна стратегією не виключається і одночасна підтримка декількох моделей. Однак у силу складності супроводу і адміністрування реляційних баз даних з великою кількістю таблиць її використання в цьому випадку може виявитися вкрай обтяжливим.
Перевагою схемо-залежною стратегії є можливість більш ефективної реалізації об'єктних запитів і операцій маніпулювання об'єктами за рахунок безпосередньої адресації до таблиць з збереженими даними, на відміну від схемо-незалежної стратегії, де така адресація здійснюється опосередковано через таблиці метаданих.
Як різновид схемо-залежною стратегії може розглядатися змішана (СМ) стратегія, яка полягає в організації системи таблиць по заданій прикладної моделі при одночасному використанні словників метаданих. При певній надмірності у поданні даних така стратегія забезпечує більш ефективну реалізацію складних запитів безпосередньо засобами реляційної СУБД, оскільки вся необхідна метаінформація може також зберігатися у вигляді таблиць і бути доступною при обробці запитів.
6.3 Відображення спадкування класів
Патерни, призначені для відображення відносин простого наслідування між класами, є добре відомими. У цій роботі ми обговоримо можливі варіанти відображень в рамках розвиненої моделі множинного наслідування мови EXPRESS.
6.3.1 Паттерн OneInheritanceHierarchy-OneTable
Перший, найбільш простий патерн OneInheritanceHierarchy-OneTable відповідає випадку відображення всіх конкретних споріднених класів, які мають загальний набір прабатьків, в одну таблицю <Hierarchy> _Instances. Прабатьком будемо називати клас-предок, у якого немає власних батьків.
У разі простого наслідування даний патерн трансформується в стратегію представлення конкретних класів у кожному дереві спадкування однієї реляційної таблицею. Атрибути всіх споріднених класів, які є вершинами дерева, відображаються у стовпці цієї таблиці. Якщо ієрархія наслідування класів у прикладній моделі представлена ​​кількома деревами, то кожному такому дереву буде відповідати окрема таблиця.
У загальному випадку множинного успадкування ієрархія класів представляється набором таблиць, кожна з яких відповідає одному із поєднань прабатьків. Усі атрибути класів, об'єднаних єдиним набором прабатьків, відображаються у стовпці конкретної таблиці з цього набору. Для записів об'єктів, в яких не визначено будь-які атрибути, у відповідних стовпцях прописуються нульові значення.
Перевагою патерну є можливість ефективної реалізації базових операцій над довільними об'єктами без додаткових витрат на складання значень атрибутів з різних таблиць і їх зворотне розподіл за ним. Також безпосередньо реалізується полиморфное читання. Єдина складність полягає у визначенні типу запитуваних об'єктів. Простота підтримки та розвитку такої СЗ стратегії робить її досить привабливою. Недоліком є ​​надмірне споживання пам'яті за рахунок надлишкового зберігання нульових значень, а іноді й необхідність індексування великого числа стовпців для прискорення виконання запитів за значеннями окремих атрибутів. При великій глибині спадкування класів, що є типовим в наукових і промислових моделях STEP, це може виявитися критичним як для споживання пам'яті, так і для продуктивності.

6.3.2 Паттерн OneClass-OneTable
У паттерні OneClass-OneTable кожен конкретний або абстрактний класи в ієрархії спадкоємства представляються окремої таблицею <Class> _Instances, при цьому власні атрибути даного класу відображаються в її стовпці. Для зв'язку з успадкованими атрибутами вона зберігає вторинні ключі відповідних записів у таблицях батьківських класів. У разі простого наслідування - один вторинний ключ, у разі множинного наслідування - кілька вторинних ключів, кожен з яких відповідає таблиці одного з батьків.
Оскільки при множинному спадкуванні можливі неоднозначні ситуації, коли атрибути одного й того самого базового класу успадковуються кілька разів, реалізація даного патерну пов'язана з аналізом і дозволом подібних ситуацій. У мові EXPRESS припустиме лише віртуальне успадкування, при якому будь-які атрибути базових класів повинні успадковуватися один раз. Тому при аналізі реконструюється основне дерево наслідування, а гілки, що призводять до циклів, ігноруються в результаті обнулення відповідних вторинних ключів до записів у таблицях батьківських класів. Випадки багаторазового успадкування атрибутів обробляються автоматично і не вимагають додаткового аналізу.
Паттерн забезпечує гарну продуктивність на операціях поліморфного читання, проте реалізація базових операцій над об'єктами пов'язана з витратами на складання значень атрибутів з декількох таблиць при читанні і їх розсилку за таблицями при записі і модифікації. При глибокій ієрархії успадкування такі витрати можуть виявитися істотними.
Витрати пам'яті в реалізації даного патерну близькі до оптимальних, оскільки зберігання вторинних ключів не вимагає великих накладних витрат. Як елемент схемо-залежною стратегії патерн не забезпечує простоту підтримки та еволюції складних прикладних моделей з розвиненою ієрархією наслідування.
6.3.3 Паттерн OneInheritancePath-OneTable
Деякі недоліки попереднього патерну компенсуються в результаті серіалізациі таблиць класів по відносинам спадкування. У паттерні OneInheritancePath-OneTable кожному конкретному класу відповідає своя таблиця <Concrete_Class> _Instances, в стовпці якої відображаються всі атрибути класу, включаючи успадковані від батьків.
Паттерн забезпечує хорошу ефективність на базових операціях читання, запису, модифікації, видалення, однак поліморфні операції виявляються досить дорогими, оскільки пов'язані з переглядом всіх таблиць класів, успадкованих від заданого. Витрати пам'яті тут оптимальні, оскільки не потрібно зберігання надлишкових полів. Важливим достоїнством патерну в ряді випадків виявляється рівномірний розподіл запитів і пов'язаних з ними блокувань за таблицями схеми. На відміну від попередніх патернів спадкування, в яких переважаюча навантаження припадає на кореневі таблиці прабатьків, даний патерн забезпечує більшу ефективність за рахунок більш рівномірного розподілу записів.
Однак щодо підтримки еволюції схем патерн достатньо критичний, оскільки всі запити, засновані на поліморфних операціях, вимагають модифікації з урахуванням кожного нового успадкованого класу, що включається до прикладну модель.
6.3.4 Паттерн AllClasses-OneTable
Паттерн AllClasses-OneTable передбачає використання єдиної таблиці Instances для подання дескрипторів об'єктів усіх класів. У стовпцях таблиці зберігаються ідентифікатор об'єкта і його тип. Контекст використання патерну пов'язаний з поданням атрибутів класів у вигляді самостійних таблиць. У цьому випадку зв'язок між таблицями примірників класів і значень їх атрибутів здійснюється через зовнішні ключі записів об'єктів (див. розділ 6.4.2.2). Передбачається, що значення атрибутів одного і того ж типу зберігаються в єдиній таблиці незалежно від їх входження до складу того чи іншого класу. Тим самим досягається істотна для схемо-незалежної стратегії інваріантність реляційної схеми по відношенню до прикладних моделями. Зв'язок простого об'єкта з його класом здійснюється через зовнішній ключ запису в таблиці класів Entities (див. розділ 6.5). Для складних об'єктів передбачений зовнішній ключ запису у відповідній таблиці складних класів Complex_Entities.
6.3.5 Паттерн BLOB
Паттерн BLOB також передбачає використання єдиної таблиці BLOB Instances для представлення об'єктів всіх класів. Однак на відміну від патерну AllClasses-OneTable в даній таблиці використовується додатковий стовпець для зберігання значень атрибутів, упакованих в бінарну або текстовий рядок змінної довжини. Завдання упаковки значень в рядок і їх розпакування для клієнтських додатків лягає безпосередньо на проміжний шар програмного забезпечення. Хоча читання і запис даних об'єкта здійснюються за одну операцію звернення до таблиці, додаткові витрати припадають на обробку рядків проміжним шаром. По суті в цьому випадку BLOB стратегія поєднує в собі патерни спадкування, агрегації та асоціації.
Можливі різновиди даного патерну, пов'язані з різними способами подання рядки значень атрибутів як в бінарному форматі, так і в одному з текстових метаформатов. Зокрема, стосовно метамоделі EXPRESS стандарт STEP визначає формат текстового кодування прикладних даних (ISO-10303-21) і кілька альтернативних способів XML розмітки документів (ISO-10303-28), породжуваних відповідної прикладної моделлю даних, спеціфіціруемий мовою EXPRESS.
Головним недоліком BLOB патерну є неможливість дозволу запитів і реалізації об'єктних операцій безпосередньо засобами реляційної СУБД. У даному випадку вона відіграє роль простого сховища, а ці функції виконує проміжний шар. Як патерн схемо-незалежної стратегії він не вимагає великих витрат на підтримку реляційної схеми при еволюції прикладної моделі, оскільки пов'язані з цими змінами функції зачіпають лише проміжний шар.
6.4 Відображення атрибутів
Атрибути класів представляються або стовпцями відповідних таблиць об'єктів класів, або самостійними таблицями. Як і у випадку патернів відображення класів, альтернативи подання атрибутів багато в чому визначаються застосовуваної схемо-залежною або схемо-незалежної стратегією об'єктно-реляційного відображення. Розглянемо їх, слідуючи введеної класифікації патернів відображення атрибутів простих, селективних, агрегатних типів і асоціацій.
6.4.1 Представлення простих типів
Відповідність базових типів мови EXPRESS типами даних в SQL досить прозоро. У таблицю 1 зведені базові типи EXPRESS і можливі способи їх подання в деяких популярних комерційних і вільно розповсюджуваних реляційних СУБД.
Таблиця 1. Відповідність базових типів EXPRESS і SQL в реляційних СУБД
Еxpress
MySQL
PostgreSQL
Oracle
INTEGER
INTEGER
INTEGER
INTEGER
REAL
REAL,
DOUBLE PRECISION
FLOAT8,
DOUBLE PRECISION
NUMBER,
DOUBLE PRECISION
REAL (n)
FLOAT (n)
NUMERIC (n)
NUMBER (n)
NUMBER
REAL,
DOUBLE PRECISION
FLOAT8,
DOUBLE PRECISION
NUMBER,
DOUBLE PRECISION
BOOLEAN
CHAR (1),
TINYINT
CHAR (1),
SMALLINT
CHAR (1),
INTEGER
LOGICAL
CHAR (1),
TINYINT
CHAR (1),
SMALLINT
CHAR (1),
INTEGER
ENUMERATION
VARCHAR (128),
INTEGER
VARCHAR (128),
INTEGER
VARCHAR2 (128),
INTEGER
STRING
TEXT (up to 64K),
LONGTEXT (up to 4Gb)
TEXT (about 1Gb)
VARCHAR2 (4000),
LONG (up to 2Gb)
STRING (n)
VARCHAR (n)
VARCHAR (n)
VARCHAR2 (n)
STRING (n) FIXED
CHAR (n)
CHAR (n)
CHAR (n)
BINARY
BLOB (up to 64K),
LONGBLOB (up to 4Gb)
BYTEA
LONG RAW (up to 2Gb)
BINARY (n)
VARCHAR (n) BINARY
VARBIT (n)
RAW (n)
BINARY (n) FIXED
CHAR (n) BINARY
BIT (n)
RAW (n)
ENTITY (reference)
VARCHAR (128),
FOREIGN KEY
VARCHAR (128),
FOREIGN KEY
VARCHAR2 (128),
FOREIGN KEY
Крім зазначених варіантів представлення точності числових значень і обмежень довжини строкових і двійкових змінних, важливі відмінності зачіпають способи подання атрибутів типу BOOLEAN, LOGICAL і ENUMERATION. З точки зору семантики мови EXPRESS значення цих типів впорядковані, і для них визначені операції порівняння. Тому, якщо передбачається реалізація запитів з використанням подібних операцій, більш привабливим виглядає подання змінних цих типів як цілих чисел. У цьому випадку функція інтерпретації значень в термінах вихідної прикладної моделі покладається на проміжний програмний шар, можливо, з використанням словників метаданих. Значення, представлені у вигляді символьних рядків, інтерпретуються безпосередньо клієнтськими додатками. Засобами СУБД може контролюватися також і коректність даних, для чого повинні бути накладені відповідні обмеження на область допустимих значень.
6.4.2 Відображення атрибутів простих типів
6.4.2.1 Паттерн Attribute-Column
Реалізація патерну подання атрибутів простих типів у вигляді стовпців відповідних таблиць об'єктів досить прозора і природна для застосування в рамках схемо-залежною стратегії. У цьому випадку кожна таблиця об'єктів класів включає в себе відповідний стовпець для представлення значень простого атрибута. Тип стовпця визначається можливими варіантами представлення базових типів мови EXPRESS, розглянутими у попередньому розділі. Як ім'я стовпця можуть бути обрані або ім'я атрибуту, унікальне в межах класу, або конкатенація імен класу і атрибуту, унікальна в межах інформаційної схеми.
6.4.2.2 Паттерн Attribute-Table
Даний патерн припускає використання самостійних таблиць для представлення простих однотипних атрибутів. Його застосування можливе лише в рамках схемо-незалежної і змішаної стратегій з одночасним використанням таблиць метаданих. Прив'язка значень атрибутів до дескрипторам об'єктів здійснюється за зовнішнім ключам записів об'єктів в таблиці Instances, представленим у таблицях атрибутів. Для ідентифікації збережених величин як значень атрибутів певних класів у них також зберігаються зовнішні ключі записів метаінформації про відповідні атрибути в таблиці Attributes у складі системи таблиць метаданих.
Незалежно від належності різних класів значення однотипних атрибутів зберігаються в одній таблиці. Для представлення всіх атрибутів простих типів, що допускаються метамоделі мови EXPRESS, у загальній реляційної схемою достатньо мати фіксований набір з шести таблиць: Integer_Attributes, Real_Attributes, Logical_Attributes, String_Attributes, Binary_Attributes і Enum_Attributes. Передбачається, що в схемі зберігання дані типу NUMBER завжди представимо типом REAL, а дані типу BOOLEAN - типом LOGICAL.
6.4.3 Відображення асоціацій
Мова EXPRESS допускає визначення різного роду асоціативних відносин між класами, що відрізняються як за типом, так і по кратності. Асоціації однонаправлені в тому сенсі, що асоційований об'єкт може бути отриманий за відповідним посиланням з об'єкта, що містить асоціативний зв'язок. Разом з тим, допускається завдання двонаправлених зв'язків з допомогою визначення зворотних атрибутів (INVERSE) в асоційоване класі. При визначенні прямої і зворотної асоціації припустимо вказівку діапазону кратності зв'язку як обмеження, що накладається на кількість об'єктів, що беруть участь в ній як з боку асоційованих, так і з боку асоціюють об'єктів.
Асоціації "один-до-одного" реалізуються як прості атрибути, що мають тип об'єктної посилання. Асоціації "один-до-багатьох" видаються засобами мови як агрегати простих асоціативних відносин. Асоціації виду "багато-до-багатьох" безпосередньо конструкціями мови не підтримуються, проте можуть бути представлені в прикладній моделі у вигляді додаткових об'єктів, через які на основі множинних асоціацій можуть бути встановлені необхідні відносини між прикладними об'єктами.
Розглянемо завдання відображення множинних асоціацій виду "один-до-багатьох" як найбільш типовий випадок, до якого можуть бути безпосередньо зредуковані асоціації "один-до-одного" і "багато-до-багатьох". Бачаться три найбільш змістовних випадку подання асоціацій і відповідних їм патерну відображення.
6.4.3.1 Паттерн ForeignKeyAssociation
Даний патерн застосуємо до прямих множинним асоціаціям за умови, що відповідна зворотна асоціація є простою. Іншими словами, з кожним об'єктом, що беруть участь у зв'язку, може бути асоційоване деякий безліч об'єктів. Однак кожен об'єкт таких множин може брати участь тільки в одній зворотного асоціації зв'язку з цим. Паттерн реалізується в рамках схемо-залежною стратегії шляхом включення в таблицю асоційованого класу <Associated_Class> (класу, на який міститься посилання в класі асоціації) зовнішнього ключа на таблицю <Associating_Class>. Ім'я ключа може відповідати імені зв'язку у відповідній специфікації <Associating_Class>. У разі упорядкованих множинних асоціацій (LIST або ARRAY OF ENTITY) може знадобитися додатковий стовпець у таблиці <Associated_Class> для зберігання індексу асоціації. Якщо зв'язок реалізується як елемент вкладеної агрегатної конструкції, то в даній таблиці передбачається необхідне число стовпців індексів для кожного з упорядкованих множин, що беруть участь в ній. Аналогічно, якщо зв'язок реалізується як елемент селективної конструкції, то в таблицю додається відповідний стовпець для подання дискримінатора. Більш докладно ці випадки описані в патернах відображення селективних і агрегатних конструкцій.
Читання асоціює об'єкта реалізується за допомогою однієї операції з'єднання або двох операцій запиту до таблиць <Associated_Class> і <Associating_Class>, один з яких є множинним. Запис об'єкта також пов'язана з множинною операцією модифікації зовнішніх ключів в записах асоційованих об'єктів. Витрати пам'яті в реалізації патерну близькі до оптимальних, оскільки витрати припадають лише на зберігання додаткового зовнішнього ключа, а іноді й індексу асоціації в таблиці <Associated_Class>, для кожного зв'язку, в якій асоційований клас бере участь.
6.4.3.2 Паттерн ClassAssociation
Даний патерн дозволяє безпосередньо представити множинні асоціативні відносини в результаті використання окремої таблиці в рамках схемо-залежною стратегії. Така таблиця <Class1> _ <Class2> _Associations створюється для кожної пари класів, що беруть участь в асоціативному зв'язку, і містить пари зовнішніх ключів записів у таблицях класів асоційованих і асоціюють об'єктів.
На відміну від попереднього, цей патерн забезпечує подання довільних асоціативних відносин, не обмежених кратністю зворотних асоціацій.
6.4.3.3 Паттерн GenericAssociation
Даний патерн відповідає схемо-незалежної стратегії. Він реалізує ідею уніфікованого подання всіх видів асоціацій, які беруть участь у прикладній моделі, однією таблицею Associations. Асоціативні зв'язки в таблиці встановлюються через посилання на дескриптори прикладних об'єктів в таблиці Instances у вигляді зовнішніх ключів відповідних записів у ній. Оскільки для реалізації схемо-незалежної стратегії важлива прив'язка елементів даних до прикладної моделі, для кожної асоціації в таблиці Associations зберігається також посилання на метаінформацію про відповідне атрибуті, представлену в таблиці Attributes. Якщо асоціація встановлюється як елемент агрегатної або селективної конструкції, то вказується також посилання на відповідний запис у таблицях Aggregates або Selections. Таким чином, таблиця Associations зберігає безліч записів про всі види асоціацій прикладних даних, контексті їх використання в складі агрегатних або селективних конструкцій та їх прив'язці до прикладної інформаційної моделі, які представлені відповідними таблицями метаданих.
6.4.4 Відображення селективних типів
Оскільки селективні типи даних у мові EXPRESS по суті є альтернативним поданням інших базових типів, патерни їх відображення тісно пов'язані з відповідними патернами відображення тих базових типів, на яких вони грунтуються. Важливо відзначити, що селективні типи можуть бути засновані на простих типах даних, асоціативних типах, агрегатах різного виду і на раніше визначених селективних типах іншої організації. Дискримінатор установки селективного елемента даних в одне з альтернативних станів у реляційної схемою представимо стовпцем в таблиці зберігання значень атрибутів об'єктів. Тип стовпця дискримінатора відповідає розглянутим способам відображення даних перечислимого типу ENUMERATION (див. розділ 6.4.1). А спосіб подання самого стану елемента визначається одним з патернів відображення атрибутів базових типів. Оскільки в якості базових можуть виступати користувацькі типи даних, еквівалентні з точки зору способів подання до реляційної схемою, то для виключення надмірності та мінімізації витрат пам'яті доцільно виділити підмножина нееквівалентний базових типів і передбачити способи їх адекватного реляційного представлення. При цьому дискримінатор селективного елемента дозволить однозначно ідентифікувати, у якому саме стані збережені дані знаходяться.
Зручно розрізняти два зустрічаються на практиці випадку визначення селективного типу. Перший випадок відповідає селективним типам, що базується лише на простих та асоціативних типах даних, враховуючи можливий вкладений характер складових типів. Другий спільний випадок охоплює всі можливі варіанти визначення селективного типу на основі довільної комбінації базових, в тому числі і за участю агрегатів.
6.4.4.1 Паттерн Select-Columns
Даний патерн застосуємо до відображення атрибутів селективних типів, що відносяться до першого випадку. У реляційній схемою селективний елемент такого виду представляється набором стовпців в таблиці об'єктів класу. Один зі стовпців резервується для зберігання дискримінатора селективних елементів. А інші використовуються для зберігання всіх можливих альтернативних нееквівалентний станів самих селективних даних. У випадках, коли селективний тип є складовим вкладеним, в таблиці резервується необхідне число стовпців під дискримінатори для кожного вкладеного селективного типу, бере участь у визначенні складеного типу, і під кожне нееквівалентне стан, в якому селективні дані можуть знаходитися.
Перевагою даного патерну є можливість ефективної реалізації базових операцій над об'єктами за участю атрибутів селективного типу шляхом безпосередньої адресації до таблиці об'єктів. Він може використовуватися в поєднанні з усіма розглянутими вище патернами відображення класів у рамках схемо-залежною стратегії.
6.4.4.2 Паттерн ClassSelect
У тих випадках, коли у визначенні атрибута селективного типу беруть участь агрегатні конструкції, застосування розглянутого вище патерну є проблематичним і виникає необхідність представлення значень атрибута класу окремою таблицею <Class> _ <Attribute> _Select. Організація цієї таблиці повторює структуру стовпців у попередньому паттерні відображення за винятком того, що резервуються додаткові стовпці для зберігання індексів елементів агрегатів, які беруть участь у визначенні селективного типу. Кількість стовпців, необхідне для цього, визначається максимальною глибиною вкладеності використовуваних конструкцій упорядкованих агрегатів. Для зв'язку з об'єктами використовується посилання з таблиці <Class> _ <Attribute> _Select на відповідну таблицю об'єктів класів у вигляді зовнішнього ключа записів у ній.
У порівнянні з попереднім паттерном для реалізації базових операцій над об'єктами виникає необхідність доступу до кількох таблиць, але при цьому він охоплює найбільш загальний випадок визначення атрибутів довільного селективного типу. Відзначимо, що допоміжні операції зі значеннями селективних атрибутів виконуються досить ефективно, оскільки в таблиці зберігаються лише значення, відповідні одному атрибуту (або декільком однотипним атрибутами) одного класу. Однак число реляційних таблиць при відображенні масштабних прикладних моделей може бути значним з урахуванням повторюваності використовуваних селективних типів у визначеннях класів.
6.4.4.3 Паттерн HierarchySelect
Цей патерн усуває зазначений вище недолік за рахунок використання однієї таблиці для кожного селективного типу, встречаемого у визначенні самостійної ієрархії спадкування класів. Проте контекст його використання обмежується єдиним паттерном відображення класів OneInheritanceHierarchy-OneTable. Організація таблиці для кожного селективного типу повторює попередній випадок. Для зв'язку з об'єктами використовується зовнішній ключ записів об'єктів в таблиці <Hierarchy> _Instances. Даний патерн дозволяє істотно скоротити число таблиць, необхідних для реляційного представлення масштабних прикладних моделей, за рахунок зберігання однотипних селективних даних в єдиних таблицях. Їх розмір природно зростає, що приводить до уповільнення операцій роботи з збереженими селективними даними, однак загальне число таблиць, критичний для більшості сучасних реалізацій реляційних СУБД, знижується.
6.4.4.4 Паттерн GenericSelect
Даний патерн надає типове узагальнене рішення для реляційного представлення довільних атрибутів селективного типу. Він застосовується в поєднанні з паттерном відображення класів AllClasses-OneTable в рамках схемо-незалежної стратегії.
Таблиця Selections зберігає записи дескрипторів селективних даних, включаючи їх дискримінатори і посилання на об'єкти в таблиці Instances, атрибутами яких вони є. Самі дані зберігаються в таблицях подання простих типів Integer_Elements, Real_Elements, String_Elements, Binary_Elements, Logical_Elements, Enum_Elements і в таблиці асоціацій Associations.
Можливі випадки, коли самі селективні дані є елементом іншої батьківської селективної або агрегатної конструкції. Для цього в таблиці дескрипторів Selections передбачені посилання на відповідні батьківські селективні і агрегатні елементи даних у вигляді стовпчиків зовнішніх ключів записів у таблицях Selections і Aggregates. Така організація таблиць дозволяє представити вкладені конструкції, складені з даних довільних типів. Для отримання метаінформації про селективному елементі в таблиці Selections також зберігаються посилання на відповідні записи в таблиці метаданих Attributes.

6.4.5 Відображення агрегатів
Патерни відображення атрибутів агрегатних типів в реляційну схему багато в чому аналогічні паттернам подання селективних типів. Основні відмінності зачіпають необхідність подання розмірності агрегату замість дискримінаторів у разі селективних елементів, а також організації спеціальних таблиць для зберігання значень агрегіруемих елементів, а також і їх індексів у разі впорядкованих множин і мультимножин. Кількість стовпців, необхідне для подання розмірності агрегату, визначається глибиною вкладеності агрегатних конструкцій. Кількість стовпців, необхідне для подання індексів агрегіруемих елементів, визначається глибиною вкладеності упорядкованих агрегатів. Організація стовпців для представлення значень самих елементів визначається їх типом. Для простих типів дана організація тривіальна. Для елементів селективного типу організація стовпців слід описам розглянутих вище патернів.
У відношенні способів представлення вкладених типів даних, у тому числі заснованих на визначених конструкціях, патерни відображення селективних і агрегатних типів досить близькі. Патерни ClassAggregate і HierarchyAggregate призначені для використання з патернами відображення класів OneClass-OneTable, OneInheritancePath-OneTable і OneInheritanceHierarchy-OneTable в рамках схемо-залежною стратегії. Паттерн GenericAggregate застосовується разом з паттерном AllClasses-OneTable, відповідаючи СН стратегії відображення.
6.4.5.1 Паттерн ClassAggregate
Даний патерн передбачає організацію спеціальних колонок для зберігання розмірностей агрегату безпосередньо в таблиці об'єктів класу, а також створення окремої таблиці <Class> _ <Attribute> _Aggregate для зберігання значень та індексів елементів агрегату. Така таблиця створюється для кожного агрегатного атрибуту кожного класу. Для зв'язку з об'єктами використовується посилання з <Class> _ <Attribute> _Aggregate на відповідну таблицю об'єктів класів у вигляді зовнішнього ключа записів у ній.
Паттерн охоплює найбільш загальний випадок визначення атрибутів довільного агрегатного типу. При цьому число реляційних таблиць при відображенні масштабних прикладних моделей зазвичай великий з урахуванням повторюваності еквівалентних агрегатних типів у визначеннях класів.
6.4.5.2 Паттерн HierarchyAggregate
Цей патерн зменшує число таблиць, необхідних для подання агрегатних даних за рахунок використання однієї таблиці для кожного агрегатного типу, встречаемого у визначенні самостійної ієрархії спадкування класів. Розмір таких таблиць при цьому збільшується, що приводить до уповільнення операцій роботи з збереженими агрегатними даними, однак загальне число таблиць, критичний для більшості сучасних реалізацій реляційних СУБД, знижується. Контекст використання патерну обмежується відповідною схемою відображення класів OneInheritanceHierarchy-OneTable. Для зв'язку з об'єктами використовується зовнішній ключ записів об'єктів в таблиці <Hierarchy> _Instances.
6.4.5.3 Паттерн GenericAggregate
Даний патерн надає типове рішення для узагальненого реляційного представлення довільних атрибутів агрегатного типу. Він застосовується в поєднанні з паттерном відображення класів AllClasses-OneTable в рамках схемо-незалежної стратегії.
Таблиця Aggregates зберігає записи дескрипторів агрегатних даних, включаючи їх розмірності і посилання на об'єкти в таблиці Instances, атрибутами яких вони є. Таблиця є батьківського для елементів агрегату, що зберігаються в інших таблицях Integer_Elements, Real_Elements, String_Elements, Binary_Elements, Logical_Elements, Enum_Elements і Associations. У свою чергу, кожен запис в таблиці Aggregates може мати посилання на запис у цій же таблиці, якщо агрегат є елементом, вкладеним в інший батьківський агрегат, а також зберігати відповідний індекс у ньому. Якщо агрегат є одним зі значень селективного типу, то він посилається на відповідну батьківську конструкцію, подану записом в таблиці Selections. В інших випадках записи таблиці Aggregates посилаються на відповідні записи в таблиці Attributes для отримання метаінформації про агрегатному атрибуті.
6.5 Відображення метаданих
Для представлення метаданих в рамках схемо-незалежної і змішаної стратегій об'єктно-реляційного відображення необхідно передбачити спеціальну систему таблиць, яка в свою чергу може розглядатися як результат відображення об'єктно-орієнтованої метамоделі мови EXPRESS на реляційну модель. Оскільки повна метамодель мови EXPRESS досить складна, а об'єктно-реляційне відображення допускає безліч реалізацій, в тому числі на основі вищеописаних патернів, обмежимося розглядом наступного можливого варіанту організації таблиць. Система таблиць, дозволяє представити необхідну метаінформацію про EXPRESS схемою, її складі у вигляді визначених простих і об'єктних типів даних і організації атрибутів у класах об'єктів. Допустимі розширення реляційної схеми, що забезпечують подання різного роду обмежень, що допускаються мовою EXPRESS.
Таблиця Schemas призначена для подання інформаційних схем мови EXPRESS, зареєстрованих в реляційній базі даних. Вона зберігає первинні ключі записів і унікальні імена схем. Defined_Types - це таблиця простих типів даних, визначених користувачем, яка зберігає первинний ключ типу, його ім'я, а також посилання на базовий тип у вигляді зовнішнього ключа запису в цій же таблиці. Одинадцять визначених типів, відповідних семи елементарним типам мови EXPRESS, узагальненим асоціативному і перераховуємо типам, а також селективного і агрегатному супертіпа, заносяться заздалегідь при ініціалізації таблиці. Визначені типи є листками на дереві ієрархії складних типів, рекурсивно визначених користувачем і занесені до цієї таблиці у вигляді окремих записів. Defined_Types_To_Schemas - це таблиця відповідності визначених типів даних конкретних схемами. Зв'язок між користувальницьким типом та інформаційної схемою встановлюється через окрему таблицю, а не через зовнішній ключ у таблиці Defined_Types, оскільки один і той же тип може включатися в різні схеми, якщо у специфікації на мові EXPRESS для нього визначені директиви імпорту. Таблиця зберігає зовнішні ключі визначених користувачем типів і відповідних їм інформаційних схем. Пара зовнішніх ключів «тіп-схема» формує складовою первинний ключ запису в таблиці Defined_Types_To_Schemas, ніж контролюється унікальність включення типу в одну й ту саму схему.
Для детального опису перелічуваних, селективних і агрегатних типів додатково використовуються таблиці Enumeration_Constants, Select_Types і Aggregate_Types. Таблиця Enumerations_Constants містить списки можливих значень для кожного перечислимого користувальницького типу. Її стовпці зберігають символьні значення перечислимого типу і зовнішній ключ відповідного запису типу в таблиці Defined_Types. Аналогічним чином, таблиця Select_Types представляє списки базових типів, що входять у визначення кожного конкретного селективного типу, у вигляді зовнішніх ключів записів типів в таблиці Defined_Types. У стовпцях таблиці агрегатних типів Aggregate_Types міститься інформація про тип агрегату (ARRAY, LIST, SET або BAG), базовому типі його елементів у вигляді зовнішнього ключа відповідного запису в таблиці Defined_Types, дозволених значеннях нижньої і верхньої меж агрегату, ознаках допустимості наявності унікальних і невизначених елементів .
Таблиця класів Entities призначена для представлення об'єктних типів інформаційної схеми, зареєстрованої в базі даних. Її стовпці зберігають первинні ключі записів і унікальні імена сутностей. Аналогічно визначаються типами, прив'язка класів до схеми здійснюється через окрему таблицю відповідності Entities_To_Schemas. Для реконструкції відносин наслідування між класами використовується таблиця Inheritance_Relations, в якій дані відносини представлені парами зовнішніх ключів записів класів батьків і нащадків в таблиці Entities. Оскільки мова EXPRESS допускає множинне спадкування з ознаками AND або ANDOR, важливо мати альтернативне подання ієрархії наслідування у вигляді множин всіх батьківських класів, дані яких включаються до конструюються об'єкти складних класів. Для цієї мети використовується таблиця Complex_Entities. Для однаковості обробки об'єктів прості класи також представляються записами цієї таблиці. Таблиця Complex_Entities_To_Entities зберігає всі відповідності складних класів батьківським класам у вигляді пари зовнішніх ключів записів у таблицях Complex_Entities і Entities.
Нарешті, таблиця атрибутів Attributes містить стовпці для представлення імені атрибута, класу, в якому даний атрибут визначається (або перевизначається), у вигляді відповідного зовнішнього ключа запису в таблиці Entities, типу атрибуту у вигляді зовнішнього ключа запису в таблиці Defined_Types, ознаки обов'язковості значень і контексту використання (EXPLICIT, DERIVED або INVERSE).
На закінчення відзначимо, що наведена схема досить зручна для реалізації проміжного об'єктно-реляційного шару в рамках схемо-незалежної і змішаної стратегій безпосередньо засобами реляційної СУБД. Разом з тим, можливий ряд її модифікацій, пов'язаних з іншими способами реляційного представлення метамоделі EXPRESS шляхом використання альтернативних патернів відображення прикладних об'єктно-орієнтованих моделей, розглянутих вище.

7. Реалізація проміжного об'єктно-реляційного шару в

середовищі Oracle 9

В даний час в рамках проекту створення програмної платформи для інтеграції програм ведеться розробка проміжного об'єктно-реляційного шару загального призначення. Об'єктно-реляційний шар призначений для роботи з довільними прикладними об'єктно-орієнтованими даними, моделі яких описані мовою EXPRESS.
Для інтегровних додатків об'єктно-реляційний шар надає програмні об'єктно-орієнтовані інтерфейси доступу до прикладних даними на деяких популярних мовах реалізації). Організація цих інтерфейсів слід перерахованим вище принципам прозорого маніпулювання збереженими даними, декларованим Маніфестом об'єктно-орієнтованих баз даних. Інтерфейси надають функціонально розвинений набір операцій для маніпулювання збереженими і тимчасовими об'єктами, включаючи операції створення, модифікації, видалення об'єктів, навігації по їх односпрямованим і двонаправленим асоціативним зв'язкам та вибірки об'єктів на основі мови запитів. Запити базуються на конструкції QUERY мови EXPRESS, що дозволяє задати довільний предикат на безлічі об'єктів і відібрати ті з них, які задовольняють умові даного предиката. Інтерфейси передбачають кілька песимістичних і оптимістичних моделей транзакцій з різними способами ізоляції на рівні окремих прикладних об'єктів і самостійних об'єктних популяцій, змістовних для колективних сесії користувачів та беруть участь у них додатків.
По специфікації дані інтерфейси сумісні з відповідними частинами міжнародного інформаційного стандарту за інтероперабельності STEP і тому забезпечують інтегрованість широкого класу успадкованих і знову створюваних програмних систем наукового та промислового призначення.
В якості сховища даних реалізація об'єктно-реляційного шару передбачає використання реляційних СУБД зі схемами, заснованими на розглянутих вище патернах об'єктно-реляційного відображення. При цьому функції з управління транзакціями, вирішення запитів, контролю цілісності даних, управління версіями і контролю прав доступу розподіляються між сервером об'єктно-реляційного шару, через який безпосередньо взаємодіють програми, і реляційної СУБД, яка виступає в ролі вторинного сховища даних.
Найважливішими функціями, реалізованими безпосередньо засобами реляційної СУБД, є операції маніпулювання збереженими об'єктами та виконання простих об'єктних запитів. З цією метою на мові PL / SQL розробляються пакети програм, що емулюють об'єктно-орієнтовані інтерфейси доступу до даних шляхом надання функціональних засобів для створення, модифікації, пошуку і видалення об'єктів. Оскільки повна підтримка об'єктної мови запитів засобами реляційної СУБД представляється проблематичним з урахуванням різноманітності імперативних конструкцій мови EXPRESS, пакети програм виконують найпростіші види запитів на основі збережених об'єктних ідентифікаторів (PID), об'єктних типів і навігаційних маршрутів у вигляді графів переходів по асоціативних зв'язків типізованих об'єктів. Підтримуючи кешування об'єктів, посередник у ряді випадків дозволяє запити самостійно, а іноді переадресовує їх реляційної СУБД. При цьому відбувається редукція клієнтського запиту, поданого в загальній формі, до запиту спрощеного виду, що розширює безліч об'єктів і здійсненного пакетом програм реляційної СУБД. Результати потім обробляються посередником з метою виключення об'єктів, отриманих в результаті інтерпретації спрощеного запиту і не задовольняють вихідному.
Оскільки вибір стратегії відображення для реалізації об'єктно-реляційного шару подібної функціональності вкрай неоднозначний з урахуванням різноманітності потенційних додатків, передбачається реалізація та підтримка декількох альтернативних стратегій, а саме: схемо-незалежного, схемо-залежного і BLOB підходів. Вони базуються на тих чи інших поєднаннях розглянутих вище патернів ОР відображення і використовують власні пакети програм на PL / SQL для реалізації базової функціональності об'єктно-реляційного шару. Хоча всі пакети реалізують семантично еквівалентні набори операцій для маніпулювання об'єктами і їх пошуку, їх зовнішні інтерфейси не допускають уніфікацію в силу обмежених можливостей мови SQL при формуванні клієнтських запитів з боку об'єктно-реляційного посередника для специфічних реляційних схем подання об'єктно-орієнтованих моделей даних. Для адаптації посередника до інших об'єктно-реляційних стратегіям в його архітектурі передбачені спеціальні компоненти-адаптери, що забезпечують необхідну віртуалізацію сховищ даних. Кожен адаптер реалізується з урахуванням специфіки конкретного ОР відображення.
В якості цільової платформи реалізації проміжного об'єктно-реляційного шару обрана СУБД Oracle9.
7.1 Схема-незалежна стратегія
Розроблена схемо-незалежна стратегія полягає в застосуванні узагальнених патернів AllClasses-OneTable, Attribute-Table, GenericAssociation, GenericSelect, GenericAggregate для відображення схем, класів і атрибутів, а також патерну подання відповідних метаданих прикладної моделі реляційними таблицями.
Реалізовані в середовищі Oracle9 PL / SQL пакети забезпечують виконання всього базового набору операцій зі збереженими об'єктно-орієнтованими даними і запитів до них. Узагальнена, незалежна від конкретних прикладних моделей реалізація PL / SQL процедур і функцій заснована на спільному одночасному використанні даних і метаданих, що зберігаються в системах таблиць відповідно до перерахованих патернами відображення. Наведемо опис основних пакетних методів для об'єктно-реляційного відображення в якості ілюстрації схемо-незалежної стратегії.
Пакет lb_defined_types для роботи з метаінформації про користувача типах даних, визначених EXPRESS схемою:
· Procedure Register_Defined_Type - реєстрація в базі даних користувальницького типу схеми;
· Procedure Save_Enum_Type - збереження метаданих для перечислимого типу;
· Procedure Save_Select_Type - збереження метаданих для селективного типу;
· Procedure Save_Aggregate_Type - збереження метаданих для агрегатного типу;
· Function Get_Type - видача метаінформації про користувальницький типі даних.
Пакет lb_entity призначений для роботи з метаінформації, що відноситься до об'єктним типам EXPRESS схеми:
· Function Register_Entity - реєстрація об'єктного типу схеми;
· Procedure Save_Attribute - збереження метаданих для атрибуту, що визначається в реєстроване об'єктному типі;
· Procedure Save_Inheritance_Relations - збереження інформації про підтипах і супертіпа реєстрованого об'єктного типу;
· Function Add_Entity_From_Schema - експортування інформації про об'єктному типі з іншої схеми;
· Function Get_Entity - видача метаінформації про об'єктному типі;
· Function Get_Attribute - видача метаінформації про атрибуті, визначеному в об'єктному типі схеми.
Пакет lb_instance призначений для роботи з даними: занесення даних в базу, а також для отримання даних з неї на основі запитів:
· Function Init_Instance - ініціація збереження об'єкта;
· Procedure Init_Attribute_List - ініціація збереження значень атрибутів об'єкта;
· Procedure Put_Simple_Attribute_ {R, I, S, B, L, E} - збереження значення атрибуту речового, цілочисельного, символьного, бінарного, логічного, перечислимого типу, відповідно;
· Procedure Put_Association - збереження значення атрибуту асоціативного типу;
· Function Put_Aggregate - ініціація збереження елементів агрегату;
· Function Put_Select - ініціація збереження селективного елемента;
· Procedure Put_Element_ {R, I, S, B, L, E} - збереження значення елемента агрегатної або селективної конструкції речового, цілочисельного, символьного, бінарного, логічного, перечислимого типу, відповідно;
· Procedure Get_Instances_By_ID - вибірка об'єктів за заданими ідентифікаторів;
· Procedure Get_Instances_By_Type - вибірка об'єктів по заданому типу;
· Procedure Get_Instances_By_Route - вибірка об'єктів по заданому навігаційного маршруту;
· Procedure Add_Route_Path - метод формування навігаційного маршруту;
· Procedure Get_All_Instances - вибірка всіх об'єктів;
· Procedure Delete_Instances - видалення об'єктів за заданими ідентифікаторами.
До початку роботи з прикладними даними відповідні таблиці метаданих повинні бути проініціалізувати. З цією метою розроблено CASE інструмент, що дозволяє автоматично згенерувати скрипт ініціалізації відповідних таблиць на мові PL / SQL за заданою EXPRESS специфікації прикладної моделі. Частковий даного скрипта для інформаційної схеми ActorResource представлений нижче.
declare
l_Sch_ID Schemas.sch_id% TYPE;
l_Ent_ID Entities.ent_id% TYPE;
begin
...
lb_defined_types.register_defined_type
('Label', 'string', l_Sch_ID);
lb_defined_types.register_defined_type
('ActorRole', 'Label', l_Sch_ID);
lb_defined_types.register_defined_type
('AddressTypeEnum', 'enumeration', l_Sch_ID);
lb_defined_types.save_enum_type ('OFFICE');
lb_defined_types.save_enum_type ('HOME');
lb_defined_types.save_enum_type ('USERDEFINED');
l_Ent_ID: = lb_entity.register_entity
('Organization', l_Sch_ID, false);
lb_entity.save_attribute ('Id', 'integer', 1 ,'','', 0, 'E');
lb_entity.save_attribute ('Name', 'Label', 2 ,'','', 0, 'E');
lb_entity.save_attribute
('Description', 'string', 3 ,'','', 1, 'E');
lb_entity.save_attribute
('Roles', 'aggregate', 4 ,'','', 0, 'E');
lb_entity.save_attribute
('Addresses', 'aggregate', 5 ,'','', 0, 'E');
lb_entity.save_attribute
('IsRelatedBy', 'OrganizationRelationship',
6, 'OrganizationRelationship', 'RelatedOrganizations', 0, 'I');
lb_entity.save_attribute
('Relates', 'OrganizationRelationship',
7, 'OrganizationRelationship', 'RelatingOrganization', 0, 'I');
lb_entity.save_attribute
('Engages', 'Person', 8, 'Person', 'EngagedIn', 0, 'I');
l_Ent_ID: = lb_entity.register_entity
('Address', l_Sch_ID, false);
lb_entity.save_attribute
('Purpose', 'AddressTypeEnum', 1 ,'','', 0, 'E');
lb_entity.save_attribute
('UserDefinedPurpose', 'string', 2 ​​,'','', 1, 'E');
lb_entity.save_attribute
('OfPerson', 'Person', 3, 'Person', 'Addresses', 0, 'I');
lb_entity.save_attribute
('OfOrganization', 'Organization',
4, 'Organization', 'Addresses', 0, 'I');
l_Ent_ID: = lb_entity.register_entity
('PostalAddress', l_Sch_ID, false);
lb_entity.save_inheritance_relations ('Address', false);
lb_entity.save_attribute
('AddressLines', 'aggregate', 1 ,'','', 0, 'E');
...
end;
При безпосередній роботі з даними адаптер схемо-незалежної стратегії здійснює динамічну трансляцію базових операцій маніпулювання об'єктами того чи іншого типу у відповідну послідовність викликів PL / SQL функцій і процедур. На наступному прикладі можна простежити логіку генерації подібних послідовностей. Аналогічним чином реалізуються операції модифікації, видалення та пошуку об'єктів на основі збережених ідентифікаторів, об'єктних типів і маршрутів навігації.
- Фрагмент вихідного файлу з даними у форматі ISO-10303-21
# 10 = POSTALADDRESS (. OFFICE., $,
('25, B. Kommunisticheskaya str., Moscow, 109004, Russia '));
# 11 = ORGANIZATION (770901001, 'ISP RAS', $,
('Research', 'Development', 'Teaching'), (# 10));
- Фрагмент PL / SQL скрипта для занесення даних в БД
DECLARE
type Agg_Level_Type is table of
Aggregates.agg_type% TYPE index by binary_integer;
type Agg_Level_ID is table of
Aggregates.agg_id% TYPE index by binary_integer;
l_Sch_ID Schemas.sch_id% TYPE;
l_Ent_ID Entities.ent_id% TYPE;
l_Ins_ID Instances.ins_id% TYPE;
l_Atr_ID Attributes.atr_id% TYPE;
l_Agg_Type Agg_level_Type;
l_Agg_ID Agg_level_ID;
...
BEGIN
...
l_Ent_ID: = lb_entity.get_entity ('Organization', l_Sch_ID);
l_Ins_ID: = lb_instance.init_instance
(L_Ent_ID, l_MO_ID, l_Rep_ID, '# 11');
lb_instance.init_attribute_list (l_Ent_ID);
l_Atr_ID: = lb_entity.get_attribute (1);
lb_instance.put_simple_attribute_i
(L_Ins_ID, l_Atr_ID, 770901001);
l_Atr_ID: = lb_entity.get_attribute (2);
lb_instance.put_simple_attrib_s
(L_Ins_ID, l_Atr_ID, 'ISP RAS');
l_Atr_ID: = lb_entity.get_attribute (4);
l_Agg_Type (1): = lb_defined_types.get_type
('ActorRole', l_Sch_ID);
l_Agg_ID (1): = lb_instance.put_aggregate (l_Agg_Type (1),
NULL, NULL, l_Atr_ID, l_Ins_ID, l_MO_ID, NULL, NULL);
lb_instance.put_element_s (0, 'Research',
NULL, l_Agg_ID (1), NULL);
lb_instance.put_element_s (1, 'Development',
NULL, l_Agg_ID (1), NULL);
lb_instance.put_element_s (2, 'Teaching',
NULL, l_Agg_ID (1), NULL);
l_Atr_ID: = lb_entity.get_attribute (5);
l_Agg_Type (1): = lb_defined_types.get_type
('Address', l_Sch_ID);
l_Agg_ID (1): = lb_instance.put_aggregate
(L_Agg_Type (1), NULL, NULL, l_Atr_ID, l_Ins_ID,
l_MO_ID, NULL, NULL);
lb_instance.put_association
(L_Ins_ID, l_Atr_ID, '# 10', 0, l_Agg_ID (1), NULL);
l_Ent_ID: = lb_entity.get_entity
('PostalAddress', l_Sch_ID);
l_Ins_ID: = lb_instance.init_instance
(L_Ent_ID, l_MO_ID, l_Rep_ID, '# 10');
lb_instance.init_attribute_list (l_Ent_ID);
l_Atr_ID: = lb_entity.get_attribute (1);
lb_instance.put_simple_attribute_e
(L_Ins_ID, l_Atr_ID, 'office');
l_Atr_ID: = lb_entity.get_attribute (3);
l_Agg_Type (1): = lb_defined_types.get_type
('Label', l_Sch_ID);
l_Agg_ID (1): = lb_instance.put_aggregate (l_Agg_Type (1),
NULL, NULL, l_Atr_ID, l_Ins_ID, l_MO_ID, NULL, NULL);
lb_instance.put_element_s (0, '25, B. Kommunisticheskaya
str., Moscow, 109004, Russia ', NULL, l_Agg_ID (1), NULL);
...
END;

7.2 Схема-залежна стратегія

Альтернативу розглянутому способу реалізації об'єктно-реляційного відображення становить розроблений варіант схемо-залежною стратегії, заснований на використанні патернів відображення класів і атрибутів OneInheritancePath-OneTable, Attribute-Column, ClassAssociation, ClassSelect і ClassAggregate. Даний варіант являє собою спробу оптимізувати реляційну схему для найбільш ефективної праці з даними всередині однієї прикладної модели. Подібна постановка задачі виникає досить часто на практиці і становить інтерес для додатків, що оперують з одного, можливо масштабної, міждисциплінарної прикладної моделлю. Зазначене поєднання патернів відображення призводить до великої кількості таблиць, необхідних для адекватного представлення об'єктно-орієнтованих даних. Однак при цьому воно забезпечує більш ефективну реалізацію базових операцій маніпулювання об'єктами. Паттерн OneInheritancePath-OneTable використовує переваги серіалізовать подання атрибутів конкретних класів і спрощує компоновку успадкованих атрибутів для об'єктів вибраних типів. Перераховані патерни відображення виключають багаторівневу непряму адресацію при доступі до таблиць атрибутів і забезпечують високу ефективність реалізації допоміжних операцій складання значень з таблиць атрибутів при читанні об'єктів і їх розсилку по відповідних таблиць при записі і модифікації об'єктів.
Реалізація адаптера посередника для схемо-залежною стратегії істотно відрізняється від реалізації схемо-незалежної стратегії. По-перше, реляційна схема для СУБД генерується відповідним CASE інструментом для кожної прикладної моделі, специфіковані мовою EXPRESS. Нижче представлений фрагмент опису такої схеми на мові SQL для прикладної моделі ActorResource, наведеної нижче. По-друге, одночасно зі схемою генеруються вихідні тексти пакету процедур на мові PL / SQL для маніпулювання об'єктами даної прикладної моделі. Кожна процедура пакету орієнтована на роботу з об'єктами певного типу і має специфічний для нього інтерфейс. Підтримка подібних збережених процедур з боку реляційної СУБД істотно спрощує реалізацію адаптера для посередника і дозволяє підвищити ефективність його роботи за рахунок компіляції відповідних директив маніпулювання об'єктами в середовищі самої СУБД. По-третє, не потрібно будь-яка робота з метаданими, оскільки організація таблиць даних слід структурним особливостям прикладної інформаційної моделі і дозволяє явно адресуватися до них при роботі.
- Створення таблиці для описувачів об'єктів схеми
ActorResource
CREATE TABLE actorresource_instance (
PID INTEGER DEFAULT 1 NOT NULL PRIMARY KEY,
Title VARCHAR2 (128) NOT NULL,
Entity VARCHAR2 (128) NOT NULL,
Model INTEGER NOT NULL,
Commentary VARCHAR2 (4000),
FOREIGN KEY (Model) REFERENCES model (PID)
ON DELETE CASCADE
);
CREATE SEQUENCE sq $ actorresource_instance;
CREATE UNIQUE INDEX i $ actorresource_title_model
ON actorresource_instance (Title, Model);
CREATE INDEX i $ actorresource_entity_model
ON actorresource_instance (Entity, Model);
CREATE INDEX i $ actorresource_model
ON actorresource_instance (Model);

- Таблиця для об'єктів типу Organization
CREATE TABLE actorresource_organization (
PID INTEGER DEFAULT 1 NOT NULL PRIMARY KEY,
Instance INTEGER NOT NULL,
Id_ INTEGER NOT NULL,
Name_ VARCHAR2 (255) NOT NULL,
Description_ VARCHAR2 (4000),
FOREIGN KEY (Instance) REFERENCES
actorresource_instance (PID) ON DELETE CASCADE
);
CREATE SEQUENCE sq $ actorresource_organization;
CREATE INDEX i $ actorresource_organization
ON actorresource_organization (Instance);
CREATE TABLE actorresource_organizat_3 (
PID INTEGER DEFAULT 1 NOT NULL PRIMARY KEY,
Parent INTEGER NOT NULL,
Element_Index1 INTEGER,
Element_Value VARCHAR2 (255),
FOREIGN KEY (Parent) REFERENCES
actorresource_organization (PID) ON DELETE CASCADE
);
CREATE SEQUENCE sq $ actorresource_organizat_3;
CREATE INDEX i $ actorresource_organizat_3
ON actorresource_organizat_3 (Parent);
CREATE TABLE actorresource_organizat_4 (
PID INTEGER DEFAULT 1 NOT NULL PRIMARY KEY,
Parent INTEGER NOT NULL,
Element_Index1 INTEGER,
Element_Value VARCHAR2 (128),
FOREIGN KEY (Parent) REFERENCES
actorresource_organization (PID) ON DELETE CASCADE
);
CREATE SEQUENCE sq $ actorresource_organizat_4;
CREATE INDEX i $ actorresource_organizat_4
ON actorresource_organizat_4 (Parent);
...

7.3 BLOB стратегія

Нарешті, третій розроблений варіант реалізації адаптера заснований на застосуванні BLOB & Text & XML_Encoding патернів для реляційного представлення об'єктів класів та їх властивостей. Цей варіант відтворює спрощену схему СН стратегії за рахунок упакованого представлення значень атрибутів об'єкта у вигляді бінарної чи текстового рядка. Самі рядки зберігаються як елементи записів у таблиці об'єктів BLOB_Instances. Як наслідок, таблиці подання простих і складних атрибутів відсутні. Модифікована таблиця Associations зберігає асоціації всіх видів і використовується для реалізації навігаційних запитів по них. З таблиць метаданих підтримуються лише Schemas, Entities, Entities_To_Schemas, Inheritance_Relations, Complex_Entities і Complex_Entities_To_Entities, записи яких відтворюють відносини спадкування класів у прикладній моделі і використовуються для реалізації запитів за типами об'єктів. Відповідний CASE інструмент дозволяє згенерувати скрипт ініціалізації таблиць метаданих по специфікації прикладної інформаційної моделі на мові EXPRESS.
Розроблений на мові PL / SQL пакет процедур надає базовий набір операцій маніпулювання об'єктами і їх пошуку по ідентифікаторах, типами і навігаційним маршрутами в рамках BLOB стратегії. Оскільки значення атрибутів об'єкта представлені в БД єдиної рядком, функції щодо упаковки і розпакуванні рядків цілком лягають на адаптер посередника. У силу цієї ж причини в рамках BLOB стратегії неможливе виконання більш тонких запитів на основі атрібутних властивостей об'єктів безпосередньо засобами СУБД.

8. Рекомендації використання

Таким чином, на основі виділених патернів проведена систематизація методів об'єктно-реляційного відображення. Патерни відображення інформаційних схем, класів, атрибутів, метаданих та їх поєднання призводять до істотних відмінностей в організації реляційних таблиць і способи реалізації проміжного об'єктно-реляційного шару. Одержувані рішення мають різною мірою ефективністю, гнучкістю й адаптованості до змін і розвитку прикладних моделей.
Так, наведений приклад реалізації схемо-незалежної стратегії об'єктно-реляційного відображення, заснований на фіксованій системі таблиць, може бути рекомендований для використання в додатках, що оперують одночасно з декількома перманентно змінюваними моделями або з масштабними промисловими моделями, що включають тисячі класів. Проте ефективність виконання запитів, а також базових операцій маніпулювання об'єктами при використанні даної стратегії виявляється низькою, оскільки їх реалізація пов'язана з необхідністю додаткового аналізу таблиць метаданих, а також складання значень атрибутів об'єктів з декількох таблиць при читанні та їх зворотного розсилки за таблицями при записі.
Частково компенсувати дані недоліки, а також скоротити кількість необхідних реляційних таблиць дозволяє спрощений варіант реалізації схемо-незалежної стратегії, заснований на представленні значень атрибутів, упакованих в єдину бінарну або текстовий рядок (BLOB) і зберігаються як елементи записів у таблиці об'єктів. Недоліком даної стратегії є неможливість безпосередньої реалізації запитів і базових операцій маніпулювання об'єктами засобами самої СУБД. Вся навантаження тут лягає на проміжний шар, що виконує операції пакування / розпакування рядків зі значеннями атрибутів. Реалізований варіант BLOB стратегії, описаний у цій статті, дозволяє розвантажити шар-посередник і виконати прості запити по ідентифікаторах об'єктів, їх типами, а також навігаційним маршрутами засобами СУБД, оскільки використовує додаткову систему таблиць для зберігання відносин спадкування та асоціативних зв'язків між окремими об'єктами.
Найбільш ефективну реалізацію запитів та операцій маніпулювання об'єктами забезпечує розроблений варіант схемо-залежною стратегії, заснований на серіалізовать поданні атрибутів конкретних класів. Дана стратегія рекомендується для використання в додатках, що оперують з одного прикладної моделлю, що включає кілька сотень класів. Її недоліками є велика кількість використовуваних таблиць, критичний для більшості реалізацій сучасних реляційних СУБД, чутливість до еволюції прикладної моделі, а також необхідність застосування CASE інструментарію для генерації реляційної схеми і процедур, що реалізують запити та операції маніпулювання об'єктами. Подібний інструментарій, який дозволяє істотно спростити супровід і адміністрування бази даних, що експлуатує дану стратегію об'єктно-реляційного відображення.
Таким чином, розробляється програмно-інструментальний комплекс надає розвинені засоби для ефективної організації проміжного об'єктно-реляційного шару в типових прикладних контекстах. Представлені рекомендації можуть служити конструктивною основою для вибору найбільш оптимальних рішень.

Висновок
У цій роботі ми з'ясували, що значення мови EXPRESS полягає в описі інформаційних моделей.
Мова EXPRESS:
· Спирається на об'єктно-орієнтований підхід
· Використовує розбиття на ієрархічні рівні
Мова EXPRESS може бути використаний двома шляхами:
1. пряме використання алгоритмів мови EXPRESS; застосування програмних засобів, а також використання оболонки EXPRESS, за допомогою якої створюється інформаційна модель
2. моделювання понять і функціональних (інформаційних) зв'язків окремо; проектування інформаційної моделі включає 3 етапи:
А) інформаційне моделювання
Б) функціональне моделювання
В) програмна реалізація
Другий шлях є найбільш кращий для CALS, тому що є поділ функціональних обов'язків.
Інформаційна модель мовою EXPRESS описується за допомогою схеми, яка може включати до свого складу такі елементи:
1) опис типів
2) опис констант (введення постійних)
3) створення правил
4) функції
5) процедури
Функції та процедури необхідні для перевірки правил, для обчислення якихось змінних.
Для опису обмежень у EXPRESS вводяться логічні функції, їх називають глобальними правилами. Користувач найчастіше працює з локальними правилами.
Мова EXPRESS включив 2 особливості, яких немає в інших програмних засобів:
1) механізм множинного спадкування (генетичний механізм). За допомогою оголошень можна вказати список сутностей, які є предками цієї сутності, від якої вона успадковує властивості: атрибути, правила, алгоритми, постійні і т.д. EXPRESSследованіе здійснюється транзитивній (значить виконуються логічні операції, в результаті яких змінюються властивості у взаємодіючих об'єктів).
2) Використання механізму мутації. При наявності в одній схемі декількох підтипів певної сутності вважається, що в популяції цієї сутності можливі об'єкти з характерними властивостями.

Список використаних джерел
1. В.П. Іванніков, С.С. Гайсарян, К.В. Антипин, В.В. Рубанов. Об'єктно-орієнтоване оточення, що забезпечує доступ до реляційних СУБД. / / Праці Інституту системного програмування РАН, том 2, 2001, c. 89-114.
2. Судів Є. В., Левін О. І., Давидов А. М., Барабанов В. В. Концепція розвитку CALS-технологій у промисловості Росії. М.: НДЦ CALS-технологій «Прикладна логістика», 2002.
3. Ю. Шрейдер. "Соціальні аспекти інформатики" / / Науково-технічна інформація, Серія 2, 1989, # 1.
4. Володимир Пржиялковского. "Чари нового програмування" / / Директору Інформаційної Служби (ComputerWorld), 2000, # 3
5. Кнорін Л.В. "Природа слова в Універсальному Мові Ньютона" / / Науково - технічна інформація, Серія 2, 1994, # 9.
Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
201.2кб. | скачати


Схожі роботи:
Математичні методи опису моделей конструкцій РЕА
Мова опису задач SITPLAN-2
VHDL - мова опису апаратних засобів компютера
Мова гіпертекстової розмітки HTML у розробці інформаційних систем
Дорожні чеки American Express
Поштовий клієнт Outlook Express
Система електронного зв язку Microsoft Outlook Express
Використання програми Outlook Express для роботи з електронною поштою
Правове регулювання створення та використання інформаційних технологій інформаційних систем
© Усі права захищені
написати до нас