      

     : 

    I.   

    6.1.  
              
       [6.1].    
         
 ,       , 
         
 .   3    ,  
 ;          
 . 
     [6.2]     "" , ..   
 ,    . 6.1.    
 ,    ,      
 .   ,      
 ;          
,      : " 
 ,   " (    
  ; ., , [6.9-6.11]).    
    (,   ,   
),          
  ;      ,  
       . 

       

      ,  ,    [6.2], 
   ,   ,     

    1.     : , , 
    (     ,  
   ,    ). 
    2.    : , ,   
.        (. 
. 6.1). 
    : 
     ,      , 
   .     
 1,         
 ,    . 
    : 
     ,    (  ) 
       . 
    1     restrict (  ),  
    select ().      
 ,       SELECT  SQL,  
     .     SELECT  SQL   
  restrict       
        -. 

     6.  : I.   135 

    : 
     ,   ,   
  ,     . 

     
     
    ^-^  - 
       7      i 
     
     
    JT  () -. 
     
      
    -^. _ 
    	X 
    	 
    	Z 
    	X 
    	 

    . 6.1.    () 

    : 
     ,   ,    
    ,  . 

    136  II.   

    : 
     ,   ,   
   . 
    : 
     ,   ,    
       . 
    : 
     ,        
(    ),   
          ( 
         ,   ). 
    .  ,   . (   
      .) 
    : 
      ,   ,  ,  
     ,   ( 
 )     . 
          .   
  :         
  .      
 ,       
     .   
 "  "     , 
 EXTEND  SUMMARIZE.    , 
   .  ,   . 

    6.2.  

       ,       ( 
 )   .    
        3.   
 :        ,   
  (),       
     .  ,  , 
,     ,     , 
      .. 
     ,    , .. ,  
        . 
         ( 
      ). 
    .        
        
   . ,  ,   
,       ,      
,   . 
          3    
 .      4,     
   ;  ,     ,  
   .    , ,  
   ,      
  CREATE BASE RELATION (.  4).      
 ? , ,  
    S JOIN P, 

     6.  : I.  	137 

            
   (  CITY    ). 
      ?   
  ,     ,   
 (      ,    ). 
    ,     ,   
     ,     
  (..      
).        
          
,    ,     
  .    , ,    
,  

    (S JOIN P)   WHERE WEIGHT > 18, 

       ,     s JOIN P  
 WEIGHT.  ,      
 ,   ,      
     ,     
  .      ,  
,        , 
    . 
       , ,    ,  
,   ,       
(Hall)  . [6.9]   (Darwen) [4.7].  ,   
 ,         . ( 
    ,      
,   ,      .) 
          ,  
,       , .. 
,       ,   
  .        
RENAME,       . 
,     RENAME  (  
 )   ,      
  . ( , ,    
 ,    .) , 
 : 

    S RENAME CITY AS SCITY 

        ( ,    
 ,     ,  ,   
   )  ,     , 
   S,     SCITY  CITY: 

    s#	SNAME	STATUS	SCITY 

    SI	Smith	20	London 
    S2	Jones	10	Paris 
    S3	Black	30	Paris 
    S4	Clark	20	London 
    S5	Adams	30	Athens 

             
 S  .   . ( , 
     RENAME     
 .       ,    5.) 
           ,    
   .     5,    
    ,     .    

    138  II.   

      ,      
 ( ,    )    . 
 ,         
 ,          
     . 

    6.3.    

             
 (. BNF-  . 6.2).  ,    
        
,    ,      
       , ,    
       " 
".  ,         
  . 

    expression 
    : :=	monadic-expression  |  dyadic-expression 
    monadic-expression 
    ::=	renaming |  restriction I projection 
    renaming 
    : :=	terra RENAME attribute AS attribute 
    term 
    : :=	relation |   ( expression ) 
    restriction 
    : :=	term WHERE condition 
    projection 
    : :=	term |   term [ attribute-commalist ] 
    dyadic-expression 
    : :=	projection dyadic-operation expression 
    dyadic-opera tion 
    : :=	UNION   I   INTERSECT   |   MINUS   I   TIMES   I   JOIN  |   DIVIDEBY 

    . 6.2. BNF-    

        

    1.    4      
"commaiist" (  ,  ). 
    2.   relation ()  attribute ()  
 ,        
 . 
    3.    condition ()     . 
             
      .   
    ,     
   .     ,    
 ,    .   : 

    ( S RENAME CITY AS SCITY ) RENAME S# AS SNUM 

     6.  : I.   139 

      ,      
  ,       S,      
 SCITY,   CITY;        
    ,       
  S#  SNUM.      
   ,     , 
    RENAME,     
   : 

    ( S RENAME CITY AS SCITY, S# AS SNUM ) 

     ,       
  : 

    (  term RENAME renarae-ccsmalist ) 

      comma11st (  )    
,  rename ,        
  

    attribute AS attribute 


    6.4.     

          , 
  ,    . 
          ,  
    . 
          , , 
   (,   ).  
  . 
            , 
  ,     .   
,  ,  , , ,   
  ;   ,   
,   ,     . , 
      S    
    , , . 
    ,      ,    
;        ,  
   .  ,     
,  ,    . 
,         
 , ,    ,   
,    ,  ,  "    
".  , ,        
 ,     .     "   
 ",           
 ;  ,    . 
        "    "    .1 
 ,      ,     
,  , 
    1)             
(, ,         ); 
    2)    (..        
 )       . 
    1     ,   [6.2],  
    union-compatible (   
 ),     . ,  
   type-compatible (  ),  
   ,       ( 
         
,   ). 

    140	 II.   

     ,       
  . ,     
,      . (  
, ,      ,   
  ,    .)   
  ,     , 
    ,       
,    RENAME (    ), 
       ,   
  . 
            
, ,    ,    
 . 

     

             (A UNICN ) 
     ,       ,   , 
     t,       . 
    .       ,    . 6.3 
(     ,     , 
, ,   1).   A UNION  (. . 
6.3,)  ,     ,  
  1 (    ).  ,   
  ,         . 

    					 
    S#	SNAME	STATUS	CITY		S#	SNAME	STATUS	CITY 
    SI S4	Smith Clark	20 20	London London		SI S2	Smith Jones	20 10	London Paris 
    
    
    )     (A UNION ) 
    S#	SNAME	STATUS	CITY 
    SI S4 S2	Smith Clark Jones	20 20 10	London London Paris 
    
    
    )     (A INTERSECT ) 
    S#	SNAME	STATUS	CITY 
    SI	Smith	20	London 
    
    
    )     (A MINUS )					)     ( MINUS A) 
    S#	SNAME	STATUS	CITY		S#	SNAME	STATUS	CITY 
    34	Clark	20	London		32	Jones	10	Paris 
    
    
    . 6..   ,    

    .         
   (,   ).  
     ( ),    
,  . 

     

             (A INTERSECT ) 
     ,       ,   , 
     t,    
   . .        ,  
  . 6.3.    INTERSECT  (. . 6.3,6) 
 ,        1. 

     6.  : I.   141 

     

             (A MINUS )  
    ,       ,   ,  
    t,       
 . 
    .        ,    . 
6.3.    MINUS  (. . 6.3,)  , 
        1,   MINUS  (. . 
6.3,)  ,    1    
 . ,        , 
     (, "5-2"  "2-5"       ). 

     

        (   )  
       ,  
        ,     
     . ,  
        . 
 -    ',  , 
   ,     .  
        
  ,       
  ,       . 
""    (   ,   
 ); ..  { <Al:al>, <K2:a2>, ..., <:> } 

     

    (  <1:>,   <2:2>,   ...,   <:> } 

    (    )     

    { <Al:al>,   <A2:a2>,   ...,  <fm:aa>,  <1:>,   <2:2>,   ...,  <:> } 

     ,      , 
  ,       
 . ,       
     . ,   
   -   ,  .  
  ,       
 ,  ,  " ". ,  
     ,   - 
  ,      
   RENAME. 
    ,        (  TIMES ),     
    ,     , 
          , 
 ,      t, ,  t  
   ,   ,   , 
  .  ,    
         , 
     . 
    .       ,    . 6.4 
(  , ,    ,  
     ).   TIMES     
 -  -. 

    142	 II.   

         ,  ,   
        
    (.        ). 
 ,       ( 
 ,    )    
.          
 .  ,      , 
        
 ^- (  0-   ). ~"	' 

    							 

    S#								P# 

    S1													PI 
    S2													P2 
    S3													P3 
    S4													P4 
    S5													P5 
    P6 
    
    
      (A TIMES ) 

    S# "   '' "		p#	.... 

    SI		PI		S2	PI			S3	PI		S4		PI		S5    PI 
    SI		P2		S2	P2			S3	P2		S4		P2		S5    P2 
    SI		P3		S2	P3			S3	P3		34		P3		S5    P3 
    SI		P4		S2	P4			S3	P4		S4		P4		S5    P4 
    SI		P5		S2	P5			S3	P5		S4		P5		S5    P5 
    SI		P6		S2	P6			S3	P6		S4		P6		S5    P6 
    
    
    . 6.4.     

    ,         , 
          
    .  ,     . 
6.4,          ,  
     . 

       

     ,    , ..  ,   
ї   (    ),   

    ( A UNION  ) UNION  

     

    A UNION (  UNION  ) 

    . ,      
      ; 
 ,     : 

    A UNION  UNION  

              
 (  ).  ,   , 
    (  )   , 
..  

    A UNION  

     

     UNION A 

    ;         . 

     6.  : I.   143 

    .          
 .       , 
         ,  
,   ,   ,    . 

    6.5.    

          : , 
,  ( )  . 

     

              
 ,         
 ,    .   
   Q-,  0     
 (=, *, >, >  ..). 6-      X   ( 
 ) 

    A WHERE X 6 Y 

     ,    ,    ,  , 
    I  ,     
":  "   .  X  Y      
   ,        . ( 
,      (0)     . 
,   SEX ()   "Male" ()  "Female" 
().    ,       
      ,      
.          .) 
             X, 
    Y (, ,  );    
 .1 : 

    A WHERE X 9 literal 

           "" 
  , ..   ,   
  . 
    ,   ,      
WHERE.         
  ,      WHERE   
        
 : 

    1. A WHERE cl AND 2	=	(  WHERE cl ) INTERSECT ( A WHERE c2 ) 
    2.  WHERE cl OR c2	s	(  WHERE cl ) UNION ( A WHERE c2 ) 
    3. A WHERE NOT 	s	A MINUS ( A WHERE  ) 

       ,      
WHERE         
  (   ,    
  ).        
    ,      ,  
   . 
    1  ,   "      
    . ,  S WHERE CITY 
= 'London'      : (EXTEND S ADD 
'London' AS LONDON) WHERE CITY = LONDON. (.   EXTEND 
   .) 

    144	 II.   

    ,     .1  . 6.5 
   . 

    S WHERE CITY = 'London1 
    S#	SNAME	STATUS	CITY 
    SI S4	Smith Clark	20 20	London London 
    
    
     WHERE WEIGHT < 14 
    P#	PNAME		COLOR	WEIGHT	CITY 
    PI P5	Nut Cam		Red Blue	12 12	London Paris 
    
    
    SP  S# = ' SI ' AND P# = ' PI ' 
    S#        P#		CTY 
    SI        PI		300 
    
    
    . 6.5.    

     

         X, Y,..., Z,     
   ( [ , Y, ... , z ]),    
 {X, Y,..., Z}  ,     {:, 
Y:y,..., Z:z}, ,        X  , 
 Y  , ...,  Z  z.  ,   
   ""   , 
.. ,    ,    
 ,      () 
 ,  . 
               . 
       . 
    1.        (  
 ).       
   , ..     
 .  ,   , , 
  . 
    2.    R[ ], .. ,      
,  ,  .    "" . 
         . 6.6.  ,   
  (    CITY),   S  
  , ,  ,      
,    .    
    . 
    ,          ,  
  ,  ,   "". , 
 : ",   WEIGHT   "  
"     #, PNAME, COLOR  CITY".    
      , , 
,    . 

      

        .   
,  ,   ,  ,  
       
   
    1   .  ,     , 
" "          . 

     6.  : I.   145 

    "".    ,      
     JOIN ().  
  (  ,   ,   
          
 3). 

    S [ CITY J 
    CITY 
    London Paris Athens 
    
    
     [ COLOR, CITY 1 
    COLOR	CITY 
    Red Green Blue Blue	London Paris Rome Paris 
    
    
    ( S WHERE CITY = 'PARIS' ) [ S# ] 
    S# 
    S2 S3 
    
    
    . 6.6.    

           {1,2,...,, Yl, Y2,...,Yn}  { 
Yl, Y2,..., Yn, Zl, Z2,..., Zp } 
    ; ..  Yl, Y2,..., Yn (  )    
 ; XI, 2,... ,     A; Zl, Z2,..., 
Zp    .  ,   
 (..    )       
.     {XI,2,... ,}, {Yl, Y2,..., 
Yn}  {Z/, Z2,..., Zp}     X, Y  Z . 
       (A JOIN )   
  {X, Y, 7}  ,     {:, Y:y, 
Z:z}, ,        1  ,  
 Y  ,       Y  ,   Z 
 z. 
       (  s JOIN p  
  CITY)   . 6.7. 
    .        (   
    . 6.7),       
      (, 
  ),     
     . 
    ,    ,    ,  
 .  ,   

    ( A JOIN  )   JOIN  
     
    A JOIN   (   JOIN  ) 

         : 

    A JOIN  JOIN  

    146  II.   

     ,  

    A JOIN  

     

     JOIN A 

    . 
    
    
    s#	SNAME	STATUS	CITY	P#	PNAME	COLOR	WEIGHT 

    SI	Smith	20	London	PI	Nut	Red	12 
    SI	Smith	20	London	P4	Screw	Red	14 
    SI	Smith	20	London	P6	Cog	Red	19 
    S2	Jones	10	Paris	P2	Bolt	Green	17 
    S2	Jones	10	Paris	P5	Cam	Blue	12 
    S3	Blake	30	Paris	P2	Bolt	Green	17 
    S3	Blake	30	Paris	P5	Cam	Blue	12 
    S4	Clark	20	London	PI	Nut	Red	12 
    S4	Clark	20	London	P4	Screw	Red	14 
    S4	Clark	20	London	P6	Cog	Red	19 
    
    
    , 6.7,   s JOIN p 

     ,           ,  
 A JOIN    TIMES  (..   
      ). 

    6- 

       6-.     
  ( , ,   ,  ),   
        ,   
.           (   
    )  9   , 
    .  0-     X  
    Y     

    (  TIMES  )   WHERE X Q  Y 

     , 0-       ,   
      ,   ,   
 t,   t       
 "XQ "      .  "  Y  
       ,       
 . 
       ,     
--  S   CITY      
CITY (,  ">"        
   "   ").  
    

    ( ( S RENAME CITY AS SCITY ) TIMES 
    ( P RENAME CITY AS PCITY ) ) WHERE SCITY > PCITY 

       . 6.8. ,     
     CITY.      
 . 
    ,  9-     ;   
  :     
  (     ) 
       . 

     6.  : I.   147 

     6  "",  6-  -. 
  ,   -    
 ,         . 
      (     
),     ! , 
       ;   
    (-    
  ). , ,  
      (  ) 

    s#	SNAME	STATUS	SCITY	P#	PNAME	COLOR	WEIGHT	PCITY 

    S2	Jones	10	Paris	PI	Nut	Red	12	London 
    S2	Jones	10	Paris	P4	Screw	Red	14	London 
    S2	Jones	10	Paris	P6	Cog	Red	19	London 
    S3	Blake	30	Paris	PI	Nut	Red	12	London 
    S3	Blake	30	Paris	P4	Screw	Red	14	London 
    S3	Blake	30	Paris	P6	Cog	Red	19	London 

    . 6.8. -        

    S JOIN P, 

        : 

    ( ( S TIMES (P RENAME CITY AS PCITY ) ) WHERE CITY = PCITY ) [ S#, SNAME, 
STATUS, CITY, P#, PNAME, COLOR, WEIGHT ] 


     

           

    {1,2,...,, Yl, Y2, ..., Yn} 

     

    { Yl, Y2,..., Yn } 

    , ..  Yl, Y2, ... , Yn     , 
      XI, 2, ... ,,     
  . (      
  .)  ,    (.. 
   )       .  
  {XI, 2, ... ,}  {Yl, Y2, ... , Yn}   
  X  Y .       ( 
DIVIDEBY )     {X}  ,  
   {:},     {:, Y:y},  
      {Y:y},   . 
    :    .Y-  
 ,    F- ( )   
F-   . 
     . 6.9     .    
 ( DEND)     SP   S#  #;  
 ( DOR)  ,    .  , 
    ,     , 
       ;  , 
,   ,    .   
  ,  DIVIDEBY      . 
 ,        "" (" 
,   "),     
 . 

    148  II.   

       ,  ,    
    ;  ,    
   .    DIVIDEBY PER  
  , ,  ,   .  
      [6.4].  ,    
        (   
  ). 

    DEND					52 S2 S3 S4 S4 S4	PI P2 P2 P2 P4 P5 

    S#	p# 

    SI SI SI SI SI SI	PI P2 P3 P4 P5 P6 
    
    
    DOR			DOR 
    P# ~P1				P#		DOR   1 P#    1 
    P2 P4		PI P2 P3 P4 P5 P6 
    
    
    
    
    
    
    DEND DIVIDEBY DOR 
    
    
    S#				S# SI S4		( S#    | 
    SI S2 
    
    
    . 6.9.   


    6.6.  

            
       .  
      . 3.8. 
    .        
      -  
.      . 
    6.6.1.   ,    2 

    (   (  SP JOIN S   )   WHERE P# =   '21   )    [  SNAME  ] 

    .     SP  S  
       ()   
 SP    (..  
  SNAME, STATUS  CITY).      
  ,     #  2.  , 
      SNAME.    
  SNAME. 

     6.  : I.   149 

    6.6.2.   ,       
  

    { ( (  WHERE COLOR = 'Red1 ) JOIN SP ) [ S# ] JOIN S ) [ SNAME ] 

           SNAME.   
   : 

    ( ( (  WHERE COLOR = 'Red' ) [ * ] JOIN SP ) JOIN S ) [ SNAME ] 

     ,      : 
        . 
       . 

    6.6.3.   ,     

    (   (  SP   [  S#,   #]   DIVIDEBY    [  #   ]   JOIN S  )    [  SNAME  ] 

           SNAME. 
    .      " , 
   "  .    
  [6.4]. 
    6.6.4.   ,       
,    S2 

    SP   [  S#,   *   ]   DIVIDEBY   (  SP WHERE S# =   'S2'   }    [  P#  ] 

         S#. 
    6.6.5.     ,     

    ( ( ( S RENAME S# AS FIRSTS* ) [ FIRSTS, CITY ] JOIN ( S RENAME S# AS 
SECONDS* ) [SECONDS*, CITY ] ) 
    WHERE FIRSTS* < SECONDS* ) [ FIRSTS*, SECONDS* ] 

            FIRSTS#  SECONDS*. 
,           
 . 
    6.6.6.   ,     2 

    ( ( S [ S* ] MINUS ( SP WHERE P# = 'P2' ) [ S* ] ) 
    JOIN S ) [SNAME] 

         SNAME. 
        ,    
 .     ,      
    (   ).     
.     : 

    1	= S [ S* ] ; 
    2	= SP WHERE * = '2' ; 
    	= 2 [ S* ] ; 
    4	= Tl MINUS  ; 
    5	= 4 JOIN S ; 
    6	= 5 [ SNAME ] ; 

     6   . 
    .   ":="     
(     ).    , 
    Ti       
,   ,     
,        (, 
  ). ,       
(, ,    PRTV [6.8]),     
         
   .     
   . 

    150	 II.   

    1.  ,       
     6 (   DISPLAY  
 ).      ,  
      - ,     
-   6. 
    2.       6,    5  
 SNAME,      5;   
 5,    4  S,    
  4  ..  ,    
   ,   ,  ,  
 ,      . 
              
   (        ). 

    6.7.    

    ,      , ..  
  .     : , , 
, , , ,  (  
9-)       RENAME. ( 
 RENAME,    ,   
  [6.2].)       , 
      . 
         ,      
   (     ),    
   ,       . 
,       . 
     ,   ,   
,      (      
 ).    (, , ,  
 )       ,     
    .       
   .       ( 
 )   ,    
   ,       . 
          .    
 (     ),    
     .    .    
   .  ,   ,   
  , , ,  , , 
,      .     
     . ( , , 
   ,   ,   , 
  ,    ,    .) 
        , ..     ,  
  . 
        , ..     , 
  ,    . 
       ()  , ..  
      (   
    ). 

     6.  : I.  	151 

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

    (   (  SP JOIN S  )   WHERE # =   '2'   )    [  SNAME  ] 

    (" ,   2")    
 , , ,    

    (   (  SP WHERE # =   '21   )   JOIN S  )    [  SNAME ] 

    (  ,     , , 
 ?   ""?) 
     ,       ( 
,   ,    3). ,  
           
,          
 (       ,  
   ).         
 . 
      ,       
        
      (,  
 SQL).  ,     [6.2],   
,   ,  ,  
 , ..      
  ,       
 .       
 . 

    6.8.      

            
  .       
  EXTEND ()  SUMMARIZE ( ),  
     .  ,   
,     [4.7], ,   
,           
  PRVT [6.7-6.9]. 

      

    , , ,         
 . ,     . 
,        
,   WEIGHT*454,        
WHERE   

    152	 II.   

    (,        ;  WEIGHT*454 
    ).      
  . ,      
  (   )   
;    ,    , 
      . 
,  : 

    EXTEND P ADD   ( WEIGHT *  454   )   AS GMWT 

              , 
    ,     GMWT.  
        ,  
    GMWT,     
  (. 6.10). 

    #	PNAME	COLOR	WEIGHT	CITY	GMWT 

    ' 1	Nut	Red	12	London	5448 
    2	Bolt	Green	17	Paris	7718 
    	Screw	Blue	17	Rome	7718 
    4	Screw	Red	14	London	6356 
    5	Cam	Blue	12	Paris	5448 
    6	Cog	Red	19	London	8626 

    . 6.10.    

        GMWT   ,   
.. , : 

    ( EXTEND P ADD ( WEIGHT * 454 ) AS GMWT ) WHERE GMWT > 10000 

    . ,      
      WHERE: 

     WHERE ( WEIGHT * 454 ) > 10000 

           . 
       ,   . 6.2,  EXTEND, 
       : 

    EXTEND term ADD scalar-expression AS attribute 

    : 

    EXTEND A ADD exp AS  Z 

       ( ,   ,   
  )    ,   
 ,    Z',   
       .   
      Z        
 Z. ,       
  ,         . 
       . 

    1. EXTEND S ADD 'Supplier1 AS TAG 

           S  
 "Supplier" (,   ( ) 
    ). 

    2.    EXTEND   (   JOIN SP  )   ADD   ( WEIGHT  * QTY )   AS SHIPWT 

    '         Z.   
 (    )      . 

     6.  : I.   153 

     term  EXTEND     
,   . 

    3.  ( EXTEND S ADD CITY AS SCITY ) [S#, SNAME, STATUS, SCITY ] 

     ,   CITY,     . 
,     : 

    S RENAME CITY AS SCITY 

     ,  RENAME  !     
  EXTEND. 

    4. EXTEND S ADD COUNT ( ( SP RENAME S# AS X ) WHERE X = S# ) AS NP 

         . 6.11. 
    
    s#	SNAME	STATUS	CITY	NP 

    SI	Smith	20	London	6 
    S2	Jones	10	Paris	2 
    S3	Black	30	Paris	1 
    S4	Clark	20	London	3 
    S5	Adams	30	Athens	0 
    
    
    . 6.11.      

    : 
          S  
    (   (  SP RENAME S# AS X  )   WHERE X = S#   ) 
      ,   . 
      " " COUNT      
     ( , , 
 ). 
     NP      , 
 ,     
S#.  ,  ,   NP   S5; 
   SP    ,   
COUNT  . 
    .   ,  COUNT    
 (.. ,        
  ).   (), AVG ( ),  
( )  MIN ( )     
  .       , 
  COUNT (  )  ,    
 ;         
  ,   AVG   
.    EXTEND: ,  

    (   (  SP RENAME S# AS X  )   WHERE X = S#   ) 

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

    ( MATCHING expression ) 

    154  II.   

    ( expression     )   
,       ,  
  EXTEND,   .   EXTEND   

    EXTEND Rl ADD agg-fun   ( MATCHING R2 )   AS   ... 
     Y  _   Rl  R2.   

(MATCHING R2)      
    (   (  R2 RENAME  Y AS X )  WHERE X =  Y ) 

       (   )  X.  
        
 : 

    EXTEND S ADD COUNT ( MATCHING SP ) AS NP 

    5.   ,        
EXTEND,      (     
 ): 

    ( EXTEND P ADD CITY AS PCITY, ( WEIGHT * 454 ) AS GMWT ) 


       

       ,     
"",  "",   .  SUMMARIZE 
( )     "" 
. ,    

    SUMMARIZE SP BY ( # ) ADD SUM ( QTY ) AS TOTQTY 

        {P#,TOTQTY},     
    #   SP;     
 #      (. 6.12).  
,    ""    ( 
     #),       
   .1 
    
    #	TOTCTY 
    1	600 
    2	1000 
    	400 
    4	500 
    5	500 
    6	100 

    . 6.12.    SUMMARIZE 

       . 6.2   , : 

    SUMMARIZE term BY   (  attribute-commalist ) 
    ADD aggregate-expression AS attribute 

    : 

    SUMMARIZE A BY   {  Al,   A2,    . . .,   An  )   ADD exp AS Z 

     A1,A2,... ,An    .   
 ( ,     ,   

    1        (    SQL  
.  8)    GROUPBY  BY,   GROUPBY 
   
    ,      BY . 

     6.  : I.   155 

      )     {1,2, ...,, Z}1  
 ,     /,     
    Al, A2,..., An,     
 Z;    Z    
      ,       
  1,2,... ,,      attribute-commaiist  
     Z,        
 Z. ,       
      Al, A2,..., An,    
     . 
      ,  ,   term  
SUMMARIZE     ,   
 : 

    SUMMARIZE (  JOIN SP ) BY ( CITY ) ADD COUNT AS NSP 

       : 

    CITY	NSP 
    London	5 
    Paris	6 
    Rome	1 

     ,         
 (,   ),       
    . 
     ,   SUMMARIZE   ,  EXTEND. 
 ,   . 

    1. SUMMARIZE SP BY ( ) ADD SUM ( QTY ) AS GRANDTOTAL 

       ,    ,  . 
   ,   SP      
      " "   
 , . .       
  .  ,      
       ;   
GRANDTOTAL,        
       QTY    SP. 
    ,   ,   SP    ,  
 ,  ,    , ..  
   .  ,  SUMMARIZE  
 () :      
 (,    COUNT)  . 

    SUMMARIZE SP BY ( S# ) ADD COUNT AS NP 

    2. 
        : 

    S#           NP SI              6 S2             2 S3             1 S4     
         3 

     ,       S5 (  
 ,  )   ,    
  . , ,   ,   
S5    SP.       ,  
    1       EXTEND,      
    Z.      (  
  )      . 

    156  II.   

     ,    . (,    
   ,   S5.   
 ,      EXTEND.) , 
   COUNT,      ,   
 .  ,  COUNT   , 
   ). 
    3.     " ,      
 ": 

    ( ( SUMMARIZE ( P WHERE COLOR = 'Red' ) 
    BY { CITY ) ADD COUNT AS N ) WHERE N > 5 ) [ CITY ] 

     ,      : " 
,        ".   
">"  "<"    

    ( ( SUMMARIZE ( P WHERE COLOR = 'Red1 ) 
    BY ( CITY ) ADD COUNT AS N ) WHERE N < 5 ) [ CITY ] 

       ,     ,   
   .       : 

       [  CITY ]   MINUS xyz 

     xyz  ,     . 
    . ,    ,    
    SUMMARIZE:    ,  
   (    )   
,     .       
 . 
    4.   ,        
 ,      (    
      ): 

    ( SUMMARIZE SP BY ( # ) ADD SUM ( QTY ) AS TOTQTY, 
    AVG ( QTY ) AS AVGQTY ) 

          . 
    5.    SUMMARIZE (    DIVIDEBY)   
   .  ,    
,       ,  
  .       [6.3]. 
    6.  ,  ,   SUMMARIZE    
      EXTEND (   
   ;     
    7).   SUMMARIZE    
     . 

    6.9.   

      (,  ,   )  
       . 
           
    (    
    ).    : target := source ; 
     source  target  ,   
   (   target ,  , 
 ).   source   
target,    . 

     6.  : I.  	157 

        ""   
           
 ,  ,   .1     
  ,        
 .  , ,     . 
              
  . ,      
   : 

    S  := S UNION { {   < S#	: 'S6'    >, 
    < SNAME	: 'Baker' >, 
    < STATUS :  50     >, 
    < CITY	: 'Madrid' > } } ; 
    SP := SP MINUS ( {    < S#	'SI' >, 
    < P#	'PI' >, 
    < QTY	300 >}} ; 

          S    
S6,       SP     1 
 S1,        INSERT  
DELETE, , ,     UPDATE,  ,  
   . ( ,     
()      .    
    .) 
         UNION  MINUS   
 INSERT  DELETE H6 6 ,    
UNION  MINUS 
         , ..   
,    INSERT  DELETE  .  
,    UNION     
,   ,     MINUS  
   .     
     INSERT, DELETE  UPDATE.  
   . 
       INSERT.     : 

    INSERT source INTO target ; 

     source  target    ,  
    (   target   
 ).   source ,    
    target. : 

    INSERT ( S WHERE CITY = 'London' ) INTO TEMP ; 

      TEMP      S. 
       UPDATE.     : 

    UPDATE target assignment-commalist ; 

      (assignment)   
    attribute := scalar-expression 
     target  ,    attribute 
 ,      
.          
  . : 

    UPDATE P WHERE COLOR = 'Red' 
    CITY := 'Paris' ; 

       target      
   ,    . 
    1      ,     
    (.. ). 

    158	 II.   

      DELETE.     : 

    DELETE target ; 

     target   ;     
 . : 

    DELETE S WHERE STATUS < 20 ; 

          ,  target   
      ,   
 . 
          ,   
target ,     (   INSERT, 
DELETE  UPDATE    ).     
,       . ,   
 DELETE      . 
     ,   , ,     
 ,    , : 
    1)            
(       ,  ); 
    2)         ! 
    , ,      
,      S1  S4   
 .    "  "   
       .   
    ,    : 

    UPDATE S WHERE S# = 'SI1 OR S# = 'S4' STATUS := STATUS + 5 ; 


        

        4,       
  ,        
,     . ,   
    ,     .    
     , ,     4, 
        ,  
   , ,     
  (       
    ). 
            , 
 ,    (,  
 ,   , ,  ), 
   .       ? 
 , ,     ,   
      ,  
        . 
               
    . ,       
    ,      
  ,   PC   (  ) A INTERSECT  , 
, () AND (>; ..  t   ,    
 PA(t)  ,  PB(f)  . , ,      
     t   ,   t 
        ,    
  , (         
 .) 

     6.  : I.  	159 

       :   ,   
  

    R WHERE condition 

     : (PR)  (condition),  PR     R. 
        ,                
 ,      . 

    6.10.   

        ,      , 
      (,   
  ,       ).   
     ,     
 .     .    
        : 

    egression 9 egression 

     expression       , 
    ,  6     
 : 

    = () 
    * ( ) 
    < () 
    < ( ) 
    > () 
    > ( ) 

    . ,      ,  
   "    "   "  
 " (..  "<"  ">"  ).    
    . 

     . 

    1.  s [ CITY ] =  [ CITY ] 
    .     S   CITY   
    CITY? 
    2.  s [ s# j = SP [ s# ] 
     ( ).      ? 
              
(   ).1 : 

    S WHERE ( ( SP RENAME S# AS X ) WHERE X = S# ) [ P# ] = P [ P# ] 

         ,   
,   . 
    1   ,       
   ,     .     
  .     
.     ,   
  (       
!).     EXTEND ,  
    .      
      .     
     . 

    160	 II.   

    '. 
          

    (   (  SP RENAME S# AS X  )   WHERE X = S#  )    [  P#  ] 

       ,   . 
               
 .     ,    
   . 
    ,    MATCHING,    
 ,     : 

    5 WHERE   ( MATCHING SP )    [  #  ]   =    [  #  ] 

       
        ,     
 (..     ).     
.   ,   : 

    IS_EMPTY   (  expression ) 

       ,    expression 
,     . 
       ,     /   
 R. ,   ,    
 ,     ;     : 

    {   t }  < R 

           ( 
,   SQL): 

    t IN R 

     IN   ,   . 

    6.11.  

        .     
    ;  ,   
         
.         . 
         :    
, ,       
  , ,   .   
      RENAME (), 
EXTEND ()  SUMMARIZE ( ).    
 ,        (  
  "  ").   , 
      (     
 ).   ,      
 ,   ,   .   
        ( 
      ).   
     . 
            , 
        . 
,          
      .  
,    ,    
 . 

     6.  : I.  	161 
    6      

     

           
.       
      . (   
   "":        
   .) 
    6.1.  ,   , ,   
()      
.   . 
    6.2.       (, 
, ,   )    
.    ,   ( 
 )      . 
    6.3.    JOIN         
 (..     ),    
 :  TIMES .      , 
  ! 
    6.4. ,    ,     
,  , ..        
 . 
    6.5.         . 
   TIMES  DIVIDEBY    ? 
    6.6.       ;    

    S JOIN SP JOIN P. 

    .   ! 
    6.7.      .     
 ? 
    6.8.       1,   

    n*l=l*n=n 

       .  ,  1     
   .   ,  
     ?  ,  ? 
    6.9.       0,   

    *0 = 0* = 0 

       .   ,   
    ?  ,  ? 
    6.10. ,     ,    
,  ,        . 
    6.11.        .   
   : 
    )   ; 
    )   ; 
    ) A TIMES ; 
    ) A UNION ; 

    162	 II.   

    ) A INTERSECT BJ 
    ) A MINUS ; ) A JOIN.; 
    3) A DIVIDEBY ; 
    )  (-)  ; )   
  . 
    ,          
     (,   
UNION    ). 
    6.12.      ,     
  ,     .    
   ,     
,     .      
 ? 

       

              
       
      (  
),     .  ,  
   .     
 (  )   : 
    S        ( S#, SNAME, STATUS, CITY ) 
    PRIMARY FEY ( S# ) P ( P#, PNAME, COLOR, WEIGHT, CITY ) 
    PRIMARY KEY ( P# ) J ( J#, JNAME, CITY ) 
    PRIMARY KEY ( J# ) SPJ ( S#, P#, J#, OTY ) 
    PRIMARY KEY ( S#, P#, J# ) 
    FOREIGN KEY ( St ) REFERENCES S 
    FOREIGN KEY ( PI ) REFERENCES P 
    FOREIGN KEY ( J# ) REFERENCES J 
    6.13.      . 
    6.14.        . 
    6.15.   ,    . 
    6.16.   ,       300 
 750 . 
    6.17.    "  ". 
    .       ""   
 ",       ",   " ". 
    6.18.     " - - 
",    ,       . 
    6.19.     " - - 
",    ,       
 . 

     6.  : I.  	163 

    6.20.     " - - 
",       ,   
     . 
    6.21.   ,    . 
    6.22.   ,      
  . 
    6.23.     ,      
     . 
    6.24.   ,    , 
     ,   . 
    6.25.   ,      
     . 
    6.26.      ,    
  . 
    6.27.    ,   S1. 
    6.28.     1,   S1. 
    6.29.   ,   ,   , 
     . 
    6.30.   ,      
   320. 
    6.31.   ,   S1. 
    6.32.   ,   S1. 
    6.33.   ,   -   . 
    6.34.   ,      , 
   S1. 
    6.35.   ,      
,      ,    
    . 
    6.36.     ,     S1. 
    6.37.   ,       
 . 
    6.38.   ,     
  1 ,     , 
   J1. 
    6.39.   ,   1   
  ,     1    
 . 
    6.40.   ,       
  . 
    6.41.   ,    S1. 
    6.42.   ,    . 
    6.43.   ,        
 . 
    6.44.   ,      
  S1. 
    6.45.   ,        
,     . 

    164	 II.   

    6.46.   ,    , 
   . 
    6.47.   " - ", ,   
    . 
    6.48.     , , Sx  Sy, ,  
           . 
(  -   (Fauna Mill)   
 (, ),   .) 

      

    6.1. Codd E.F. A Relational Model of Data for Large Shared Data Banks // 
CACM.  1970.  13,  6. (: Milestones of Research  Selected Papers 
1958-1982 (CACM 25th Anniversary Issue) // CACM.  1983.  26,  1.) 
         ,     
 ,  .  ,  
       ,  
      ,     
 .  ,  X, Y  ..  
     . 
           
;        
  , , ,    
     . 
          {, Y}  B{Y]   
          , 
 A[Y]   (   ) 
 . 
            . 
         ( ). 
          {1,2,... ,},    
    ,   []=[7]     
,        ,     
  . 
          {, Y}  B{Y, Z}  
          {X, Z} 
         Y. 
         .   
{, Y}  B{Y, Z},          
 {, Y,Z}, ,  [, Y]=A  C[Y,Z\=B.   
(       ,  
     ,     
)     ,        
. ,  0- (   "" ), 
.. ,      , 
   "",  . 
    6.2. Codd E.F. Relational Completeness of Data Base Sublanguages // Data 
Base Systems, Courant Computer Science Symposia Series 6.  Englewood Cliffs, 
N.J.: Prentice-Hall, 1972. 

     6.  : I.   165 

           
,    ,    .  
 , , , ,  
, , 9- (  ),   
6-.         
    . 
      :        
       (  
  ). 
      :       
   (      )  
,          . 
      :      
     . ,   
    , ,   
        . 
      :      EXTEND, 
SUMMARIZE,     . 
    6.3. Darwen H. Private communication.  1992. 
        SUMMARIZE,   
 ,    .     
         BY 
  

    SUMMARIZE term BY relational-expression 
    ADD aggregate-expression AS attribute : 
    SUMMARIZE SP BY S   [  S#  ]   ADD COUNT AS NP 

          S5  ,  
.    

    SUMMARIZE A BY  ADD  AS  Z 

      : 
               
 , ..         
.      AI, A2,..., An. 
              
 Z. 
           (,   
  ,      Z;   
  Z        
  ,         Al, 
A2,..., An,    t. 
         SUMMARIZE  , 
    ,   ,       
 ,    .     : 
          ,      
   1,2,... ,,    /, ,   
       .   
   ,   COUNT  SUM    

    166	 II.   

    .       " " ( " 
"       ).  
 MIN    " " ( ).  
 AVG    . 
                
 ,     ,    

    SUMMARIZE SP BY SP [ S# ] ADD COUNT AS NP 

           SUMMARIZE. 
     ,  ,       
SUMMARIZE  

    SUMMARIZE SP BY TABLE_DEE ADD SUM ( QTY ) AS GRANDTOTAL 

     , ..   ,   ,  
  SP   (    SUMMARIZE, 
   ). .  4,    TABLE_DEE. 
    6.4. Darwen H., Date C.J. Into the Great Divide // C.J. Date and Hugh 
Darwen. Relational Database Writings 1989-1991.  Reading, Mass.: 
Addison-Wesley, 1992. 
     ,      ,    
  -,    : 
      .  
  (  )    , 
          .  
   .    {X, Y}  B{Y, 
Z}  

    A DIVIDEBY  

        {X, 2}  ,     
{:, Z:z},    {:, Y:y}       
 { Y:y, Z:z},    . , ,   
    (SP{S#, P#}  PJ{P#, J#}),  SP ,  
   , a PJ ,     
 .   

    SP DIVIDEBY PJ 

        {S#, J#},     
   ,       
,    .  ,  

    PJ DIVIDEBY SP 

        {J#, S#},     
   ,       
,   . 
      ,   .   ,   
    ,      
    (     DIVIDEBY 
  ).    ,     
       ;  ,  
   ,      
,       ""! 
     ,   DIVIDEBY    , 
    ,     
 ,  .   

     6.  : I.  	167 

    "  ,     ". 
,        ,   
  ,   .     : 

    SP   [ S#,   #  ]   DIVIDEBY    [  #  ] 

      (      
),        ,  ,  
       #. ,    
, ,         S5   
 ,    !  ,  
 ,     SP, ,  
,   ,    DIVIDEBY . 
       ,    " ".  
 ,        {X}, {X, Y}  {?}.  
       ( A DIVIDEBY  PER AB)    
 {X}  ,     {:},    
{:, Y:y}      {:},  ,   
 : 

    . WHERE FORALL  EXISTS  ( . = . AND . Y = B.Y ) 

    ( FORALL  EXISTS    7).   
"  ,     "  
  ( ): 

    S   [  S#  ]   DIVIDEBY    [  #   ]   PER SP   [  S#,   P#  ] 

         ,  . 
      . 
    . ,       
" ",      {X}, {X, Y}  {} 
.      . 
    6.5. Goldstein R.C., Strnad A.J. The MacAIMS Data Management System // 
Proc. 1970 ACM SICFIDET Workshop on Data Description and Access.  1970. 
    6.6. Strnad A.J. The Relational Approach to the Management of Data Bases 
// Proc. IFIP Congress.  Ljubljana, Yugoslavia, 1971. 
     MacAIMS [6.5, 6.6]       , 
 -     .   
       . 
            .   
  ,  "  ", 
   ,       
  ( ,  ). 
        "  ".   
 (..  )    ,  
          
.     :      
      ,       
  ,      ,  .    
      (     
 )       
 ;  ,   , ,  

    168	 II.   

    ,     ,     
      .      
 ,     , , , 
      (, ,    
  ). 
    6.7. Notley M.G. Peterlee IS/1 System // IBM (UK) Scientific Centre Report 
UKSC-0018. 1972. 
    .   [6.8]. 
    6.8. Todd S.J.P. The Peterlee Relational Test Vehicle  A System Overview 
// IBM Sys. J.  1976.  15, 4. 
    Peterlee Relational Test Vehicle (PRTV)    , 
    IBM UK, , .    
     IS/I [6.7].    - 
      ISBL (Information System Base 
Language     ).    
  ,   [6.9]. ,    
      ,   
  ,     ISBL    
[6.9].  PRTV    . 
             (  
     ). 
         ,     
,        (.. ). 
       " ", ..   
,     . 
    6.9. Hall P.A.V., Hitchcock P., Todd S.J.P. An Algebra of Relations for 
Machine Computation // Conference Record of the 2nd ACM Symposium on 
Principles of Programming Languages.  Palo Alto, Calif, 1975. 
    6.10. Furtado A.L., Kerschberg L. An Algebra of Quotient Relations // 
Proc. 1977 ACM SIGMOD Intern. Conf. on Management of Data.  Toronto, Canada, 1977. 
           
  " " ("quotient relations").  
 R,       R  
        ( ,   
 BY  SUMMERIZE,    ). , 
 ,     S   
  CITY       :   
     ,      
  ,        .  
,        
          
 . 
    6.11. Merrert .. The Extended Relational Algebra, A Basis for Query 
Languages // B. Shneiderman (ed.). Databases: Improving Usability and 
Responsiveness.  New York, N.Y.: Academic Press, 1978. 
               
      (    
7),     ""  "".    
    ,  "   ", "  
", " "  .. 

     6.  : I.  	169 

    6.12. Hall P.A.V. Relational Algebra, Logic and Functional Programming // 
Proc, 1984 ACM SIGMOD Intern. Conf. on Management of Data.  Boston, Mass., 1984. 
            
 (   )      
"  " (4GL)   ,  
    ,      
 .  , ,    
           , 
         
      .    
      . 
    6.13. Klug A.  Equivalence of Relational Algebra and Relational Calculus 
Query Languages Having Aggregate Functions // JACM.  1982.  29,  3. 
            
       (  
    SUMMARIZE,     )  
    . 

        

    6.2.   JOIN      . 
  INTERSECT    : 

    A INTERSECT   A MENUS   ( MINUS  )  
     INTERSECT  s  MINUS   ( MINUS A ) 

          ,   
,  A INTERSECT    
   ,      .    
  : 

    ( A MINUS (  MINUS  ) ) UNICN (  MINUS (  MINUS  ) ) 

    .  ,        ,  

     INTERSECT    JOIN  

      .  , ,  Y ,    
  DIVIDEBY    .  

     DIVIDEBY  =  [ X ] MINUS 
    ( (  [ X ] TIMES  ) MINUS  ) [ X } 

    ,    JOIN      
TIMES   TIMES     JOIN,   
JOIN       TIMES. 
     , ,     ,  
    UNION  INTERSECT     
 MINUS  .  NOT (R)     R, .. 
   ,       R, 
   . : 

     MINUS  s NOT ( ( NOT (  ) ) UNION {  INTERSECT  ) ) 

    6.3.  INTERSECT  (.    . 6.2). 
    6.4.     "". 

    170	 II.   

         ,   
,  ,      . 
    . 
         ,   , 
 ,      .   
  . 
        ,   , 
 ,  ,  ,    
.      .  ,  
               
   ,     .     
   ,    ,    
         ( ),  
       ( ). , 
        
,  ,   . 
            ( 
    ),   
()    (    
).         ,  
      ,     
  (    ). ,  
  . 
        ,    
     (.. ,   
  - ). ,    . 
    6.5.  .  DIVIDEBY, ,     
    (..   ).    
   ,          
         : 

    (  A TIMES  )   DIVIDEBY  =  

              
      ,    
  ,   ,      
  : 

    (  A DIVIDEBY  )   TIMES  <  

            
" ".   ,    
         
[] ( X         ),  
  . 
    ,        DIVIDEBY 
PER,   [6.4]. 
    6.6.    ,   JOIN   CITY 
 ,    S#  # (     JOIN). 
   : 

     6.  : I.  	171 

    s#	SNAME	STATUS	CITY	P#	QTY	PNAME	COLOR	WEIGHT 
    SI	Smith	20	London	PI	300	Nut	Red	12 
    SI	Smith	20	London	P4	200	Screw	Red	14 
    SI	Smith	20	London	P6	100	Cog	Red	19 
    S2	Jones	10	Paris	P2	400	Bolt	Green	17 
    S3	Black	30	Paris	P2	200	Bolt	Green	17 
    S4	Clark	20	London	P4	200	Screw	Red	14 

    6.7. 2".      (..   
  ,   ,    )  
""  (..     ,    
 TABLE_DUM,     ,  TABLE_DEE  
 ). 
    6.8. ,   ,   TABLE_DEE.  TABLE_DEE 
(   DEE)          
 ,  

    R TIMES DEE = DEE TIMES R = R 

       R.  , DEE      
 TIMES ( ,   JOIN). 
    6.9.   ,     TIMES  
    .    
TABLE_DUM (  DUM)     ,    
  R 

    R TIMES DUM = DUM TIMES R =      

     ,    R 
    6.10. ,    DEE  DUM  , 
  ,    DEE  DUM.    : 

    UNION	DEE	DUM 
    DEE	DEE	DEE 
    DUM	DEE	DUM 
    INTERSECT	DEE	DUM 
    DEE	DEE	DUM 
    DUM	DUM	DUM 
    MINUS	DEE	DUM 
    DEE	DUM	DEE 
    DUM	DUM	DUM 

            ,    
 (  , ,     ). 
 ,        
 , ,   ; ,    . 
    ,  : 
         DEE   DEE,    
  ,  DUM,    . 
         DUM   DUM. 
              
DUM,    ,   DEE   .  
,   DEE   DUM,    
 ,   . 
            
  ,    [6.4]. 
       R,   DEE,     R. 
       R,   DUM,     
    ,     R. 

    172  II,   

      DEE,    R,     R. 
      DUM,    R,     
    ,     R. 
       ,   ,     
DEE.  ,   ,     DUM. 

       : 

       DEE   DUM    
          ,  
   . 
       DEE   DUM (   
 )          
,     . 
    6.11.    , ,  "   " 
 .     ,    
 " "   : 
    )          
 ; 
    )          ,  
    .      
    ; 
    )          
  KB       
A TIMES , 
    )    A UNION     ; 
    )       (   
 ); 
    )          
  A MINUS , 
    )          
(     ).  ,   
 ,         
 ,         ; 
    )       (    ); 
    )          
   ; 
    )         
  ,    BY. 
            
  . : 
       {S#, P#, J#}      
 SPJ WHERE s# = 'si1;    (#, J#}. 
       ,   {X, Y, Z}   
  X,  " " Y - Z ( 
    9),  Y    
     Y  Z. 

     6.  : I.  	173 

                ,  
        
  UNION . 
     ..        
   . 
    6.12. ! 
    6.13.  
    6.14. J WHERE CITY = 'London1 
    6.15. ( SPJ WHERE J# = 'Jl1 ) [ S# ] 
    6.16. SPJ WHERE QTY > 300 AND QTY < 750 
    6.17. P [ COLOR, CITY ] 
    6.18. ( S JOIN P JOIN J ) [ S#, P#, J# ] 
    6.19. ( ( ( S RENAME CITY AS SCITY ) TIMES ( P RENAME CITY AS PCITY ) 
TIMES ( J RENAME CITY AS JCITY ) ) WHERE SCITY # PCITY OR PCITY  JCITY OR 
JCITY  SCITY ) [ S#, P#, J# ] 
    6.20. ( ( ( S RENAME CITY AS SCITY ) TIMES ( P RENAME CITY AS PCITY ) 
TIMES ( J RENAME CITY AS JCITY ) ) WHERE SCITY  PCITY AND PCITY * JCITY AND 
JCITY * SCITY } [ S#, P#, J# ] 
    6.21. ( SPJ JOIN ( S WHERE CITY = 'London' ) } [ P# ] 
    6.22. (( SPJ JOIN ( S WHERE CITY = 'London')) [ P#, J# ] 
    JOIN ( J WHERE CITY = 'London' ) ) [ P# ] 
    6.23. ( ( S RENAME CITY AS SCITY ) JOIN SPJ JOIN 
    ( J RENAME CITY AS JCITY) ) [SCITY, JCITY ] 
    6.24. ( J JOIN SPJ JOIN S ) [P# ] 
    6.25. ( ( ( J RENAME CITY AS JCITY ) JOIN SPJ JOIN ( S RENAME CITY AS 
SCITY ) ) 
    WHERE JCITY * SCITY ) [ J# ] 
    6.26. ( ( ( SPJ [ S#, P# ] RENAME S# AS XS#, P# AS XP# ) ) TIMES 
    ( ( SPJ [ S#, P# ] RENAME S# AS YS#, P# AS YP# ) ) ) WHERE XS# = YS# AND  
XP# < YP# ) [ XP#, YP# ] 
    6.27. ( SUMMARIZE ( ( SPJ WHERE S# = 'SI' ) [ J# ] ) BY () 
    ADD COUNT AS N ) [ N ] 
      ,  ,  ,     
(,       ,   
 ),   S1   ;   
   .      
 : 

    174	 II.   

    ( EXTEND ( S WHERE S# = 'SI1 ) ADD COUNT ( ( MATCHING SPJ ) [ P# ] ) AS N 
) [ N ] 
    6.28. ( SUMMARIZE ( SPJ WHERE S# = 'SI' AND P# = 'Pi') ) BY () 
    ADD SUM ( QTY ) AS Q ) [ Q ] 

        (?).     
 . 

    ( EXTEND ( S WHERE S# = 'SI' ) ADD SUM ( ( MATCHING SPJ ) WHERE P# = 'PI', 
QTY ) 
    AS Q ) [ Q ] 
    6.29. SUMMARIZE SPJ BY ( P#, J# ) ADD SUM ( QTY ) AS Q 
    6.30. { ( SUMMARIZE SPJ BY ( P#, J# ) 
    ADD AVG ( QTY ) AS Q ) 
    WHERE Q > 320 ) [ P# ] 
    6.31. ( J JOIN ( SPJ WHERE S# = 'SI' ) ) [ JNAME ] 
    6.32. ( P JOIN ( SPJ WHERE S# = 'SI' ) ) [ COLOR ] 
    6.33. ( SPJ JOIN ( J WHERE CITY = 'London' ) ) [ P# ] 
    6.34. ( SPJ JOIN ( SPJ WHERE S# = 'SI' ) [ P# ] ) [ J# ] 
    6.35. ( ( ( SPJ JOIN ( P WHERE COLOR = 'Red' ) [ P# ] ) 
    [ S# ] JOIN SPJ ) t P# ] JOIN SPJ ) [ S# ] 
    6.36. ( ( S [ S#, STATUS ] RENAME S# AS XS#, STATUS AS XSTATUS ) TIMES 
    ( S [ S#, STATUS ] RENAME S# AS YS#, STATUS AS YSTATUS ) ) WHERE XS# = 
'SI' AND XSTATUS > YSTATUS ) [ YS# ] 
    6.37. J [ J# ] MINUS 
    ( ( J [ J#, CITY ] RENAME CITY AS XCITY ) 
    TIMES J [ CITY ] ) WHERE XCITY > CITY ) [ J# ] 
    6.38. ( ( ( SUMMARIZE ( SPJ WHERE P# = 'PI' ) BY ( J# ) 
    ADD AVG ( QTY ) AS QX TIMES ( SUMMARIZE ( SPJ WHERE J# = 'Jl' ) BY ( ) 
    ADD MAX ( QTY ) AS QY ) [ QY ] ) WHERE QX > QY ) [ J# ] 

    .        , 
     .     : 

    ( EXTEND ( SPJ WHERE P# = 'PI' ) ADD AVG ( ( SPJ RENAME J# AS ZJ# ) 
    WHERE ZJ# = J# AND P# = 'PI', QTY ) AS QX ) 
    [ J#, QX ] TIMES 
    ( EXTEND ( SPJ WHERE J# = 'Jl' ) 
    ADD MAX (( SPJ WHERE J# = 'Jl', QTY ) AS QY ) [ QY ] ) WHERE QX > QY ) [ 
J# ] 

     6.  : I.  	175 

    6.39. ( ( ( ( ( SPJ WHERE P# = 'PI' ) [ S#, J#, QTY J ) 
    RENAME; j# AS xj#, QTY AS XQ } TIMES ( SUMMARIZE ( SPJ WHERE P# = 'PI1 ) 
BY ( J# ) 
    ADD AVG ( QTY ) AS Q ) ) WHERE XJ# = J#  XQ > Q ) [ S# ] 
    6.40. J [ J# ] MINUS 
    ( ( S WHERE CITY = 'London1 ) [ S# ] 
    JOIN SPJ JOIN ( P WHERE COLOR = 'Red' ) ) [ J# ] 
    6.41. J [ J# ] MINUS ( SPJ WHERE S# * 'SI' ) [ J# ] 
    6.42. ( P WHERE ( MATCHING SPJ ) f J# J > 
    ( J WHERE CITY = 'London' ) [ J# ] ) [ P# ] 
    6.43. ( SPJ [ S#, P#, J# ] DIVIDEBY J [ J# ] ) [ S# ] 

    .    ,   SPJ  . 

    6.44. ( J WHERE ( MATCHING SPJ ) [ P# ] > 
    ( SPJ WHERE S# = 'SI' ) [ P# ] ) [ J# ] 
    6.45. S [ CITY ] UNION P [ CITY ] UNION J [ CITY ] 
    6.46. ( SPJ JOIN ( S WHERE CITY = 'London1 ) ) [ P# J 
    UNION ( SPJ JOIN ( J WHERE CITY = 'London1 ) ) [ P# J 
    6.47. ( S TIMES P ) [ S#, P# ] MINUS SP [ S#, P# ] 
    6.48.      . ,   
 (Hugh Darwen),        . 

    1 := ( SP RENAME S# AS SA ) [ SA, P# ] ; 
    /* Tl {SA,P#} :  SA   # */ T2 := ( SP RENAME S# 
AS SB ) [ SB, P# ] ; 
    /* T2 (SB,P#) :  SB   # */ T3 := Tl f SA ] 
    /*  {SA) :  SA    */ T4 := Tl [ SB ] 
    /* T4 (SB) :  SB    */ 5 := Tl TIMES 4 
    /* 5 {,SB,#) :      
      SB   # */ 6 := 2 TIMES  
    /* 6 {,SB, #} :  SB    
      SA   # */ 7 := Tl JOIN T2 
    /* TV {SA,SB,#} :  SB  SA   # */ 8 :=  
TIMES T4 
    /* 8 {SA,SB} :  SB    
          */ 

    176  II.   

    9 := SP [ # ] ; 
    /* T9 {P#} :  #    */ 10 := 8 
TIMES T9 
    /* 10 {SA,SB,P#} : 
     SA   ,  SB  
    #    */ Til := T10 
MINUS T7 
    /* Til {SA,SB,P#} :  # , 
       SA  SB  */ 12 := 6 INTERSECT Til 
    /* 12 {SA,SB,P#) :  #   SA, 
        SB */ 13 := 5 INTERSECT Til 
    /* 13 {SA,SB,P#} :  #   SB, 
        SA */ 14 := 12 [ SA, SB ] ; 
    /* 14 { SA, SB } : 
     SA   ,    SB 
*/ 15 := 13 [ SA, SB ] ; 
    /* 15 { SA, SB } : 
     SB   ,    SA 
*/ 16 := 14 UNION T15 ; 
    /* 15 {SA,SB} :     SA 
      SB,     */ 17 := 7 [ SA, SB ] ; 
    /* 17 { SA, SB } : 
         SA  SB */ 18 := 17 
MINUS T16 ; 
    /* 18 {SA,SB} : 

         SA  SB,   
,  SA    SB,   ,  SB 
   SA  ,  SA  SB      
 
   */ 19 := 18 WHERE SA < SB ; 
    /*     */ 
       (  !)   
.   RA  S,    S#   
 SA,       ,   
 RB.         : 

     6.  : I.  	177 

    ( RA TIMES RB ) WHERE   { SP WHERE S# = SA ) [ P# ] = 
    ( SP WHERE S# = SB ) [ Pt ] AND     SA < SB 

       (SA < SB)       
   .  ,    (Sa, Sa)  
    (Sa, Sb)  (Sb, Sa). 

    178	 II.   

