Проектування баз даних
16


Примітка 2. Якщо перетворення 2 виконано над багатовимірним запи­тувальним зв'язком з двома вхідними об'єктами, то йому можуть бути пос­тавлені у відповідність два тотожних запитувальних зв'язки:

Справді,

У процесі проектування перевагу необхідно віддати тому ланцюжку, який швидше можна виконати. У нашому випадку це перший ланцюжок. Визначитися щодо того, на виконання якого ланцюжка буде витрачено ме­нше часу, можна за допомогою аналізу алгоритмів реалізації обох варіан­тів. Проаналізуємо праву й ліву сторони наведених співвідношень. У пер­шому випадку за вибраним в інформаційному об'єкті «ЦЕХ» кодом цеху вибирають всі деталі з «ДЕТАЛЬ», якщо вони оброблюються в заданому цеху. Потім з цих деталей відфільтровують ті, тип виконання яких відпові­дає заданому.

Також змоделюємо алгоритм і проаналізуємо ліву частину співвід­ношення. Спочатку в об'єкті «ТИП ВИКОНАННЯ» вибирають заданий код типу виконання. Згідно з вибраним кодом відфільтровують усі деталі, які мають зазначений у запиті код виконання. Потім на другому кроці з цієї підмножини деталей вибирають лише ті, які обробляються в заданому в запиті цеху.                           ;

Такий аналіз алгоритму в реалізації обох ланцюжків показує, що для реалізації другого ланцюжка потрібно виконувати більші вибірки і перегля­дати більшу кількість записів, а отже, на це потрібно буде витратити більше машинного часу. Тому перевагу віддають правому ланцюжку, який зали­шають для наступного аналізу, а лівий відкидають.

Перетворення 3. Нехай у багатовимірному запитувальному зв'язку

Співвідношення між початковим і кінцевим об'єктами Т(Х1:У) = Б:1, то­бто порушено умову канонічності. Тоді запитувальний зв'язок потрібно пе­ретворити на тотожний ланцюжок запитувальних зв'язків:

Наприклад, є запит «По заданому МАГАЗИНУ видати інформацію про всі ЗАЯВКИ на ТОВАРИ з їх основними характеристиками».

У цьому запитувальному зв'язку виконуються такі типи співвідношень між об'єктами Т (ЗАЯВКА:ТОВАР) = Б:Б, Т (ЗАЯВКА:МАГАЗИН)  = Б: 1, тому його можна розкласти згідно з перетворенням 3:

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

Спочатку потрібно класифікувати запитувальні зв'язки на дві групи:

а) запитувальні зв'язки інформаційно-пошукового характеру (пошук, упорядкування, логічні порівняння, видача довідок);

б) запитувальні зв'язки, для реалізації яких необхідно виконувати роз­рахунки, пов'язані з обробкою кількох інформаційних масивів.

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

Другий тип запитів досить складно описувати розглянутими за прави­лами. Тому для другого типу запитів необхідно виконати аналіз і серед об'єктів, задіяних у запиті, виділити головні (ведучі) та довідкові.

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

Для запитів, пов'язаних з розрахунками, практично неможливо подати запитувальні зв'язки згідно з описаною методикою. Тому при їх формалізо­ваному описі необхідно моделювати алгоритм і подавати запитувальний зв'язок одразу у вигляді ланцюжка запитувальних зв'язків.

Розглянемо приклад: «Провести аналіз РОЗРАХУНКІВ за ВІДВАН­ТАЖЕНУ готову ПРОДУКЦІЮ і виявити боржників з-поміж її СПОЖИ­ВАЧІВ».

Головними, чи ведучими, в реалізації цього запиту будуть об'єкти «відвантаження» та «розрахунки». Порівнюючи екземпляри цих об'єктів, можна визначити, по яких операціях відвантаження не було виконано