ДЕЯКІ СЛІДСТВА викладеною схемою

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

Перетворення виразів

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

■&nbsp&nbsp&nbsp&nbsp Порівняння х = х не обовязково в результаті дасть true

У двухзначной логіці будь-яка змінна х завжди дорівнює самій собі У тризначній логіці змінна х не дорівнює самій собі, якщо вона містить величину UNK

■&nbsp&nbsp&nbsp&nbsp Логічний вираз р OR NOT (p) не обовязково в результаті дасть true

Тут р – це деяке логічне вираження У двухзначной логіці вираз р OR NOT (p) завжди має значення true (Тобто істинно), незалежно від значення р Але в тризначній логікою, якщо р одно unk, загальний вираз зводиться до unk OR NOT (unk), тобто до вираження unk OR unk, що в свою чергу спрощується до зна чення unk, а не true Цей окремий приклад демонструє добре відоме, але складне для розуміння властивість тризначною логіки, яке можна описати таким чином Якщо виконати два запити, Отримати відомості про всіх постачальниках з Лондона і Отримати відомості про всіх постачальниках не з Лон дона, а потім обєднати результати обох запитів, то НЕ обовязково будуть по лучени відомості про всіх постачальниках Щоб отримати список всіх постачальників, до двох запитам потрібно додати ще один: Отримати відомості про всіх постав щіках, які, можливо (May be), знаходяться в Лондоні (Іншими словами, в тризначній логіці виразом, який завжди приймає значення true, тобто яв ляется аналогом виразу р OR NOT (p) двухзначной логіки, служить висловлю ня р OR NOT (p) OR MAYBE (p))

Тому має сенс досліджувати наведений вище приклад трохи більш докладно Суть його, безумовно, полягає в тому, що в реальному світі стану знаходиться в Лондоні і знаходиться не в Лондоні є взаємовиключними і покривають весь спектр можливостей Однак у базі даних міститься НЕ сам реальний світ, а лише знання про реальному світі, і ці знання характеризуються трьома, а не двома можливими станами У розглянутому тут прикладі це такі стани: місце знаходження відомо, і це Лондон, місце знаходження відомо, і це не Лондон , місце знаходження не відомо . Більше того, як показано в [196], очевидно, що систему бази даних не можна опитувати про стан реального світу, їй можна задавати питання тільки про тих знаннях про реальний світ, які представлені в базі даних у вигляді значень Таке протиприродне властивість, наведене в прикладі, породжене тим, що користувач мислить у термінах реального світу, а система функціонує, спираючись виключно на свої знання про це реальному світі (Проте, автор даної книги підозрює, що описане невідповідність між предметними областями – це всього лише пастка, в яку дуже легко потрапити Відзначимо, що кожен окремий запит, описаний в попередніх розділах (в прикладах, вправах і тп), був сформульований в термінах реального світу, а не в термінах знань про реальний світ. І в цьому сенсі дана книга зовсім не є якимось винятком)

■&nbsp&nbsp&nbsp&nbsp Обчислення логічного виразу r JOIN r не обовязково в результаті дасть r

У двухзначной логіці зєднання відносини r з самим собою завжди дає в результаті вихідне відношення r (тобто операція природного зєднання є Ідемпотентний) Однак в тризначній логіці кортеж, що містить величину UNK в будь із позицій, не буде зєднаний сам з собою, оскільки (згідно [147]) операція зєднання, на відміну від операції обєднання, передбачає перевірку

на рівність в стилі вибірки, а не перевірку на рівність в стилі виключення дублікатів кортежів (Саме так?)

■&nbsp&nbsp&nbsp&nbsp Операція INTERSECT більше не є окремим випадком операції JOIN

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

■&nbsp&nbsp&nbsp&nbsp З рівності А = В AND В = З зовсім не обовязково треба рівність А = С Розгорнута ілюстрація цього слідства приведена в підрозділі Приклад з ба зою даних відділів і співробітників.

Таким чином, еквівалентності, допустимі в двухзначной логікою, не є еквівалентними в тризначній логіці Одне з найбільш серйозних наслідків подібних невідповідностей таке Як правило, в основі різнихзаконів перетворення, які використовуються для перетворення запитів в більш ефективну форму, лежить проста еквівалентність виду r JOIN r = r (див главу 18) Більш того, ці закони використовуються не тільки системою (У процесі оптимізації), а й користувачами (Коли вони намагаються відшукати найкращий спосіб запису конкретного запиту) Якщо ж вихідні еквівалентності стають недійсними, то побудовані на них закони перетворення також є недійсними А якщо закони перетворення недійсні, то і виконувані на їх основі перетворення також недійсні У свою чергу, недійсні перетворення запитів призводять до отриманню неправильних відповідей від системи

Приклад з базою даних відділів і співробітників

Для ілюстрації проблеми недійсних перетворень розглянемо більш докладно конкретний приклад (Цей приклад взятий з [199] за деякими незначущим для даного випадку причин він побудований на використанні реляційного числення, а не реляційної алгебри) Припустимо, що є проста база даних відділів і співробітників, показана на рис 191

Рис 191 База даних відділів і співробітників Розглянемо наступний вираз,

яке може бути частиною деякого запиту

DEPTDEPT# = EMPDEPT# AND EMPDEPT# = DEPT# (Dl)

Тут DEPT і ОМР є неявно заданими змінними області значень Для всіх кортежів в базі даних наведене умова зводиться до вираження unk AND unk, тобто просто до значення ІПК Проте, хороший оптимізатор, виходячи з того, що якщо А = У і В = С, то А = С, додасть до вихідного умові додатковий терм скорочення А З (Як описано в главі 18, розділ 184) В результаті буде отримано наступний вираз

DEPTDEPT# = EMPDEPT# AND EMPDEPT# = DEPT# (D1) AND DEPTDEPT# = DEPT# (Dl)

Це змінене вираз тепер зведеться до вираження unk AND unk AND false або просто до значення false (Для двох розглянутих кортежів в базі даних) У цьому світлі розглянемо такий запит

ЕМРЕМР # WHERE EXISTS DEPT (NOT (DEPTDEPT # = EMPDEPT # AND EMPDEPT # = DEPT # (D1)))

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

Спробуємо оцінити вплив сказаного вище на способи розширення систем з двозначної логікою відносно підтримки тризначною логіки У кращому випадку

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

Проблема інтерпретації

Тепер досліджуємо наведений вище приклад бази даних відділів і співробітників більш ретельно Оскільки співробітник з номером Е1 насправді приписаний до конкретного відділу, величина UNK представляє деякий реальне значення d У даному випадку значення d або дорівнює D1, або ні Якщо справедливо перше припущення, то проаналізуємо значення наступного виразу

DEPTDEPT# = EMPDEPT# AND EMPDEPT# = DEPT# (Dl)

Якщо d одно Dl, то для наведеного вище прикладу даних всі вираз має значення false, оскільки саме це значення дає обчислення першого терма вираження Якщо d не дорівнює D1, то все вираз також буде мати значення false, так як саме це значення буде отримано при обчисленні другого терма вираження – EMP DEPT # = DEPT # (Dl) Інакше кажучи, в реальному світі вихідне вираз завжди має значенняfalse,  незалежно від того, яке реальне значення представлено величиною UNK Звідси випливає висновок, що результат, правильний в контексті реального світу, і результат, правильний в тризначній логіці, – це не одне і те ж Інакше кажучи, тризначна логіка не відображає стан реального світу, тобто можна вважати, що тризначна логіка не є адекватним інструментом для інтерпретації стану реального світу

Примітка Ця проблема інтерпретації є далеко не єдиною проблемою, що виникає у звязку з використанням невизначених значень і тризначною логіки (докладне обговорення аналогічних питань можна знайти в [191] – [1911])

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

Додаткові відомості про предикатах

Припустимо, що відношення, яке є поточним значенням змінної відносини ОМР, містить тільки два кортежу: (E2, D2) і (Е1, UNK) Перше відповідає твердженням: У відділі з номером D2 є співробітник з номером Е2 , а другий – Існує співробітник з номером Е1 . (Нагадаємо, що затвердження Кортеж включає величину UNK означає, що насправді цей кортеж взагалі не містить ніякого значення в даній позиції кортежу Таким чином, кортеж (E1, UNK), якщо таке сумнівне позначення взагалі можна назвати кортежем, насправді слід розглядати як кортеж (Е1)) Інакше кажучи, ці два кортежу є конкретизація двох різних предикатів, а все ставлення є не відношенням, а лише свого роду деяким обєднанням (причому нереляційних обєднанням) двох різних відносин з двома різними заголовками (в даному окремому випадку)

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

“Існує співробітник з номером Е #, що працює у відділі з номером D#&quot

ОД Існує співробітник з номером Її.

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

Перефразуємо сказане вище Якщо значення даного атрибута в даному кортежі даного відношення представлено величиною UNK, то (повторимо це ще раз) у

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

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

Джерело: Дейт К Дж, Введення в системи баз даних, 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>

*

*