Відсутня інформація

У повсякденному житті часто доводиться стикатися з проблемою відсутності деякої інформації Дуже типові ситуації, коли, наприклад, дата народження не відома, Імя доповідача буде оголошено додатково, адреса особи в даний момент не відомий і тд Тому в системах баз даних повинен існувати механізм обробки подібних ситуацій На практиці найбільш типовий підхід до вирішення цієї проблеми (використовуваний, зокрема, в мові SQL, а значить, і в більшості комерційних продуктів) заснований на застосуванні невизначених значень (NULLзначеній) і тризначною логіки Наприклад, вага деталі, скажімо, з номером Р7, може бути не відомий, тому спрощено можна сказати, що її вага є невизначеним. У більш точному сенсі цей вислів означає наступне: а) відомо, що деталь існує б) безсумнівно, деталь має вагу в) її вага нам не відомий

Розглянемо цей приклад більш докладно Ясно, що ми не можемо помістити справжнє значення ваги деталі в атрибут WEIGHT кортежу, що описує

деталь з номером Р7 Отже, все, що залишається, – помітити або якось позначити,що значення атрибута WEIGHT цього кортежу є невизначеним Надалі наявність подібної мітки буде

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

практиці подібні

вираження дійсно широко використовуються Але слід чітко розуміти, що подібні вирази неформальні і кілька неточні, оскільки кажучи, що значення атрибута WEIGHT в кортежі є невизначеним або дорівнює NULL, ми насправді маємо на увазі, щокортеж взагалі не містить ніякого значення атрибута WEIGHT Тому широко поширені вирази невизначене значення і значення NULL використовувати не рекомендується, оскільки це невизначене значення (NULL) на насправді не значення, а всього лише якась відмітка або позначення

У наступному розділі буде показано, що при порівнянні будь-яких скалярних значень, в яких-небудь з операндів не визначений (містить NULL), замість значення true (Істина) або false (Неправда) буде отримано логічне значенняunknown (Що не відомо) Причиною такого стану справ є прийнята нами інтерпретація позначення NULL як покажчика значення не відомо. Якщо значення змінної А не відомо, чи то не відомий і результат будь-якого її порівняння, наприклад виду А> в, причому незалежно від значення в (навіть якщо припустити, що значення змінної в, також не відомо) Зокрема, слід зазначити, що два невизначених значення (NULL) не можна вважати рівними одне іншому, тому, якщо обидві змінні, А і в, містять невизначені значення (NULL), результатом порівняння А = в завжди буде unknown, а не true Однак ці змінні не вважаються і нерівними, тобто результатом порівняння А чи не = B також буде unknown На цьому і засноване поняття тризначною логіки, оскільки концепція невизначених значень, принаймні, в загальноприйнятому сенсі, неминуче приводить нас до необхідності використання логіки з трьома логічними значеннями: true (істина), false (Неправда) і unknown (Що не відомо)

Перш ніж продовжити обговорення, автор даної книги вважає за необхідне ще раз заявити, що він повністю поділяє думку багатьох авторів про те, що невизначені значення (NULL) І тризначна логіка є помилковими поняттями і їм немає місця в чітких формальних системах, подібних реляційної моделі Наприклад, твердження про те, що деякий кортеж з даними про деталі взагалі не містить значення WEIGHT, за визначенням рівносильно твердженням, що розглянутий кортеж зрештою не є кортежем з даними про деталі рівним чином, це рівносильно твердженням, що розглянутий кортеж не є конкретизацією відповідного предиката Фактично такий з дозволу сказати, кортеж просто не є кортежем Це можна легко перевірити, ще раз прочитавши визначення терміна кортеж в розділі 6 Істина полягає в тому, що навіть сама спроба точно визначити, що собою являє схема, в якій застосовуються невизначені значення, дозволяє відразу ж показати, чому ідея невизначених значень не зовсім обгрунтована Внаслідок цього її також важко досить логічно пояснити Як зазначено в [1110], вона набуває хоч якийсь сенс, тільки якщо ви на багато що закриваєте очі і не надто обтяжує себе роздумами .

Тим не менш, не варто позбавляти читача можливості обговорити невизначені значення і тризначну логіку, тому в даний видання і включена дана глава

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

План глави такий Безпосередньо після введення в розділі 192 без зайвого недовіри і критики описуються основні ідеї, на яких базується концепція невизначених значень і тризначною логіки (Суть в тому, що неможливо строго і справедливо критикувати будь-які ідеї без їх попереднього опису) Потім в розділі 193 обговорюються деякі важливіші слідства викладених ідей і робиться спроба обгрунтувати думку автора про те, що поняття невизначених значень є помилковим У розділі 194 розглядаються слідства наявності невизначених значень в первинних і зовнішніх ключах Далі, в розділі 195, буде зроблено відступ від основної теми з метою опису найчастіше зустрічаються операцій в контексті невизначених значень і тризначною логіки – операцій зовнішнього зєднання У розділі 196 в дуже стислій формі описується альтернативний спосіб обробки відсутньої інформації з використанням спеціальних значень У розділі 197 коротко розглядаються аспекти мови SQL, що мають відношення до обговорюваної проблеми Нарешті, в розділі 198 наводиться короткий резюме

Ще одне попереднє зауваження Існує безліч причин, не дозволяю щих помістити справжнє значення в той чи інший атрибут кортежу, і невідомість цього значення – тільки одна з можливих причин Серед інших причин слід назвати такі, як значення не застосовується, значення не існує, значення не визначився але, значення не задано і тд [195] 2 Дійсно, в [62] Кодд запропонував вико ристовувати в реляційної моделі не один, а два види невизначених значень: одне з них – значення не відомо, а друга – значення не застосовується. У результаті в запропонованій Коддом реляційної моделі використовується вже не трьох-, а чотиризначна логіка Автор даної книги заперечує проти подібних пропозицій у цій і у всіх інших своїх роботах (наприклад, в [195]) У цьому розділі ми зосередимося тільки на одному виді невизначених значень, а саме – На невизначених даних з неіз відомим значенням На нього ми досить часто, але не завжди, будемо посилатися за допомогою на щью абревіатури UNK (Скорочення від unknown – невідомо)

Джерело: Дейт К Дж, Введення в системи баз даних, 8-е видання: Пер з англ – М: Видавничий дім «Вільямс», 2005 – 1328 с: Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*