         20 

      

    20.1.  

      5  ,      
    .    5,  
,       , , , " 
 ", "    ", 
"     ".   
         . 
      5   ,    
 (   ),    
 (null-)   . ,   
,      .    
 : ,   ;    
;   ,    .  ,    
  ,       
     WEIGHT  ,  
 . ,      
    ,   ,    
  . 
    .   ,   WEIGHT " 
 "     " 
";          
 .      ,  
   ,     .  
" "    ,    
     . (   "" 
    null-.) 
        5,      
null-,  : ,      
,   -     (  
null),     unknown ()  
 true ()  false ().     
  null  " ".    
,    , ,   > ,  
   (  ,     ). 
  ,    null     
 , ,       null,   
  =     unknown,   true.  
null- (     )     
      : true 
(), false ()  unknown ().   ,   
 null-       
,     (three-valued logic,   
     3VL). 

     20.   543 

        5,       
   ,  null-     
         ,  
 .   ,    ,   
          
   .     ,  
      null-   
,        . 
       .       
     ,    
 null-   . (  ,   
         
 .)         
        ,   
null-  .      
     null-    
.         
  SQL.  ,  . 
       .     
  ; " "      
 .    ,  " ", 
"  "  .. [20.8]. ,  [4.4]   
     ,    null-:   
  " ",    " ".   
,   ,  ,   -,  
 .       
         (, [20.8]).   
       null-,   " 
",     ,   ,    
  UNK ( unknown  ). 

    20.2.     

           
      . 
  null- (.. UNK)     . 

       

       

    WEIGHT *  454, 

     WEIGHT    ,   .   
     UNK?     ? 
   ,         
UNK.  ,          
 UNK,        UNK.  
, ,  WEIGHT   UNK,    
      UNK. 

    WEIGHT + 454 WEIGHT - 454 WEIGHT * 454 WEIGHT / 454 454 + WEIGHT 454 - 
WEIGHT 454 * WEIGHT 454 / WEIGHT + WEIGHT - WEIGHT 

    544	 V.   

    (,    ,     
     . ,  WEIGHT - 
WEIGHT,     0 (),      
 UNK,    WEIGHT/0    UNK  
         . ,   
 ,  WEIGHT   UNK.) 
             
 ,      LTNK,   
   . 
         ISJJNK,      
  true,     UNK,   
false   .  ,   "   UNK". 
        IF_UNK.       
   ,     UNK.   
   UNK,   IF_UNK    
.  ,     UNK  
 ,    UNK. 
      ,    (IFJJNK)    
   (ISJJNK). ,  

    IF_UNK   (  !,   2 ) 

    (  !  2     /) 
  

    ( IF ISJJNK (!) THEN 2 ELSE ! ) 

    . ,   UNK     
  CITY   ,     

    EXTEND  ADD IFJJNK   (  CITY,   'City unknown')   AS PCY 

      ,    PCY   "City 
unknown"      ,    CITY  
 UNK. 

     

      ,     ,  
        UNK,   
 unknown   true mw false.    
   .  unknown,     
,         unk,  
"  ".      
 AND, OR  NOT    (   
 : t  true, ffalse, u  unk). 

    AND 
    t	u f	OR 
    t	u f	t 
    u	u f	u 
    f	f f	f 

    NOT 
    t	t t t 
    t	u u u 
    t	u f f 
    t 

    ,   = 3, = 4    UNK,    
    ( ) : 

     >  AND  > 	:	false 
     >  OR  > 	:	unk 
     <  OR  < 	:	true 
    NOT  (  -   )	:	unk 
    
      ,      AND, OR  NOT 
[20.12].       MAYBE (). 
     . 
    
    MAYBE 

     20,  	545 
    18      

         MAYBE,  
 "      50 000 , 
   (  )     18 
 1941 ".    MAYBE     
  : 

     WHERE MAYBE { JOB = 'Programmer' AND 
    DOB < DATE ('1941-1-18') AND SALARY < 50000.00 ) 

    (    ,     
 ,    .) 
       MAYBE       : 

     WHERE   (   ISJJNK   (  JOB  )   AND 
    DOB < DATE   1941-1-181)   AND 
    SALARY < 50000.00 ) OR ( JOB = ' Programmer' AND 
    IS_UNK   (  DOB  )   AND 
    SALARY < 50000.00 ) OR ( JOB = 'Programmer' AND 
    DOB < DATE ('1941-1-18') AND 
    ISJJNK ( SALARY ) ) OR	( ISJJNK ( JOB ) AND 
    ISJJNK   (  DOB  )   AND 
    SALARY < 50000.00 ) OR ( ISJJNK ( JOB ) AND 
    DOB < DATE   ('1941-1-18')  AND 
    ISJJNK ( SALARY ) ) OR ( JOB = 'Programmer' AND 
    ISJJNK ( DOB ) AND 
    ISJJNK ( SALARY ) ) OR ( ISJJNK ( JOB ) AND 
    ISJJNK ( DOB ) AND 
    ISJJNK ( SALARY ) ) 

    .        , 
  MAYBE     , 
    .  , ,   
   TKOEJDR_MAYBE (   ) [20.8]. (. 
 [20.12],       SQL.) 

     EXISTS  FORALL 

      7  EXISTS  FORALL     
OR  AND .  ,  R    77, 
72, ..., ; җ -,      
; f(T)  ,     ,   

    EXISTS   (  f (    )   ) 

        

    false OR  (  f (   Tl )   )   OR ... OR  (  f (   Tm )   ) . 

    ,  

    FORALL  (  f (    )   ) 

        

    true AND   (   f (   Tl  )   )   AND ... AND   (   f (   Tm )   ) . 

    ,   R   : 

    (       1,	2,	3	) 
    (       1,	2,	UNK	) 
    (  UNK,	UNK,	UNK	) 

      ,     ()  
     T[i] (   
).       . 

    546	 V.   

    true unk true true 
    false 
    unk 
    false 
    EXISTS	 (	T[3]   > 1  ) 
    EXISTS	 (	[2]   > 2  ) 
    EXISTS	 (	MAYBE   (   T[l]   > 3   )   ) 
    EXISTS	 (	IS__UNK   (   T[3]   )   ) 
    FORALL  ( [1] > 1 ) FORALL  ( T(2] > 1 ) FORALL  ( MAYBE ( [3] > 1 ) ) 
    UNK -   unfc 

      ,  UNK (   " 
")  ww? (  unknown)       , 
,       ,  unk  
  (,  ),     UNK   
 .       . 
,  X     " ". 
 X     : true, false  unk.  , 
 "X  unk"   ,    X 
   unk,    ,  "' UNK" 
,    Jf . 

        UNK 

      ,      UNK,    
,  UNK   . ,    , 
   null- - ,    
 , : 
         v  v e D   unk  true ( 
 false},   D     LINK. 
        ,    UNK,    
,    D,      ! 
      ,      UNK,  , 
 UNK,       
 ,     , 
   [4.1].  ,  ""      
       !       
  . 

      

       UNK    .  
    : , , 
,    ( LTNK    
      UNK    ). 
     , ,      . 
    ,    ,    
   ,       true, 
..        ,    
   false  unk.     
      MAYBE. 
       .   
 (  )   .  
         , 
       (, 
  

     20,  	547 

   ).   ,    
     UNK,   UNK   
  ,   .     ,  
,   UNK,         
 ? 
      [20.1]     .   
UNK,       ,        
   .    
 : "...      
...          
     .    
 " [20.1]. 
        ,     
.   ,      ,  
    . 
        //  t2        , 
         al  2  
        "" ( UNK)   
al = 2,   al  2  UNK. 
      ,    R     
   ,    ,    
   ,  . 
          
.       R1  R2  
  ,         
  /,   /      
 R1    R2 (   ). 
     ,       ( 
      ).  , 
 t   Rl INTERSECT R2    ,    
 -   R1  -   R2.  /   
Rl MINUS R2    ,     - 
  RI        R2.    
  , , ,    R1  R2   (, 
UNK),        Rl INTERSECT R2,   
       Rl MINUS R2  R2 MINOS Rl. 

      

         . 
    1.     R   UNK   , 
   R      ,   
  UN     .     
 R    UNK,     ( 
  INSERT  UPDATE),       UNK, 
  . 
    2.    (   INSERT  UPDATE)  
  R  ( ) .     
" "    . 

    548	 V.   


    20.3.     

        ,     
,    ,       
.           . 

      

     , ,   ,    
    true,       
    .      
. , ,      . 
    1.   =    true. 
             .  
       ,    UNK. 
    2.  OR NOT(p)   true. 
        .     " OR NOT(?>)" 
   true (.. ),    .   
,   ,     unk,    
  unk OR NOT(H?), ..   unk OR unk, ,   , 
   unk,   true. 
            
,    .    : "  
   "  "     
 ",       
,       .    
,       : "  
, ,  (maybe),   ". 
         , ,        
  "  "  "   "  
     ,    
   ,     .     
,    .      : 
" ,   ", " ,    
", " ".   (   [20.9]), 
,       ,    
      ,      
  .  "" ,   , 
 ,       ,   
        . 

    ,   ,    ,   
   ,     . ,   
 ,     ( ,   
..),     " ",     " 
  ".  ,     -   
  . 

     ,   ,   OR NOT{/?) OR MAYBE</>) 
      true     
OR ()   . 
    3.  R JOIN R    R. 
          R   
  R (..   .).   
,  

     20,  	549 

  ,  UNK   ,    
  ,   ,    ,   
 ,      . 
    4.   INTERSECT       JOIN. 
        ,      
,     ,  ,   
  . 
    5.  =   =      = . 
           . 
     , ,    ,  
    .     
   .  ,    
 ,       
  ,    R JOIN R=R.  , 
      (  ),   
 (    ""   
 ).      ,   
 .     ,  
  .   ,   
      . 

           

            
  (  [20.10]). ,     
    (. 20.1). 

    DEPT		 
    DEPT*		#	DEPT# 
    D2		1	UNK 
    
    . 20.1.        

    DEPT.DEPT# = EMP.DEPTt AND EMP.DEPT# = ' Dl' 

    (    ).       
     unk AND unk, ..    
unk.   , ""    ,    =    = 
,   = ,        =  ( 
   18).     

    DEPT.DEPT# = .    AND    . =   'Dl' AND    DEPT.DEPTtt =   'Dl' 

           unk AND unk AND false 
    false (      ). 
  , , ,  

    .* WHERE EXISTS DEPT 
    ( NOT ( DEPT.DEPT# = EMP.DEPT# AND EMP.DEPT# = 'Dl' ) ) 

   El,    " "  
 ,    ,     
" ". 
     ,  "" .  , 
,    ,    ( ) 
   ,      . 

    550	 V.   

           
       .    
        
 ,         
 ( ,       
).          
,  - ,    (+1)- 
    > 1. 

      

              
.    EJ    -   
(      UNK).  d  
  DEPT#   .     

    DEPT.DEPT* = EMP.DEPT* AND EMP.DEPT# =   'D1' 

  ,   d  D1  .  ,   
  false (  ),    DEPT.DEPT# 
= EMP.DEPT#   false,   ,  d    D1, 
     false (  ),   
 EMP.DEPT# = 'Di1   false.  ,   
      false,   ,  
    UNK.   ,  , 
    ,  ,    
,       !  ,     
  , ..  , ,   
      , 

    .       -  
null-   ,      
 (. [20.2-20.12]      ). 

    20.4.   

               
     (. [20.6, 20.7, 20.14, 
20.15]).         "" 
.      ,    
 ,        
,      null    
 ,      ,   
   .    . , 
        
         ( 
  ,  NULL    ). 

    ( S JOIN SP ) 
    UNION 
    ( EXTEND ( ( S [ S# ] MINUS SP [ S# ] ) JOIN S ) ADD NULL AS P#, NULL AS 
QTY ) 

       ,     . 
    null    #  QTY. 
         .   . 20.2.  
      ,    
  ,       
  .    . 20.2,  
,  , " "  ,   
   ( S5   ),      
 ""  . ,     
  . 

     20,  	551 

    s 
    S#		SNAME		STATUS		CITY				SP S#	#    CTY 
    32 S5		Jones Adams		10 30		Paris Athens				S2 S2	1    300 2    400 
    
    
     ()  : 

    S#		SNAME		STATUS		CITY		P#		QTY	 
    S2 S2		Jones Jones		10 10		Paris Paris		PI P2		300 400	  S5 "" 
    
    
      : 

    S#		SNAME		STATUS		CITY		P#		QTY	 
    S2 S2 S5		Jones Jones Adams		10 10 30		Paris Paris Athens		PI P2 UNK		300 
400 UNK	  35 "" 
    
    
    . 20.2.     () 

     ,        
" "  .    
,          
,        
     .  ,  
        
[4.4].   ,           
    . 
       , ,     
null-,        null- 
     . 
      ,      ,  ,  
 .  ,      
      ( 19).  , , 
    ,    
null-    ,   ,  " 
"   [19.3]. 
      ,        
,     6-,   ,    
   (  ""   
 ,     ,      ).  
. 20.2   , ,    
.  , ,      
       6- 
[20.7].   ,       
 . 
      ,        , 
     . 20.2.  ,    
[20.7],      " ", 
     ,    SQL, 
 . (. [20.7],     .) 
        ,    null-,  
    . ,    
  

    552  V.   

    UNK  . 20.2? ,    " "  
" ".       [20.7]. 
(, , ,         
 "null-"  UNK.         
     , null-    
  .) 
     ,     ,   
null-   ,      
       . 
,        . 20.2. 

    .    ""   
   ,    , 
   [20.1],        
   ,      [4.4]. 
      ( ..)  
,       .    
 ,     ,  
 ,   null-     
  (      ).  
  ,   .   ,  
        : 
            ,  
  ,      . 
        . 
            ,  
  ,      . 
        . 
             
 (       
). . [20.2]    . 

    20.5.  SQL 

     null-      SQL   
 ,    . , ,    
SQL   WHERE   ,      
   ,    WHERE   false  
unk (..  true). ,      G 
  HAVING,       
 ,     HAVING   false 
 unk.   ,        
 ,    SQL     
  ,     . 
    .       null-  
 SQL.        
 SQL [8.1]    [8.5]. 

      

        8,       
         ( 
 )  null.  ,       
  null-,      
(,   

     20,  	553 

    NOT NOLL)     .  
null-   ,     ,   
     ,  null-  . 

      

      8:     SQL (SQL/92) 
    JOIN.  ,    JOIN 
    LEET, RIGHT  FULL (   OUTER 
  ),      , : 

    S LEFT	[ OUTER ]	JOIN SP ON S.S# = SP.S# 
    S LEFT	[ OUTER ]	JOIN SP USING ( Stt ) 
    S LEFT	[ OUTER ]	NATURAL JOIN SP 

       ,       
  ,          
 . 
    SQL     ,   
 .        
 . 

     

         ,       
SQL,     null-   . 
      . 
        null. SQL     is NULL 
 is NOT NULL      null-.  
  . - IS   [  NOT  ]   NULL 
          .  
  is NOT NULL  NOT (r is NULL)   !  
     [8.5]. 
        true, false  unknown.     ,   
,      : 

     IS	[	NOT ]	TRUE 
     IS	[	NOT ]	FALSE 
    p IS	[	NOT ]	UNKNOWN 

           . 

    	true	false	unk 
     IS TRUE	true	false	false 
     IS NOT TRUE	false	true	true 
    p IS FALSE	false	true	false 
    p IS NOT FALSE	true	false	true 
    p IS UNKNOWN	false	false	true 
    p IS NOT UNKNOWN	true	true	false 

    ,  /? is NOT TRUE  NOT p   ! 
.   is UNKNOWN     
    MAYBE (}. 
     MATCH.   MATCH   "PARTIAL  FULL", 
     8.      ,  
 null-. 
    - MATCH   [  UNIQUE ] 

    [  PARTIAL  |   FULL ]   (     ) 

    554  V.   

       ,   ,    
 UNIQUE,       "PARTIAL  FULL" (  ,  
   ).      
      .    
  [8.5]. 
        EXISTS, .   [20.9]. 
      
       "".   NULL      
   null- (,   INSERT), 
  ,  ,        
  ,     .   
, "  <>  null-,    
    NULL,  ,     
 null-" [8.1].  , ,   NULL 
         , 
..  "WHERE x = NULL" . 
       COALESCE.  SQL-       IF UNK. 
       .    SQL,  SUM, AVG  .., 
         ,  
   .       null-  
  (   COUNT<*),   
 null-    ).  ,  
       ,   
 null-.    COUNT,   
    ,   . 
(    ,    6.) 
          .     
     ,  (SELECT S.CITY 
FRCM s WHERE s.s#='si'),   ,    
   ,      
.        , 
   .     
  ,     ,  SQL,  
     null. 

      

     SQL  ()      
,      false.  ,  
SQL    ,     unk. 
,         ,  
,    ,     SQL 
 unk  false    WHERE,    
  unk  true     ( 
 ). 
         ,  
 ("")      
       .   
    . 
       .     ,   
    .     ,  
SQL    null-    (    

     20.  	555 

 ).   ,      
,  SQL       null- 
(,     ,   null-). 
       . ,     
   -   (  
null-),  .       
 .   ,       
   MATCH (. ). 
    Null-      (CASCADE, SET NULL  
..),    ON DELETE   UPDATE.   
     .    
  [8.5]. 

      SQL 

      -.     SQL. 
(      8   " SELECT".). 

     SQL SELECT STATUS, CITY INTO  :RANK, :CITY FROM  S WHERE S# = 
:GIVENS# ; 

    ,      STATUS   
null-.     SELECT  , 
     STATUS  null- ( 
SQLSTATE     22002).   ,   
 ,      null-, 
   -   . 
  -  . 

     SQL SELECT STATUS, CITY 
    INTO  :RANK INDICATOR :RANKIND, :CITY 
    FROM  S 
    WHERE S# = :GIVENS# ; IF RANKIND = -1 THEN ... /*  STATUS  
null- */; 

     ,   ,  null-   
-,      -1 (  
   ). 
       .   ,    
  ,   ORDER BY.  
: "       ,    
null-    null- (    
 null-)?"  SQL   : 
    1.      null-    . 
    2.       null-    
  ,   (     
   ). 

    20.6.  

               
,   null-    ( 
  3VL). ,  null-    
  ,

    556	 V.   

    (,    " 
null").    ,      
 null-,     unknown ( 
unk),    .  ,    
    ,     
null-.     null-  "  "  
  ( )  UNK. 
       UNK      
, ,  FORALL  EXISTS    ( 
,   , , ,   
,     INSERT  DELETE).      
 IS_UNK (   UNK),  IFJJNK ( 
 UNK  ,   LINK)   MAYBE ( 
  unk  true).    
    UNK.  ,  ,  UNK  unk 
      . 
         . -,  
,        
-   .     
       .  
          
       , ..  
          . 
            . 
,          
(      ),   ,    
 ,     .  
    "" ,    . 
             
SQL.        SQL  
  ,       
,       . ,  
     [20.9, 20.11]  SQL  
 .  ,     , 
  . 
         . 
           ,       
null-   .   ,   
,  ,  ""     . 
        , ,       
  ,      
  SQL - " ",  . 
       ,      
       
      "  " (- 
     ).    
  [20.13]. 
       ,   ,     
.       " 
null-",      , ,  
"" (    )    ,  
 ,    (    ),    
  .  ,  ,  
   null-     . 

     20.  	557 


     

    20.1.     ,   = 6,  = 
5,  = 4, a D  UNK: 
    )	 =  OR (  >  AND A > D ) 
    )	 >  AND (  <  OR IS_UNK ( A - D ) ) 
    )	 <  OR  <  OR NOT (  =  ) 
    )	B>DORD>BORD = B 
    )	MAYBE (  >  AND  >  ) 
    )	MAYBE ( IS_UNK ( D ) ) 
    )	MAYBE ( ISJJNK ( A 4-  ) ) 
    3)	IF_UNK ( D, A ) >  AND IFJJNK ( C, D ) <  
    20.2.  R   : 
    (       6,	,       4  ) 
    (  UNK,	,       4   ) 
    (       6,	UNK,       4   ) 
    (  UNK,	UNK,        4   ) 
    (  UNK,	UNK,   UNK  ) 
     җ  -,     R.  
   
    )    EXISTS  ( [2] > 5 ) 
    )	EXISTS  ( 2] > 2 AND [3] > 5 ) 
    B)	EXISTS  ( MAYBE ( ] > 3 ) ) 
    )	EXISTS  ( MAYBE ( ISJJNK ( (3] ) ) ) 
    )	FORALL  ( [1] > 1 ) 
    )	FORALL   (   (2]   >  1 OR IS__UNK   {   T[2]   )   } 
    )	FORALL   ( MAYBE   (      >  2]   )   ) 
    ( T[i]      .) 
    20.3.  ,  ISJJNK  . ? 
    20.4.  [20.1]   "mayby" ("")   
  . , "mayby-"   
   ,    ,    
   unk,   true.   ,    
. ? 
    20.5.          
true  false.        
  :      true,  
    false,   true  false    
   .  ,   16 
    (.   ). 

    	 

    t	t	ttttttttffffffff 
    t	f	ttttffffttttffff 
    f	t	ttffttffttffttff 
    f	f	tftftftftftftftf 


    558	 V.   

    ,       16    
     NOT, AND  OR (,  
    20 ). 
    20.6.        ?   
?       - ? 
    20.7. (  [20.8])  . 20.3     
      . (  
   ,    SP   SHIP# 
(shipment number  ),   #      
  UNK.          
  .) 

    S					SP 

    s#	SNAME	STATUS	CITY		SHIPft	S#	P#	QTY 
    SI	Smith	20	London		SHIP1	SI	PI	300 
    S2	Jones	10	Paris		SHIP2	S2	P2	200 
    S3	Blake	30	Paris		SHIP3	S3	UNK	400 
    S4	Clark	20	London 
    
    
    . 20.3.          

    S WHERE NOT EXISTS SP   (  SP.S# = S.S# AND SP.P# =   'P2'   ) 
         : 
    )  ,     2; 
    )  ,    2    ; 
    )  ,   ,      2; 
    )  ,    ,   ,  
   2. 
    20.8.       SQL, 
  null-. 
    20.9.   ,        
  , #  COLOR.  ,  #   
,    null-, a COLOR   , 
  null-.    . 

      

    20.1. Codd E.F. Extending the Database Relational Model to Capture More 
Meaning // ACM TODS.  1979.  4,  4. 
       ,      
 (      ).     
   ,    
null-   ,    ""   
, , , 9-   . 

     20,   559 

    20.2. Darwen H. Into the Unknown // C.J. Date. Relational Database 
Writings 1985-1989.  Reading, Mass.; Addison-Wesley, 1990. 
            null- 
  ,      : " 
(    4) TABLE_DEE   true, a TABLE_DUM  
 false   TABLE_DEE  TABLE_DUM    
   null-,      unk?" 
    20.3. Darwen H. Outer Join with No Nulls and Fewer Tears // C.J. Date and 
Hugh Darwen. Relational Database Writings 1989-1991. Reading, Mass.: 
Addison-Wesley, 1992. 
         " ";    
 null-     ,   
  . 
    20.4. Date C.J. Data Models // C.J. Date. An Introduction to Database 
Systems: Volume II. Chapter 5  Reading, Mass.: Addison-Wesley, 1983. 
           null-   . 
    20.5. Date C.J. Null Values in Database Management // C.J. Date. 
Relational Database: Selected Writings.  Reading, Mass.: Addison-Wesley, 1986. 
         [20.4]. 
    20.6. Date C.J. The Outer Join // Ibid. 
            
        ,  
 SQL. 
    20.7. Date C.J. Watch Out for Outer Join // C.J. Date and Hugh Darwen. 
Relational Database Writings 1989-1991 Reading, Mass.: Addison-Wesley, 1992. 
          ,      
 " ".      . 
    1.    9-     . 
    2.         6-. 
    3.      "<"      ,  "< OR =". 
    4.   9-  . 
    5.         
  . 
          SQL  SELECT-FROM
    WHERE. 
    20.8. Date C.J. NOT Is Not "Not"! (Notes of Three-Valued Logic and Related 
Matters) // C.J. Date. Relational Database Writings 1985-1989. Reading, 
Mass.: Addison-Wesley, 1990. 
    , X    " ".  ' 
    true, false  tink.  ,  "' 
 true ()" ,   X   unk, 
 false.   "X NOT true ( )" ,  
 X  false () (.    NOT). 
,  NOT       

    560	 V.   

""    ...      
 (    SQL/92), , ,   
 . 
    20.9. Date C.J. EXISTS Is Not "Exists"! (Some logical Flaws in SQL) // Ibid. 
        ,   SQL EXISTS     , 
    ,     true  
false,   unk,    ,  unk    . 
    20.10. Date C.J. Three-Valued Logic and the Real World // C.J. Date and 
Hugh Darwen. Relational Database Writings 1989-1991.  Reading, Mass.: 
Addison-Wesley, 1992. 
    20.11. Date C.J. Oh No Not Nulls Again // Ibid. 
    20.12. Date C.J. A Note on the Logical Operators Of SQL, Part I // The 
Relational Journal.  1993.  5,  1. 
       (3VL)      true, 
false   (   t, f   ). 
,      3 * 3 * 3 - 27  
  (. . 20.5),        
 t,/          
t, f  .       39=19 683   
 (.  ). 

    t       u       f 
    t/u/f t/u/f t/u/f 
    t/u/f t/u/f t/u/f 
    t/u/f t/u/f t/u/f 

    ,     -  (VL)    
       2   (.  ). 
     	  

    2VL	4	16 
    3VL	27	19 683 
    4VL	256	4 294 967 296 
    nVL	()** ()	() **(//) 

      - ,   > 2,   : 
         ? (,   
{NOT, AND},    {NOT, OR}     
  .) 
         ? (,  {NOT, AND, 
OR}       .) 
      I   ,   SQL/92 (   
)          
  .   II       
 .   ,     ,   
       ,   ,   
SQL (   )     . 
    20.13. Date C.J. The Default Values Approach to Missing Information // 
C.J. Date and Hugh Darwen. Relational Database Writings 1989-1991. Reading, 
Mass.: Addison-Wesley, 1992. 

     20,   561 

          , 
        ,  
null-   .    ,  
     ,       (  
  ,  null,  ),   ,  
        . 
    20.14. Heath IJ. IBM internal memo.  1971. 
         ( ) " ". 
    20.15. Lacroix M., Pirotte A. Generalized Joins //ACM SIGMOD.  1976.  8, 
 3. 
    20.16. Liu .-., Sunderraman R. Indefinite and Maybe Information in 
Relational Databases//ACM TODS.  1990. 15,  1. 
             
    (, " 7   ")   
    (, " 8   
9 ").      (), 
   .     
  , , , ,  
 . 
    20.17. Maier D. The Theory of Relational Databases. Rockville, Md.: 
Computer Science Press, 1983. 
    20.18. McGoveran D. Nothing from Nothing // Database Programming & 
Design. 1993.  6,  12.  Part I; 1994.  7,  1.  Part II;  2.  Part 
III;  3  Part IV. 
        .   I    
    .   II ,     
         
.   III ,   ""  
 .  ,   IV    
  . 
    20.19. RescherN. Many-Valued Logic.  New-York, N.Y.: McGraw-Hill, 1969. 

        

    20.1. a) unk; ) true', ) true', ) unk; ) false', e) false ( 
  ,  IS_UNK    unk); ) false; ) true. 
    20.2. a) unk; ) unk; ) true; ) false; ) unk; e) true; ) false. 
    20.3.   "isjJNKU)"  true    ,  
"xQy"  unk (  9  ),   false   
 ,  " = <*"  true (   
,    UNK-). 
    20.4.   (, "mayby-") "MAYBE_RESTRICT  WHERE p" 
 "R WHERE MAYBE ()". 
    20.5.         ( 
  ): 
     
    NCTW) 
    A OR NOT (A) 

    562	 V.   

    A AND NOT (A) 

    16        (    
 ): 

    A OR NOT (A)   OR  OR NOT () 
    A AND NOT ()   AND  AND NOT () 
    A 
    NOT () 
     
    NOT () 
    
    A OR  
    A AND  
     OR NOT (B) 
    A AND NOT (B) 
    ()   OR fl 
    NOT )   AND  
    
    NOT ()   OR NOT(B) 
    NOT'(^)   AND NOT(S) 
    ()   OR B)   AND   (NOT(B)   OR ) 
    ()   AND B)   OR   (NOT(B)   AND ) 

    20.6. .   [20.12]. 
    20.7.   ().    . [20.8]. 
    20.8.    ,   DB2.    
 IBM  ,    null-,  
          
    .   ,   
 , ,       
 (..   null-);   
,    , ,   
        . , 
     . 
    20.9.  ,       
.    -  ,     
      ,    
 .   ,  , !    
,   null-    . 

     20,  	563 

