Запити, фільтри, використання та функціональне призначення
Що таке фільтр
Довідка (Help) дає визначення поняттю “фільтр” так: “Набір умов, які застосовуються для добору підмножини записів чи для сортування записів. У Microsoft Access існують фільтри чотирьох типів: фільтр по виділеному фрагменту, звичайний фільтр, розширений фільтр і фільтр по вводу.” У свою чергу, умова відбору визначається як “набір обмежувальних умов, наприклад, = "Україна" (означаюче, що потрібно строкове значення "Україна") чи > 30000, використовуваних для висновку визначеного набору записів при створенні чи запиту фільтра.”
Насправді фільтр — це просто логічний вислів. Фільтрація таблиці — це добір тих рядків таблиці, для яких відповідне вираження істинне. Ю.Шафран визначає фільтр як логічне вираження. Потрібно тільки пояснити, як воно будується з “умов”. А для цього необхідно розібратися, що таке логічний вислів.
Арифметичні і логічні вираження
Help (довідка) визначає вираження так: “Будь-яка комбінація операторів, констант, значень текстових констант, функцій, імен полів, елементів керуваннячи властивостей, результатом якої є конкретне значення.”
Дане визначення є досить складним і не зовсім вірним. Що таке комбінація операторів, констант і т.д.?
Спробуємо знайти більш конструктивне визначення. Щоб не захаращувати виклад непринциповими деталями, ми обмежимося випадком, коли в таблиці всі атрибути — числові (тобто в клітках таблиці можуть стояти тільки числа).
Як арифметичні, так і логічні вираження будуються з деяких “цеглин” за допомогою визначеного набору операцій. У випадку арифметичних виражень “цеглинами” служать числа й атрибути (інших “цеглин” ми для простоти не розглядаємо), а з'єднують їхні звичайні арифметичні операції. Формально арифметичні вираження визначаються так.
Будь-яке число чи атрибут є арифметичним вираження.
Якщо A — арифметичне вираження, то (A) — теж арифметичне вираження.
Якщо А и В — арифметичні вираження, то вираження А+В, А–В, А*В, А/В и А**В теж є арифметичними.
Інших арифметичних виражень немає.
От приклади арифметичних виражень: 7, х, 2+2, 2*x+3, 2*(х+3).
Маючи формальне визначення, ми можемо пояснити, чому, скажемо, вираження 2*(х+3) є арифметичним, а вираження 7*+8 арифметичним не є. Дійсно, Для першого з цих виражень, відповідно до правила 1, вираження х і 3 є арифметичними. Звідси, за правилом 2, випливає, що вираження (х+3) теж є арифметичним. За правилом 1, вираження 2 — арифметичне. Виходить, за правилом 3, і вираження 2*(х+3) — арифметичне. Що стосується вираження 7*+8, воно не арифметичне хоча б уже тому, що символ + вимагає арифметичних виражень по обидва боки від себе, а вираження ліворуч від нього виглядає так: 7*. У свою чергу 7* не є арифметичним, оскільки символ * теж по обидва боки вимагає арифметичних виражень, а праворуч просто нічого немає.
Приведене визначення арифметичного вираження конструктивно саме в тому змісті, що дозволяє прямо по тексту без обчислень визначити, арифметичне вираження перед нами чи ні.
Якщо всім атрибутам, що входять в арифметичне вираження, додати числові значення, символи +, – , *, / і ** проінтерпретувати, відповідно, як операції додавання, вирахування, множення, розподіли і зведення в ступінь, і визначити природним образом (тобто як учать у школі) порядок виконання цих дій, то дане арифметичне вираження одержить чисельне значення. Скажемо, якщо значення х и у є, відповідно, 7 і 8, то значенням вираження х+2*у є 23.
Таким чином, визначення того, чи є дане вираження арифметичним, і обчислення значення вираження — це два різних питання.
Перейдемо до визначення логічних виражень. Ми будемо вважати, що “цеглини” логічних виражень мають вид х? Т, де х – атрибут, Т – арифметичне вираження, а ? — один із символів порівняння: = (дорівнює), <> (не дорівнює), < (менше) чи > (більше). З'єднуються “цеглини” за допомогою логічних операцій AND, OR і NOT.
Як і для арифметичних виражень, ми хочемо дати формальне визначення. Спочатку визначимо найпростіші логічні вираження, чи атоми.
Визначення 1. Нехай х – атрибут, Т – арифметичне вираження. Тоді вираження х=Т, х<>Т, х<Т и х>Т називаються атомами.
Тепер можна формально визначити логічні вираження. Ми будемо позначати їх великими латинськими буквами.
Визначення 2.
Всякий атом є логічне вираження.
Істина і Неправда — логічні вираження.
Якщо X — логічне вираження, то вираження, те (X) — теж логічне вираження
Якщо Х и У — логічні вираження, то вираження Х AND Y, Х OR Y і NOT Х теж є логічними.
Інших логічних виражень немає.
От приклади логічних виражень: NOT х = 7, (х = 2+2) AND у > 2*(х+3).
Тепер переходимо до значень виражень. Значеннями логічних виражень є Істина і Неправда.
Спочатку визначимо значення атомів. Для цього всім атрибутам додамо числові значення й обчислимо значення арифметичного вираження, що входить в атом. Символи =, <>, < і > інтерпретуються як стандартним образом, як знаки порівняння чисел. Атом приймає значення Істина, якщо істинно відповідне порівняння, у противному випадку значення атома Неправда. Наприклад, якщо значення х и у є, відповідно, 7 і 8, то значенням атома х=х+2*у буде Неправда, тому що насправді 7 не дорівнює 23.
Для обчислення значення логічного вираження, що не є атомом, служать так називані таблиці істинності. Вони дозволяють обчислити значення логічного вираження, якщо відомі значення його підвисловлень. От таблиця істинності для операції AND.
Х | Y | Х AND Y
Істина | Істина | Істина
Істина | Неправда | Неправда
Неправда | Істина | Неправда
Неправда | Неправда | Неправда
Она показывает, как, зная значения выражений Х и Y, вычислить значение выражения Х AND Y.
А вот таблицы истинности для OR и