ираємо пов'язані з ним об'єкти класу Паспорт.
6. Для поточного поміченого об'єкту класу Шина за наступною зв'язку фрази links вибираємо пов'язаний з ним об'єкт класу Стандарт.
7. Вибираємо поточний об'єкт класу Стандарт. Для поточного вибраного об'єкту класу Стандарт вибираємо значення поля НаіменованіеСтандарта і заносимо в буфер 1.
8. Вибираємо поточний об'єкт класу Паспорт. Якщо його немає, то очищаємо буфер 1, вибираємо наступний поточний об'єкт класу Шина і, якщо він є, переходимо до п. 4, а якщо його немає, то завершуємо виконання алгоритму.
9. Наступні частини фрази links пов'язують з поточним об'єктом класу Паспорт об'єкти підмножини Пок класу Показники і з поточним об'єктом Стандарт також об'єкти підмножини Пок класу Показники. Тому утворюємо по першому корелювати підзапитів підмножина, використовуючи алгоритм корекції, а потім, використовуючи алгоритм корекції для другого підзапиту, і отримуємо перетин підмножин двох корельованих підзапитів Пок.
10. За наступній зв'язку фрази links вибираємо пов'язані з поточним об'єктом класу Паспорт об'єкти безлічі Пок класу Показники і класу ПоказательПаспорта і робимо їх поточними. Якщо їх немає, то очищаємо буфер 1 і переходимо до п. 8.
11. Заносимо для цих об'єктів в буфер 2 значення полів НаіменованіеПоказателя, ЗначеніеВПаспорте.
12. Використовуючи останню зв'язок фрази links між класами Стандарт і підмножиною Пок класу Показники, за поточними об'єктам класів Стандарт, Показники шукаємо об'єкт класу Норми Продукції. Так як він є, то заносимо в буфер 2 його поля НіжняяНорма, ВерхняяНорма.
13. За значеннями буфера 2 перевіряємо умову фрази where. Якщо воно не виконане, то очищаємо буфер 2, вибираємо поточними наступні об'єкти класів Показники, Показник Паспорти і переходимо до п.11.
14. Якщо умова виконана, то переносимо буфери 1 і 2 в буфер виведення, очищаємо їх і переходимо до п. 8.
Розглянуті приклади демонструють можливість розробки алгоритму третього етапу по тексту ODQL-запиту з введенням стека для отримання всіх результатів запиту (див. [5]). Аналіз показує, що трудомісткість цього етапу відповідає оцінці 9 (тк), де m - кількість класів запиту, а k - очікувана кількість результуючих кортежів запиту.
6.Заключеніе
Введена організація даних за допомогою метауровня опису сутностей DIM дозволяє не тільки здійснити доступ до даних і маніпуляції з ними, а й реалізувати динаміку даних і типів. До того ж, організація зовнішніх індексів деяких таблиць метауровня реалізує введені для обчислення запитів індекс-вибірки класів і відносин класів DIM. Це призводить не тільки до зручного, ефективного способу конструювання запитів, але і достатньо ефективного способу обчислення запитів. Звичайно, в порівнянні з реляційної організацією даних час обчислення запитів дещо збільшиться, але по порядку обчислювальної складності запитом не будуть менш ефективні. До того ж підхід DIM дозволяє створити якості баз даних, які не мали реляційні СУБД. За нові якості треба платити. Для отримання коефіцієнта погіршення часу виконання запитів в даний час проводиться статистичне дослідження для різних платформ реалізації.
Список літератури
1. Писаренко, Д. С., Рубльов, В. С. Концепції взаємодії Динамічної інформаційної моделі DIM [Текст] / Д. С. Писаренко, В. С. Рубльов / / Актуальні ...