71922 ullman174 (2)

71922 ullman174 (2)



• iv uni. L»Ał< i vn oyi-

tość FAl.SE, gdy wartością at jest FALSE. Przeciwne wartości przyjmuje wyrażenie x IS NOT NULL, jest ono prawdziwe, gdy wartość jc jest różna od

NULL.

5.9.2. Wartość logiczna UNKNOWN

W punkcie 5.1.2 omawiano wyrażenia zawierające operatory porównania, ich wartością były stałe logiczne FALSE lub TRUE. Takie wyrażenia można było łączyć spójnikami logicznymi AND, OR oraz NOT. Przed chwilą powstała inna sytuacja, gdy z powodu wystąpienia wartości NULL nic można było stwierdzić, czy wyrażenie jest prawdziwe, czy fałszywe i w związku z tym trzeba się posługiwać inną wartością logiczną: UNKNOWN. Należy zatem określić reguły otrzymywania wartości wyrażeń zc spójnikami logicznymi w przypadku kombinowania trzech różnych stałych logicznych.

Reguła jest łatwa do zapamiętania, jeśli przypiszemy stałym logicznym wartości liczbowe: potraktujemy true jako 1 (czyli zupełna prawda), false jako 0 (czyli zupełnie niepraw-da), a UNKNOWN jako 1/2 (czyli coś pomiędzy prawdą i fałszem). A zatem:

1.    Koniunkcja AND dwóch wyrażeń logicznych przyjmuje wartość stanowiącą minimum wartości połączonych wyrażeń. To znaczy x AND y ma wartość FALSE, jeśli x lub y ma wartość FALSE; ma natomiast wartość unknown, jeśli żaden z argumentów nie ma wartości false i co najmniej jeden z nich przyjmuje wartość UNKNOWN, oraz ma wartość TRUE jedynie wówczas, gdy oba argumenty x i y przyjmują wartość TRUE.

2.    Wartość alternatywy x ORy jest określona jako minimum wartości * i y. To znaczy .r ORy ma wartość TRUE, jeśli x lub y ma wrartość TRUF.; wartość UNKNOWN występuje, jeśli żaden z argumentów' nie ma wartości TRUF. i co najmniej jeden ma wartość unknown, z kolei x ORy ma wartość FALSE jedynie wówczas, gdy oba argumenty mają wartość FALSE.

3.    Negację wyrażenia logicznego obliczamy, odejmując od 1 wartość wyrażenia negowanego. To znaczy NOT x przyjmuje wartość TRUE, jeśli x ma wartość FALSE, wartość FALSE, gdy x ma wartość TRUE i wartość unknown, gdy a: jest równe UNKNOWN.

Na rysunku 5.19 przedstawiono tabelę opisującą wyniki trzech działań logicznych w dziewięciu kombinacjach trzech wartości logicznych, które można przyporządkować argumentom. Wartość ostatniego operatora NOT zależ}' tylko od argumentu .r.

Warunki SQL są zapisywane w klauzuli WHERE instrukcji selecl-from--wherc lub delete i dla każdej krotki z przeszukiwanej relacji jest określana

jedna z trzech wartości FALSE, TRUF. lub UNKNOWN. Do wyniku dołącza się tylko te krotki, dla których jest określona wartość true. natomiast pozostałe krotki, które powodują wyliczenie wartości FALSE lub UNKNOWN, są odrzucane. Powoduje to czasem nieoczekiwane sytuacje, o których pisano w ramce zatytułowanej Pułapki związane z NULL.

X

y

x AND y

* OR y

NOT x

TRUE

TRUE

TRUE

TRUE

FALSE

TRUE

UNKNOWN

UNKNOWN

TRUE

FALSE

TRUE

FALSE

FALSE

TRUE

FALSE

UNKNOWN

TRUE

UNKNOWN

TRUE

UNKNOWN

UNKNOWN

UNKNOWN

UNKNOWN

UNKNOWN

UNKNOWN

UNKNOWN

FALSE

FALSE

UNKNOWN

UNKNOWN

FALSE

TRUE

FALSE

TRUE

TRUE

FALSE

UNKNOWN

FALSE

UNKNOWN

TRUE

FALSE

FALSE

FALSE

FALSE

TRUE

RYSUNEK 5.19

Tabela wartościowania działań dla logiki trójwartościowej PRZYKŁAD 5.46

Załóżmy, że zapytanie będzie dotyczyć relacji:

Film(tytuł, rok, długość, czyKolor, nazwaStudia, producentC#)

i ma ono następującą postać:

SELECT *

FROM Film

WHERE długość <= 120 OR długość > 120;

Wygląda na to, że do wyniku powinny zostać dołączone wszystkie krotki relacji Film, ponieważ każdy film trwa albo co najmniej 120 minut, albo mniej niż 120 minut.

Jednakże zastanówmy się, co się stanie, jeśli w pewnych krotkach wartość NULL występuje jako składowa długości. Wówczas oba porównania długość <«= 120 i długość > 120 przyjmą wartość UNKNOWN. Z tabeli na rys. 5.19 odczytujemy, że wynik alternatywy dwóch UNKNOWN daje wartość UNKNOWN. Czyli dla każdej krotki, której składową długości jest NULL, wyrażenie z WHERE przyjmuje wartość UNKNOWN. Czyli ta krotka nie zostanie dołączona do wyniku zapytania. W tym przypadku zapytanie oznacza zatem: „wyszukaj wszystkie krotki relacji Film. których składowa długość jest różna od NULL”.


Wyszukiwarka

Podobne podstrony:
ullman174 (2) • iv uni. L»Ał< i vn oyi- tość FAl.SE, gdy wartością at jest FALSE. Przeciwne warto
Dwudziestolecie międzywojenne Jerzy Kwiatkowski (50) *1    P*   &nbs
sprawka2 J    Lp PÓMT.fCWA/^ Lćm&ToMIti ch£(Ąl ZLpMjy MgĘy iv UktADZiE ClfitoS?
scan0001 (12) Uxs?.V, uc y>j y £<- Al / łV/l / V * tf s° K pt t&Sl OywirAy iv e^tl/wĄ/W
ullman162 (2) 2. JZ& * IV OA£. Ł/nj e) Producent A kupuje producenta B. Należy w bazie zmienić w
skanowanie0003 (35) I.S. Ud~U0 +Vn-VjLRn+rd rd = IV UTh = £/, - A—+U2 -A__ S 1.67VRn -*1 P2 = 67fi ’
graficzna Keroofl GRAFIC2U) b AZS m2 O^-^S.5,0^    ~K,5nZ0/0 = (5,$)*--(&£!)= Al.
statystyka037 * IV, rTvT N ~A A Al~xT (*i -«y* n M " N-/I d. (00I. b ^Urld . d.
SANY2321 /- v -ł» _AL / »y— ■•-•—*. ✓ >> i*e ✓ / / V ✓ if *
Scan0001 (38) Wg stopnia zautomatyzowania 1 t <£> & ał * o <D « SU Brak urządzeń
marketing wykłady (6) 5 <r^ W> cu£i.-£^iv1C[ </vn" X (AKoWcs. j aLoosz ^OcLuMJ^uj
IMG066 (3) tu Ot)OJDBLUI Ąj wf i Wt ł W«l) *»^ł«¥ł»yłufl >ji ■*^*1 1(001=4)

więcej podobnych podstron