онічні уявлення предикатів розрізняються, залежно від їх конкретних типів. У разі якщо предикат включає в себе тільки одне ім'я поля, він називається простим предикатом. p align="justify"> Приклад:
Нехай дано предикат T1.C/(a ​​+ 250) ОС (m - 100), де T1.C - ім'я поля C таблиці T1, ОС - допустима операція порівняння, а m і a - деякі змінні. Тоді його канонічне подання буде мати вигляд: T1.C ОС (a + 250) * (m - 100). До теперішнього моменту, що не пояснювалося, що саме дає приведення до канонічного виду. При використанні не перетвореного предиката у запиті, при скануванні таблиці, доводилося б обчислювати вираз T1.C/(a ​​+ 250) для кожного запису в таблиці. Розглянувши наведений вище приклад, стає очевидно що таке перетворення дозволяє мінімізувати кількість арифметичних операцій, за рахунок того, що арифметичні вирази, згруповані в правій частині, обчислюється тільки один раз, і, далі, звіряти вийшло значення з наступними значеннями поля T1.C. p align="justify"> Якщо предикат містить два імені поля (однієї або двох таблиць), то, після приведення до канонічного виду, даний предикат буде мати вигляд "ім'я_поля ОС некоторое_вираженіе", де некоторое_вираженіе буде являти собою вираз, що містить другий ім'я поля. Наведемо приклад такого предиката до перетворення:
30 * T1.A + (a + m)/T2.B ОС k
Тоді канонічне подання цього предиката буде мати вигляд:
. A ОС (T2.B * k - a - m)/(T2.B * 30)
При приведенні предикатів до канонічного поданням застосовуються обчислення константних виразів і ліквідація логічних заперечень.
Наступний клас логічних перетворень пов'язаний з приведенням до канонічного виду логічного виразу, що задає умову вибірки запиту. Ці перетворення направлені на виявлення суперечать один одному предикатів, об'єднаних кон'юнкція або диз'юнкцією, і, на їх подальше спрощення. Наприклад, предикат ((A> B) OR (B> = ​​A)) OR C = n, очевидно, перетвориться в предикат, що має наступний вигляд: TRUE OR C = n. Також, можуть застосуються логічні перетворення предикатів, що призводять до зменшення їх числа. Зрозуміло, що такі предикати повинні володіти певною логічної взаємозв'язком. Проілюструємо це на прикладі. Нехай дано предикат (A Спрощення запитів з вкладеними підзапитами
Вкладений подзапрос - це інструмент створення тимчасової таблиці, вміст якої витягується і оброб...