Примітка 2. Якщо перетворення 2 виконано над багатовимірним запитувальним зв'язком з двома вхідними об'єктами, то йому можуть бути поставлені у відповідність два тотожних запитувальних зв'язки:
Справді,
У процесі проектування перевагу необхідно віддати тому ланцюжку, який швидше можна виконати. У нашому випадку це перший ланцюжок. Визначитися щодо того, на виконання якого ланцюжка буде витрачено менше часу, можна за допомогою аналізу алгоритмів реалізації обох варіантів. Проаналізуємо праву й ліву сторони наведених співвідношень. У першому випадку за вибраним в інформаційному об'єкті «ЦЕХ» кодом цеху вибирають всі деталі з «ДЕТАЛЬ», якщо вони оброблюються в заданому цеху. Потім з цих деталей відфільтровують ті, тип виконання яких відповідає заданому.
Також змоделюємо алгоритм і проаналізуємо ліву частину співвідношення. Спочатку в об'єкті «ТИП ВИКОНАННЯ» вибирають заданий код типу виконання. Згідно з вибраним кодом відфільтровують усі деталі, які мають зазначений у запиті код виконання. Потім на другому кроці з цієї підмножини деталей вибирають лише ті, які обробляються в заданому в запиті цеху. ;
Такий аналіз алгоритму в реалізації обох ланцюжків показує, що для реалізації другого ланцюжка потрібно виконувати більші вибірки і переглядати більшу кількість записів, а отже, на це потрібно буде витратити більше машинного часу. Тому перевагу віддають правому ланцюжку, який залишають для наступного аналізу, а лівий відкидають.
Перетворення 3. Нехай у багатовимірному запитувальному зв'язку
Співвідношення між початковим і кінцевим об'єктами Т(Х1:У) = Б:1, тобто порушено умову канонічності. Тоді запитувальний зв'язок потрібно перетворити на тотожний ланцюжок запитувальних зв'язків:
Наприклад, є запит «По заданому МАГАЗИНУ видати інформацію про всі ЗАЯВКИ на ТОВАРИ з їх основними характеристиками».
У цьому запитувальному зв'язку виконуються такі типи співвідношень між об'єктами Т (ЗАЯВКА:ТОВАР) = Б:Б, Т (ЗАЯВКА:МАГАЗИН) = Б: 1, тому його можна розкласти згідно з перетворенням 3:
Зауваження: описуючи запити запитувальними зв'язками, необхідно керуватися такими правилами.
Спочатку потрібно класифікувати запитувальні зв'язки на дві групи:
а) запитувальні зв'язки інформаційно-пошукового характеру (пошук, упорядкування, логічні порівняння, видача довідок);
б) запитувальні зв'язки, для реалізації яких необхідно виконувати розрахунки, пов'язані з обробкою кількох інформаційних масивів.
Якщо запит має лише інформаційно-пошуковий характер, то його описують згідно з наведеною методикою у вигляді багатовимірного запитального зв'язку, перевіряють на відповідність канонічності і виконують відповідні перетворення.
Другий тип запитів досить складно описувати розглянутими за правилами. Тому для другого типу запитів необхідно виконати аналіз і серед об'єктів, задіяних у запиті, виділити головні (ведучі) та довідкові.
Головними, чи ведучими, будуть ті об'єкти, з перегляду яких починається реалізація запиту і дані яких використовуються в певних розрахунках. Довідковими є об'єкти, інформація яких використовується для довідкових цілей, наприклад для розшифрування табельного номера працівника відповідним прізвищем, ім'ям і по батькові при видачі на друк чи на екран відповідного вихідного повідомлення.
Для запитів, пов'язаних з розрахунками, практично неможливо подати запитувальні зв'язки згідно з описаною методикою. Тому при їх формалізованому описі необхідно моделювати алгоритм і подавати запитувальний зв'язок одразу у вигляді ланцюжка запитувальних зв'язків.
Розглянемо приклад: «Провести аналіз РОЗРАХУНКІВ за ВІДВАНТАЖЕНУ готову ПРОДУКЦІЮ і виявити боржників з-поміж її СПОЖИВАЧІВ».
Головними, чи ведучими, в реалізації цього запиту будуть об'єкти «відвантаження» та «розрахунки». Порівнюючи екземпляри цих об'єктів, можна визначити, по яких операціях відвантаження не було виконано