asyan.org
добавить свой файл
  1 2 3

(По батькові Іванова ми не знаємо.)
Запитується, як повинна така БД відповідати на запит “ чиВірно, що в Петра Іванова по батькові Сергійович?” Ясно, що ні ТАК, ні НЕМАЄ отут не підходить. Необхідно ввести третє значення. Іншими словами, треба побудувати придатну тризначну логіку.

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

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

Ми можемо вважати, що атом приймає значення Невизначене як тільки невизначене значення хоча б одного атрибута, що присутні в описі атома, чи невичислимі значення арифметичного вираження.

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

Простіше всього з операцією NOT (НЕМАЄ). Ясно, що помилкове значення переходить у щире і навпаки, а невизначене залишається невизначеним. Виходить, таблиця для NOT виглядає так:


Х

NOT Х

Істина

Неправда

Невизначено

Невизначено

Неправда

Істина

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

Х

Y

Х AND Y

Істина

Істина

Істина

Істина

Невизначено




Істина

Неправда

Неправда

Невизначено

Істина




Невизначено

Невизначено

Невизначено

Невизначено

Неправда

Неправда

Неправда

Істина

Неправда

Неправда

Невизначено

Неправда

Неправда

Неправда

Неправда

Для двох порожніх клітинок зрозуміло, що значення повинні бути однаковими, і немає ніяких підстав написати там ні істину, ні неправду. Тому пишемо значення Невизначено. Остаточно таблиця набуде такого вигляду:

Х

Y

Х AND Y

Істина

Істина

Істина

Істина

Невизначено

Невизначено

Істина

Неправда

Неправда

Невизначено

Істина

Невизначено

Невизначено

Невизначено

Невизначено

Невизначено

Неправда

Неправда

Неправда

Істина

Неправда

Неправда

Невизначено

Неправда

Неправда

Неправда

Неправда

Для операції OR можна розмірковувати аналогічно. Тоді получиться така таблиця:


Х

Y

Х OR Y

Істина

Істина

Істина

Істина

Невизначено

Істина

Істина

Неправда

Істина

Невизначено

Істина

Істина

Невизначено

Невизначено

Невизначено

Невизначено

Неправда

Невизначено

Неправда

Істина

Істина

Неправда

Невизначено

Невизначено

Неправда

Неправда

Неправда


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


Х

Y

Х OR Y

NOT

(Х OR Y)

NOT Х

NOT X

OR Y

Істина

Істина

Істина

Неправда

Неправда

Істина

Істина

Невизначено

Істина

Неправда

Неправда

Невизначено

Істина

Неправда

Істина

Неправда

Неправда

Неправда

Невизначено

Істина

Істина

Неправда

Невизначено

Істина

Невизначено

Невизначено

Невизначено

Невизначено

Невизначено

Невизначено

Невизначено

Неправда

Невизначено

Невизначено

Невизначено

Невизначено

Неправда

Істина

Істина

Неправда

Істина

Істина

Неправда

Невизначено

Невизначено

Невизначено

Істина

Істина

Неправда

Неправда

Неправда

Істина

Істина

Істина


Відзначимо одну важливу обставину, якою ми будемо надалі користатися: якщо в логічному вираженні жоден з атомів не приймає значення Невизначене, те і все логічне вираження не може мати значення Невизначене. Можна сказати, що наша тризначна логіка є розширенням двозначної логіки за рахунок наявності додаткового значення атомів.

Ясно також і інше: узяте нами обмеження, що атрибути мають тільки числовий тип — зовсім несуттєво. Нам не важливо, який тип має атрибут, аби в системі була передбачена можливість обчислення логічного значення для атомів, куди входять дані атрибути. Зокрема, атрибути самі можуть мати логічний тип.

Нехай нам дане деяке відношення (тобто таблиця) з атрибутами a1, a2, … , ak... Нехай далі X — логічне вираження, не утримуючих інших атрибутів, крім a1, a2, … , ak (але, бути можуть, не всі ці атрибути). Візьмемо довільний рядок з даного нам відносини. Це значить, що кожен атрибут одержав відповідне значення. Підставимо в X ці значення атрибутів. Тоді наше логічне вираження також одержить деяке значення. Тим самим логічне вираження X може розглядатися як функція, що кожному рядку відносини однозначно зіставляє логічне значення (одне з двох чи більш, у залежності від того, скільки значна логіка використовується).

На час ми можемо навіть забути, що функція задається логічним вираженням, і дати наступне визначення.

Визначення 3. Результатом фільтрації даного відношення з атрибутами a1, a2, … , ak щодо заданої логічної функції f (a1, a2, … , ak) називається відношення, що складається з тих і тільки тих рядків вихідного відношення, для яких функція f приймає значення Істина.

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

Тут-те і зарита собака всіх непорозумінь з визначенням, що таке фільтр. Адже поки ми говоримо, що фільтр — це умова, що повинна виконуватися, чи висловлення, що повинне бути щирим, ми можемо мати на увазі будь-яку логічну функцію. Але комп'ютер не розуміє мови будь-яких функцій, він може працювати тільки мовою логічних виражень. У двозначній логіці це те саме, і автори підручників легко зсковзують з мови функцій на мову виражень (що нам не подобається, оскільки це ідейно різні речі). Але Access-те працює в тризначній логіці, а там це вже не одне і теж, і фільтром може бути тільки логічне вираження, а не якась міфічна чи умова висловлення. Подібне зіскользування є вже помилкою.

Отже, фільтром для даного відношення називається логічне вираження, що не містить атрибутів, що не входять у дане відношення.


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