asyan.org
добавить свой файл
1 2 3
Запити, фільтри, використання

та функціональне призначення

 

Що таке фільтр

Довідка (Help) дає визначення поняттю “фільтр” так: “Набір умов, які застосовуються для добору підмножини записів чи для сортування записів. У Microsoft Access існують фільтри чотирьох типів: фільтр по виділеному фрагменту, звичайний фільтр, розширений фільтр і фільтр по вводу.” У свою чергу, умова відбору визначається як “набір обмежувальних умов, наприклад, = "Україна" (означаюче, що потрібно строкове значення "Україна") чи > 30000, використовуваних для висновку визначеного набору записів при створенні чи запиту фільтра.”

Насправді фільтр — це просто логічний вислів. Фільтрація таблиці — це добір тих рядків таблиці, для яких відповідне вираження істинне. Ю.Шафран визначає фільтр як логічне вираження. Потрібно тільки пояснити, як воно будується з “умов”. А для цього необхідно розібратися, що таке логічний вислів.

^ Арифметичні і логічні вираження

Help (довідка) визначає вираження так: “Будь-яка комбінація операторів, констант, значень текстових констант, функцій, імен полів, елементів керуваннячи властивостей, результатом якої є конкретне значення.”

Дане визначення є досить складним і не зовсім вірним. Що таке комбінація операторів, констант і т.д.?

Спробуємо знайти більш конструктивне визначення. Щоб не захаращувати виклад непринциповими деталями, ми обмежимося випадком, коли в таблиці всі атрибути — числові (тобто в клітках таблиці можуть стояти тільки числа).

Як арифметичні, так і логічні вираження будуються з деяких “цеглин” за допомогою визначеного набору операцій. У випадку арифметичних виражень “цеглинами” служать числа й атрибути (інших “цеглин” ми для простоти не розглядаємо), а з'єднують їхні звичайні арифметичні операції. Формально арифметичні вираження визначаються так.

  1. Будь-яке число чи атрибут є арифметичним вираження.

  2. Якщо A — арифметичне вираження, то (A) — теж арифметичне вираження.

  3. Якщо А и В — арифметичні вираження, то вираження А+В, А–В, А*В, А/В и А**В теж є арифметичними.

  4. Інших арифметичних виражень немає.

От приклади арифметичних виражень: 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.

  1. Всякий атом є логічне вираження.

  2. Істина і Неправда — логічні вираження.

  3. Якщо X — логічне вираження, то вираження, те (X) — теж логічне вираження

  4. Якщо Х и У — логічні вираження, то вираження Х AND Y, Х OR Y і NOT Х теж є логічними.

  5. Інших логічних виражень немає.

От приклади логічних виражень: NOT х = 7, (х = 2+2) AND у > 2*(х+3).

Тепер переходимо до значень виражень. Значеннями логічних виражень є Істина і Неправда.

Спочатку визначимо значення атомів. Для цього всім атрибутам додамо числові значення й обчислимо значення арифметичного вираження, що входить в атом. Символи =, <>, < і > інтерпретуються як стандартним образом, як знаки порівняння чисел. Атом приймає значення Істина, якщо істинно відповідне порівняння, у противному випадку значення атома Неправда. Наприклад, якщо значення х и у є, відповідно, 7 і 8, то значенням атома х=х+2*у буде Неправда, тому що насправді 7 не дорівнює 23.

Для обчислення значення логічного вираження, що не є атомом, служать так називані таблиці істинності. Вони дозволяють обчислити значення логічного вираження, якщо відомі значення його підвисловлень. От таблиця істинності для операції AND.


Х

Y

Х AND Y

Істина

Істина

Істина

Істина

Неправда

Неправда

Неправда

Істина

Неправда

Неправда

Неправда

Неправда

Она показывает, как, зная значения выражений Х и Y, вычислить значение выражения Х AND Y.

А вот таблицы истинности для OR и NOT:

Х

Y

Х OR Y

Істина

Істина

Істина

Істина

Неправда

Істина

Неправда

Істина

Істина

Неправда

Неправда

Неправда




Х

NOT Х

Істина

Неправда

Неправда

Істина

Але і цього ще недостатньо: потрібно, як і для арифметичних операцій визначити порядок виконання логічних операцій, інакше кажучи, визначити їхнє старшинство. Самої старший вважається операція NOT (тобто у вираженні без дужок вона виконується першої), потім йде операція AND, потім операція OR.

Тепер, знаючи значення атомів, ви можете за допомогою цих таблиць обчислити значення будь-якого вираження, побудувавши для нього свою таблицю істинності. Як приклад побудуємо таку таблицю для виражень NOT (Х OR Y) і NOT X OR Y

Х

Y

Х OR Y

NOT (Х OR Y)

NOT Х

NOT X OR Y

Істина

Істина

Істина

Неправда

Неправда

Істина

Істина

Неправда

Істина

Неправда

Неправда

Неправда

Неправда

Істина

Істина

Неправда

Істина

Істина

Неправда

Неправда

Неправда

Істина

Істина

Істина

Мова алгебри логіки, що фактично описаний вище, виник як попытка формалізувати природну мову. Дійсно, у природних мовах ми теж зустрічаємося з подібними конструкціями, наприклад у російській мові. Там аналогами логічних виражень є оповідальні пропозиції, аналогами атомів – прості оповідальні пропозиції, а аналогами логічних операцій – слова И, ЧИ, НЕМАЄ й ін. Звичайно, аналогія тут далеко не повна, але усе-таки вона дозволяє зрозуміти основні ідеї алгебри логіки.

Справді, коли щира пропозиція “На вулиці ЧИ стемніло в мене утомилися ока”? Коли істинно хоча б одне з пропозицій “На вулиці стемніло” чи “у мене утомилися ока”. Таким чином, у даному ЧИ випадку діє аналогічно операції OR (правда, в інших ЧИ фразах може вживатися в іншому змісті). Точно так само союз И можна вважати аналогом операції AND. Наприклад, фраза “Заграла музика И в зал увійшла вона” щира якщо і тільки щирі обидві її складові частини: “заграла музика” і “у зал увійшла вона”. ЧИ НЕ НІ часто виступає аналогом операції NOT. Скажемо, пропозиція “я НЕ знаю цієї людини” істинно в тих випадках, коли помилкова фраза “я знаю цієї людини”.

Треба, звичайно, розуміти, що формальна логіка доставляє нам досить грубий зліпок природної мови. Приміром, з погляду формальної логіки вираження X AND Y і Y AND X рівносильні в тім змісті, що істинність одного з них завжди означає й істинність іншого (цю властивість називають комунікативністю операції AND). Однак чи рівносильні в людському сприйнятті фрази “заграла музика И в зал увійшла вона” і “у зал увійшла вона И заграла музика”? А для фрази “я знаю цієї людини” запереченням (у звичайній мові) буде не тільки фраза “я не знаю цієї людини”, але і фрази “я знаю не цієї людини” і “не я знаю цієї людини”.

Звичайно логіку визначають як науку про правильні міркування. На наш погляд, це не зовсім вірно. В обчислювальній науці і, особливо, у теорії баз даних на перший план виходить інший аспект. Тут логіка використовується як формальна модель природної мови (це, власне кажучи, ми тільки що обговорювали). На це, звичайно, можна заперечити, що мова і мислення тісне зв'язані. Але адже мислення аж ніяк не зводиться до дедуктивного (тобто заснованим на доказах) методам.

Вище ми говорили про класичну, двозначну логіку, коли мається всього два значення істинності: ІСТИНА і НЕПРАВДА (уживаються ще й інші позначення, скажемо, ТА й НІ, чи TRUE і FALSE, чи 0 і 1). Крім двозначної логіки в принципі можна розглядати й інші логіки, наприклад тризначну, у якій крім ІСТИНА і НЕПРАВДА є ще і третє значення – НЕВІДОМЕ (у Access воно позначається як Null). Насправді в Access реалізована деяка мішанина з двозначної і тризначної логіки. Проте, для повного розуміння роботи Access нам оведеться торкнутися і тризначної логіки.

Наявність у Access фрагментів тризначної логіки зв'язане з тим, що в таблицях Access допускаються порожні клітки (так називані Null-значення). Наприклад, таблиця Знайомі може виглядати так:

Знайомі

Прізвище

Ім'я

По батькові

Іванов

Петро

 



следующая страница >>