     19 

    ,     

    19.1.  

      4  ,       , 
 ,    ,   INTEGER, 
FLOAT  BOOLEAN.          
,  supplier number ( ), part number ( 
), weight ()  color ().     
   ( ),     
     . ,    
   .      
  . 
        ,  ,  
,   ,       
.     ,  ,  
     (),    
 ,     .   
      , ,   
  . (    
"  ".) 
     ,      "  ",  
',       " ,  ". 
       ,    ,   
       , ..    
.   6  ,      
  ,   ,     (   
),   (   )    
,  ,  ,    , 
     .    
 . ,        , 
    , ..    
          
 , (        .) 
        ,      
 ,      .    
         .   
  . 

    19.2.  

      .       
  ,   =, ^, <  .. 

    518	 V,   

       

      ,     . ,  
        SP.S# = s.st 
 ,        .    
  SP.P# = s.s#  ,     
   .   [4.4]     
(  )        
(-),     ,    
    .    , 
   ,   ,   
     . 
     -   ,    
 ,    ,  . 
,   ,       
,  " ,   
"        
 ,      .    
   ,      
  . ,     
       . 
     , -      
  . 
     ,     ,  p.WEIGHT > 
15, ,  ,     ""  
.   ,     (WEIGHT)   
 , a WEIGHT ()  INTEGER ( )  
()  . ,   , 
  .     .  
       . 

    P.WEIGHT > SP.QTY 

    ,  WEIGHT  QUANTITIES ()    . 
 ,      , ..  
 .  ,     : 

    P.WEIGHT - SP.QTY > 0 

     [4.4]      .  
      ,    
 ,   ,     
  "  " (     
 ).  ,  ,    
   ,    .   
  . ,    [4.4],   
    ,  , -  
    "  ". 
       : 

    S.S# = '1 .# = '' S.S# = .# 

        
             ', 
             ', 
        . 

     19. ,    	519 

     ,    ,   ,   , ,   
=   (..   )  b =   ,   = b  
   ,       !  
   ? 
      ,       
 .     ""    
 S#;  ,      ,  
 .    ""     #,  
,      ,    . 
        ,  
          
.         
 . 
    (,        , 
      .  ,  
,  ,   ,    
   ; ,    "Red" 
("")     S#.) 
      (), S#  #    
 ,          
 " ".   ,    
     ,   
         .  
       ,   
 ,  .  , , 
 ,    (    CHAR) 
 " ", ..      
   .        
 ,         : 

    CHAR   (  S.S#   )   = CHAR   (  .#   ) 

     ,       
,  "  ",       
 (  ) .  ,   
    ,   - 
 .. 
    .  ,      
     ,    ,  
    .  ,    
  6  (      ,  0   ) 
     : )    
 (..       ); )    
    ,         
  (..   ). 
            
 .       
 .   ,   ,      
 ,   ,   , : ) 
   ; )       : 
      ,    
 ,       
      . (   
,     ""    
 .)      ,    
         
,     . 

    520	 V.   

       .       
  ,       
 ,    .       
,  P.WEIGHT > 15,    
(,   WEIGHT     INTEGER),   
   , , : p.WEIGHT > WEIGHT(15). , 
    ,   ,    
  . 

       

          ; 
     ,       
   (          
      ). , 
  : 

    P.WEIGHT + SP.QTY P.WEIGHT * SP.QTY 

          ,     
 .      :   
   ,     (   
   WEIGHT, ..    WEIGHT). 
     ,      ,   
,   . 
    1.     Di     
,      di   .   
   ,   ,   ,  
      (  )   
       . 
    2.      Di  Dj (  )  
   ,      
 di  dj   .    , ,  
,   SP.S# = s.s#  p.WEIGHT * SP.QTY   (  
)   SP.P* = s.s#  p.WEIGHT + SP.QTY .  
, ,        , 
       . ,  
   SEX (),    ""  
"",    "="  "*",   "<"   . 
    3.             
    ( > 0)  - , 
       ,     
 . 
    4.         
  .    , ,  
,           
    . 

         . 

          :    ,   
,     ,     
   . 
          ,     
   (      

     19. ,    	521 

 "  ").  ,   
       .  
, ,        
"Boolean" (..   ),     
 ! 
       ,       
 ,    ,   
  . ,      
     INSERT  UPDATE,     
    , 

      

             ,   
  ,   ,      
 ,  .     ,  
      ( ,   ..).  
 ,       ,   
     .   
""     ,   . 
     ,  , 
   ..      
  ,    ,    , 
    .   "  "   
     ( "").  
,  ,      . 
,          
,     , 
     ,      ""   
.    .         
 "" (.. ),      
  .       , 
          
   .        
  "",    ,    
        
. (    !) 
       . ,     
 (, ,   ..).     
     POINT.      
  . 

    CREATE DOMAIN POINT REP   ( X FLOAT,   Y   )   ; 

     REP     representation ().   
      .  
,   POINT     X  Y  FLOAT, 
        
.   ,       
 : 

    CREATE DOMAIN  REP   (  R ,   THETA FLOAT  )   ; 

      ,       
  .         
 ,         
(.   ). 

    522	 V,   

       ,     POINT. : 

    CREATE BASE RELATION TRIANGLES ( TRIANGLE_ID . . ., A DOMAIN ( POINT ),  
DOMAIN ( POINT ),  DOMAIN ( POINT ) ) CANDIDATE FEY ( TRIANGLE_ID ) CANDIDATE 
KEY ( , ,  ) ; 

    ,      ,   .  , 
         FLOAT, 
  ,     (  ). 
      ,       ( 
    ),      
 POINT.  ,  ,     
POINT,    POINT       . 
    . 

    CREATE FUNCTION POINT ( A FLOAT,  FLOAT ) RETURNS { POINT ) AS BEGIN ; 
    DECLARE P POINT ; P.X := A ; P.Y :=  ; RETURN ( P ) ; END ; 

     POINT     FLOAT   (  
,    -).  .  P.Y 
    X  Y    . 
             POINT?   
   . 

    CREATE FUNCTION X ( P POINT ) RETURNS ( FLOAT ) AS BEGIN ; 
    RETURN ( P.X ) ; END ; 
    CREATE FUNCTION Y ( P POINT ) RETURNS ( FLOAT ) AS BEGIN ; 
    RETURN ( P.Y ) ; END ; 

       Y   -  -  POINT. 
 !    ,     
   ,   ,  . 
 ,    R  ,   
 .        
Y,      . 
           Y. 

      := POINT   ( X(P),   -Y(P)   )   ; 

         POINT, , ,  .  
        
 ',       .  , 
       (, ),   
         
(, -). 
    ,  ,   POINT, , Y ( ..),   
 ,       
  POINT.  , ,     
    FLOAT ""     " "  
  ,    .     
       ,  
  . 

     19. ,    	523 

    ,         
    ,      
     ,    
    ,     
 ,     ,     
. ,   ,     
        .   
           
   WEIGHT   QTY?  : " 
            " . 
        POINT.       
    LINESEG ( , line segment   ), 
   . 

    CREATE DOMAIN LINESEG REP ( START POINT, END POINT ) ; 

     ,        
   ,     ,  
     . 
             
    . 
    -,  ,     ,  
 ,     .  
   -    ,  
   -     
.      ,   
,     .  , 
        . ,   
    (  -). 
       . 
    -,        
,    ,    ( ,  , 
   )      , 
  .  ,    
 ,        
(    ).     
  . 
    -, .       
    . ""  ,  
    (, ,   ..). "" 
 ,       . 
,    : YEAR (), MONTH ()  DAY 
(),    DATE ()     
.   ,      ,   
           
   ,    .  
,         [4.4] ,  
          
 . 

     CREATE  DESTROY DOMAIN 

            
  CREATE  DCMAIN  DESTROY DOMAIN.    

    CREATE DCMAIN. 
    CREATE DCMAIN domain representation  [   conditional-expression ] 

    524	 V.   

     domain  ,   
conditional-expression     (.  16), a 
representation   : 

    REP  (  component-rep-conmalist ) 

      , component-rep-commaiist     
;        , 
      (. ,  
   ). 
    .           
 ,          
,   CREATE DOMAIN    ,  
   ,    . 
       DESTROY DOMAIN,       
 4. 

    DESTROY DOMAIN domain ; 

      4  ,     ,  
     ,     
.  ,    ,     
     ,   
          
     . 

    19.3.  

       .        
 ,     ;   , 
,     (.  6). 

       

      ,       ( 
,          
,         
      ).   
      ;  
      (,   ,   
  )    . ,   
   , ,    
 ,      ,   
 ,       .. 
     ,       
.    ( ,  ), ,  
 ,     " ",  
      ,    , 
   .     
      ,       
      .     
    .       
   ,  
    1)           (,   
       ); 
    2)   (..       
)  ( ,     ). 

     19. ,     525 


       

         ,    
        .  
 ,       (, 
     ,         
).  ,        
  ,   .     
    ( )    
 (..  ).      . 
       ,     
   (.  6).     
     ,    ( ,  ). 
       6,    ,  
           
 .      ,    
,           
  .  ,    (  
)   {, Y}  B{Y, Z},       
 YA       YB   .  ,   
YA  YB   ,    ,   
   ,  ,   {X, Y, 7}.    
   Y   ?      YA,  
YB,       . 
         YA  YB ,     
YA       YB  ,  
    .    
  " ".         
   (  YB),    . ( 
    ,     
 .     "  
",  .) ,  YA    
  YB    , ,   
       (YA), ..   
         
.         
,          . 
      ,      
        ,  
 . 
       (  )   
     ,      
 , ,  ,  ,  
 .      ,    
. (,       
  ,    , , , 
       ,   
      !) 
     ,   ,   "  
"   .   ,   
     ,   , 
      ,    
    ,     
.  ,  "      () 
     ,        
"   

    526	 V.   

.   .  ,    
      . 
, ,   [4.4],   ,  , 
    .         
     "  ". 

     

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

    {   <Al:vl>,   <A2:v2>,   ...,   <An:vn> }, 

       Ai   ,   v/   
()  ?>/,   Ai. (,    
    ,      
,       ,   
        , , 
      .)  , 
    ,   

    (   <A1:D1>,   <A2:D2>,   ...,   <An:Dn> }. 

    ,         
 .    , ,   , , 
      .  
  ()     INSERT  UPDATE. 
   (    )   
  (   ). 
         ,   . 
           . 
         . 
              
  . 
           . 

    19.4.   

              
 12.   ,         
   . 
      ,       
.   ,    ,   Y   
 X (   X    Y)    
,     Y     X. 
,  CIRCLE ()    ELLIPSE (). 
,  ELLIPSE     CIRCLE,    
     . ,  
  (..       ). 
         ?    (    
) :   ,       
  X,    ,      X 
   Y.    ,    
  '. 

     19. ,    	527 

           Y ,  
    X;     
. , ,     ELLIPSE,  
      CIRCLE. 
    .     ,   
,          . 
             
.   , , , , 
      X,     
        Y. , 
,     90,       
CIRCLE,      . 
              
.    .

     

    ,    ELLIPSE   : 

    CREATE DOMAIN ELLIPSE REP   ( A FLOAT,      )   ; 

       ,      , 
     .        
   (   : ^ +2=1). 
     ,     : 

    CREATE FUNCTION AREA (  ELLIPSE ) RETURNS ( FLOAT ) AS BEGIN ; 
    RETURN ( PI * E.A * E.B ) ; 
    END ; 

     PI      (   
nab). ,      (    
  ). 
        CIRCLE, ,     
  : 

    CREATE DOMAIN CIRCLE   (  R   )   ISA   (   ELLIPSE  )   ; 

         . 
    1.    ISA ( , "is a"  ) ,  
  ,    -. 
    2.  ,    "     
X"  ,      Y    
    X (    
,      ).     
         ,     
    R.   ,   
"     X" ,     
Y     '. (  .   
   CIRCLE   ELLIPSE.) 
    3.     ,  ,  
AREA,      . -    2 
       AREA 
 ; 

    528	 V.   

    CREATE FUNCTION AREA AS BEGIN ; 
     CIRCLE ) RETURNS ( FLOAT ) 
    RETURN ( PI * ( C.R 2 ) ) 
    END 

    . ,        
    ELLIPSE      AREA, 
    ELLIPSE. 

    4.        ,   
,   ,     ,   
   . ,   : 

    CREATE FUNCTICN DIAMETER (  CIRCLE ) RETURNS ( FLOAT ) AS BEGIN ; 
    RETURN ( 2 * C.R ) ; 
    END ; 

      ,   ,   (  
)    (..   ). 
    5.    ,     

    AREA  (  figure ), 

     figure  ,        
,         . 
   (..      ),  
  ,     AREA ,     
 .        . 
    6.   ELLIPSE  CIRCLE      
. ,        . 
          ( ""  
    ""),   ( , 
,    ),   
( , ,    ),  
 (       
)    ISA.       
" ". 
    7.         
  ,    .    
  : 
                
  .        ,    
    (    ). 
         :=         
  .        ,    
    (    ). 
    8.      .    
      ,  
     (, ,    
, ..        , 
      ). 
      ,        
  .  ,      
 ,       . 

     19. ,     529 

    .   ""      
(,         
 )  .     
,    ,     , 

      .  ,     
"" .        
 ,   ;      
()    ,   
   . 

     

      ,        , 
    . ,   ,  
   (employees),   : 

    CREATE BASE RELATION EMP { #   . . . , ENAME   ... , DEPT#   ... , 
SALARY  . . . ) PRIMARY KEY { EMP# ) ; 

     ,      
(programmer) (    ).    
  PGMR,    : 

    CREATE BASE RELATION PGMR ISA (  ) { LANG ... ) ; 

     LANG     ,   
,  , SQL.  : 
    1.   ,   PGMR,  
    ()  ,   
 . , ()  ,   
,      ()  ,  
  PGMR. 
    2.   CREATE BASE RELATION   PGMR   
()    : 

    CREATE BASE RELATION PGMR ( EMPI    . . . , LANG    . . . ) PRIMARY KEY ( 
EMP# ) FOREIGN KEY ( EMP# ) REFERENCES EMP DELETE CASCADES UPDATE CASCADES ; 

     ,  PGMR      
: #,          
  ,  LANG.  ,   (   
"ISA (EMP) "),    PGMR     
         PGMR  
  ,     ENAME, DEPT#  
SALARY   ()    (. 19.1). 
 , ,       . 

    530  V,   

    
    	#	ENAME	DEPTft	SALARY 
    El 2  4	Lopez Cheng Finzi Saito	Dl Dl D2 D2	40K 42K 30K 35K 
    <- 	 	 EMP - 
    POTR	#	ENAME	DEPTtt	SALARY	LANG 
    2 	Cheng Finzi	Dl D2	42K 30K	 SQL 

    . 19.1.    ( ) 

    3.   ,      ( ),  
     . 
    4.     ,   ,     
     ,     . , 
         
,    ,    
. ,       HIREDATE ( 
  ),          
 ,    PGMR     HIREDATE,  
          
.   PGMR.HIREDATE     , 
   . (  ,   PGMR   
         
RENAME (.  6).) 
    5.  .      . 
,     ,   . 
       
APPLICATION_PROG-RAMMER  SYSTEM_PROGRAMMER    PROGRAMMER,   
  .        
 . 

      

    .         
.      . 

         ,   
    .   ,  
 ,        
 ,   ,  " " (.. 
   )      
     .   
         
 . ,  WHALE ()    
   MAMMAL ()    MARINE_ANIMAL ( 
).  ,        
      ( ,  
    ,      
 ) (. 19.2). 

     19. ,     531 

     , ,   " "     
   ,     
 " ". 

    |	MAMMAL          |                                                        
              |           MARINE_ANIMKL         | |          WHALE        

    , 19.2.   

           . 
    ,       
    .  ,     
 ,      . ,  
        LIFESPAN 
( ),   ,   
TAIL (),    :    ,  
   , ,      
).       
 . 
    ,        
    . ,  
,   . 19.3.     
 ,      .  ,    
,       ( PGMR),   
,       ( SECY).   
    . 19.2 , , ,   
  ,   ,  , 
  ,     . 

    ["          "| 
    ________________	I            _______________ 
    |	FULLJTIME        I                                                       
             |        PART_TIME     ] 
    ____	
    .___.	;   i 
    I_____PGMR____I	I_____SECY           | 

    , 19,3.   ( ) 


    19.5. ,     

         ,      
 ,        
.  ,     .  
,    , , ,  
  .    ,  
   

    532	 V,   

  ( .. ,   ).   
       . 

    .        
 [19.3],       . 

     . 19.4     ,   
 . (      
  RVA-,  . Relation-Valued Attribute.)  
  ,    ,   
S5,       (,  
),   -    NULL,    
         
    S#.   ,  RVA-  
       . , 
           
,   RVA-. 
    
    S_SP	s#	SNAME	STATUS	CITY		PQ 
    
    
    SI	Smith	20	London		P#	OTY 
    PI Pi 	300 200 100 
    
    
    S2	Jones	10	Paris		P#	QTY 
    PI P2	300 400 
    
    
    
    
    S5	Adams	30	Athens		P#	QTY 
    
    
    . 19.4.    ,     

          .   
PQ  . 19.4   ,    (  
 ) .  ,     
    ""     
    . 19.4 .  S_SP  
   . 
         ,   (. 
[19.6, 19.7, 19.9])     ,  
  . ,    
 "2-",  NF2= NFNF= "Non First Normal Form" ("  
 ");  ,       
. (  ,  S_SP     
.)       ,  
  (. . 19.4),    . 
        
   ,      NEST  
UNNEST        .  
   . 

     19. ,     533 

          ,  NEST  
  . ,   
(  NEST)        S#, 
SNAME  STATUS  ,    ,    
   CITY (London, Paris, Athens).    
         
{S#, SNAME, STATUS},        . 
       UNNEST   NEST.    
( UNNEST)  R    ,   
        ,   
     R. (.   [19.9], 
       .) 
     [19.3], ,      
 EXTEND (  NEST-  - ). 
          ,  . 
       ,  
   RVA-. 
         , RVA-     
 . 
      RVA-     SUMMARIZE   
 (. [6.3]). 
       RVA-     DIVIDE   
 (, [6.4]), 
       RVA-    "" . 
       RVA-       
 ""  ( ,     
  RVA-    ). 

    19.6.  SQL 

             .   
,   SQL          
.  ,    SQL   , 
   8. 

    19.7.  

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

    534	 V,   

",   ). ,   
"",    ,     
     .  ,   
   ,     
 EXTEND  SUMMARIZE'.        
  CREATE DOMAIN  DESTROY DOMAIN. 
      .         
   ,      ( 
,   ,    
,    (.  6))     
    .  ,    
   ,      .   , 
    ,     , 
      , 
      .  
        
 . (    ,   
""    ,    .) 
    ,   ( ,   ,  
,   ,    ) 
,    (  ,   )  
  .        
    .    ,  
   ,       
,         .   
 ,        ,  
   . 
               
    (     
    ).    
   ,    . 
       -,   Y     X,   
,      X,    
  Y (, ,   Y    
).  ,   ,    
  Y       X. 
       -,    Y  ,    
     X,     X 
       Y.  ,  
 Y    ,    
 X. 
         . 
    .        . 
 ,   , ,    POINT  ELLIPSE 
      FLOAT,  ,     
  . ,    CIRCLE   
ELLIPSE,  ,       
  . 
    1 ,   SUMMARIZE    
 (COUNT, SUM  ..), .. ,    
,         .  
   ,     . 

     19. ,    	535 

           ,  
   (RVA-). ,  RVA-- 
        
  RVA- (.. ,    
  )    
  (   ).   
     RVA-. 
     ,  ,   SQL      
    ,    . 

     

    19.1.    :   ; 
; ;  ;  ; , 
-; ; ; ;   
;   . 
          ? 
    19.2.  ,  "  ",   
  ,   . 
    19.3.          
,       ,  
       ?    
  : 

    ) J.CITY = P.CITY 
    )  JNAME   | |   PNAME 
    B) QTY + 100 ) QTY * 100 ) P.COLOR = P.CITY 
    C)  J.CITY < P.CITY 
    )  J.CITY = P.CITY   ||    'burg' 

    19.4.         
    EMP-PGMR   19.4. 
    19.5.  ,    ,  
   (rectangle)   (square),    
 .   ,   
       
  .   )    RECTANGLE  
SQUARE; )     RECTANGLE  SQUARE. 
    19.6.  " ",   . 19.3.   
      ( 
,       ).   
,    ()    
,     ,   
 ,         
.      ? 
    19.7.        ? 
    19.8.        ? 

    536	 V.   


      

    19.1. Cleaveland J.C. An Introduction to Data Types. Reading, Mass.: 
Addison-Wesley, 1986. 
    19.2. Codd E.F. Extending Relational Database Model to Capture More 
Meaning // ACM TODS.  1979. 4,  4. 
          ,   RM/T, 
    (  )   
  .       
   ( ,   ). 
.  [5.1]  [12.5]     . 
        . 
    19.3. Darwen H. Relation-Valued Attributes // CJ. Date and Hugh Darwen. 
Relational Database Writings 1989-1991.  Reading, Mass.: Addison-Wesley, 1992. 
    19.4. Date C.J. What Is a Domain? // C.J. Date. Relational Database 
Writings 1985-1989.  Reading, Mass.: Addison-Wesley, 1990. 
         [4.8],     
        
  .       
 (  ,     , 
       ): 
         ( ,   
,     ). 
            
  . 
         . 
         . 
       . 
          ,  
    . 
       ,      
  . 
            . 
             
 . 
    19.5. DeMichiel L.G., Chamberlin D.D., Lindsay B.G., Agrawal R., Arya M. 
Polyglot: Extensions to Relational Databases for Sharable Types and Functions 
in Multi-Language Environment // IBM Research Report RJ8888.  1992. 
      : "Polyglot       
  .    ,   
  ". (        
     .)  : 
"Polyglot        
         
    .      
 Polyglot,

     19. ,    	537 

   SQL,      Polyglot,  
        Starburst", 
     Polyglot     ,   
 .   ,    . -, 
   ()   . -, 
Polyglot     (  Polyglot  
 );  , -, -, - 
  ,  ( )     
-.   ,      
 . 
    19.6. Jaeschke G., Schek H. Remarks on the Algebra of Non Normal Form 
Relations // ACM SIGACT-SIGMOD Symposium on Principles of Database Systems.  
Los Angeles, Calif, 1982. 
       .    
,         (..   
  ,  ,    
    ).     
  NEST  UNNEST. 
    19.7. Makinouchi A. A Consideration of Normal Form of 
Not-Necessarily-Normalized Relations in the Relational Data Model // Proc. 3rd 
Intern. Conf. on Very Large Data Bases.  Tokyo, Japan, 1977. 
        ,     
 . 
    19.8. Osborn S.L., Heaven .. The Design of a Relational Database System 
with Abstract Data Types for Domains //ACM TODS.  1990.  11,  3. 
          (  
     ),    RAD. 
      (..  
)  ,    ,  
   .     CREATE DOMAIN 
(  RAD)       
 (       ). 
    CREATE DOMAIN  AS 
    OUTPUT	IS  INSERT IS  UPDATE IS  CONSTANTS ARE 
 EQUAL IS  LESSTHAN IS  PREDICATES ARE --- 
    19.9. Roth M.A., Korth H.F., Silberschatz A. Extended Algebra and Calculus 
for Nested Relational Databases // Ibid.  1988.  13,  4. 
             
    . .     
   ,    
  (, ).   ,       
,        
   . 

    538  V.   

             
NEST  UNNEST.    R    ,  
    ,     
   R.   ,   () 
 R    ,    ,  
      R,   
,  .   ,      
[19.3]. ,     TWO,    
 ,       RVX,    
  THREE.     THREE   X ( 
   RVX),     TWO,   ONE. 

    TWO _A__	RVX                             THREE _A__   X___                 
 ONE _A__            RVX________ 
    ~~~~~~1        ~	______ 1                ___                             
               1                                                   1          
      _____ 
    	1__   ___  __  
    1	X                                                                        
                        ________________   

    ,    ONE  RVX    
 ,     .    ONE 
  RVX,     THREE, ,    
,   ,    ONE.  ,  
    NEST  UNNEST .    
        , 
 :  R   RVX,    
,      RVX    , 
    . 
          R       
  RVX. 
      RVX       
 R.  ,   R    
 ,    RVX. 
    19.10. Stonebraker M. Inclusion of New Types in Relational Data Base 
Systems // Proc. 2nd Intern. Conf. on Data Base Engineering.  Los Angeles, 
Calif, 1986. 
            INGRES, 
    : 
       ; 
         ; 
              ; 
      ,       . 

     19. ,     539 

    19.11. Stonebraker M.,  Anton J,,  Hanson E.  Extending a Database  System 
 with Procedures // ACM TODS.  1987.  12,  3. 
         "  " (.. 
    , ,     
  )   .  ,  
     .     
    PARTS  S    . 
  PARTS   S1     
  QUEL: 

    RETRIEVE ( SP.P#, SP.QTY ) WHERE SP.S# = "SI" 

           EXECUTE.  
        ,  
     S1  
,   ()      
   ( S#, SNAME, STATUS  CITY)   
  ,   ( #  QTY). 
,        " " (. [19.3, 
19.6, 19.7, 19.9]). 
      ,   ,  ,  
, , ,  [19.4, 19.8],    
  ,       ( 
),          
. ,       ,   
       : , 
     ,    
       .  , 
    " " ( , 
   )      
         
 -   .    
        
""  () -  ,    
 . 
          QUEL  INGRES, 
 QUEL+.        .  
QUEL+     INGRES+   INGRES.  
     ,  , 
   INGRES+     
    INGRES.  , 
      . 
    19.12. Stonebraker M., Anderson E., Hanson E., Rubinstein . QUEL as a 
Data Type. // Proc. ACM SIGMOD Intern. Conf. on Management of Data.  Boston, 
Mass, 1984. 
        [19.11]. 

        

    19.1.  "  "  ,  
, -,     , -,     
  (  -    ,  

    540	 V,   

        ).  "  "  
,       . 
    19.2.     "  ,   
    ,     ". 
    19.3. )  (  Boolean); ) , , 
   ,    ""     
NAME; )  (  QTY); )  (  QTY), 
   (  )   ,  
   ; ) , ; ) , 
 ,   "<"    CITY (  
Boolean); ) ,  (   J.CITY = 
CHAR(P.CITY) 11 "burg"). 
    19.4.   : )  #    
  #     PGMR (  
 ); )         
    PGMR (   ).  
 PGMR: )     PGMR  ,  
      ; )   
#  ,          
  #. ,      PGMR  
    ENAME, DEPT#  SALARY.  ,   
       
(      ,    
  ).   ,    
  JOIN PGMR,    V,  () 
    INSERT  UPDATE. 
    19.5. a) CREATE DOMAIN RECTANGLE REP (A POINT,  POINT) ; 
    I*           */ /* 
,     */ /*   
RECTANGLE */ 
    /*    */ CREATE FUNCTION RECTANGLE ( A 
POINT,  POINT ) 
    RETURNS ( RECTANGLE ) ; AS BEGIN ; 
    DECLARE R RECTANGLE ; R.A := A ; R.B :=  ; RETURN ( R ) ; END ; 
    /*      */ 
    CREATE FUNCTION BL ( R RECTANGLE ) RETURNS ( POINT ) 

     19. ,    	541 

    AS BEGIN ; 
    RETURN ( R.A ) ; 
    END ; 
    /*      */ CREATE FUNCTION TR ( R 
RECTANGLE ) RETURNS ( POINT ) AS BEGIN ; 
    RETURN ( R.B ) ; END ; 
    /*      R */ R := 
RECTANGLE ( BL( R ), 
    POINT ( X(BL(R)) + Y(TR(R - Y(BL(R)), 
    Y(BL(R)) +X(TR(R)) -X(BI,(R)) ) ) ; 
    /*   SQUARE */ 
    CREATE DOMAIN SQUARE REP ( BL POINT, TR POINT ) 
    ISA ( RECTANGLE ) ; 
    CREATE FUNCTION IS_SQUARE ( R RECTANGLE ) RETURNS ( BOOLEAN ) /*  
    "", */ /*     
 */ AS BEGIN ; 
    IF X(TR) - X(BL) = Y(TR) - Y(BL) THEN RETURN ( true ) ; ELSE RETURN ( 
false ) ; END; 
    6) CREATE BASE RELATION RECTANGLE ( BL DOMAIN ( POINT ), 
    TR DOMAIN ( POINT ) ) CANDIDATE KEY ( BL, TR ) ; 
    CREATE BASE RELATION SQUARE ISA ( RECTANGLE; ) ; /*   
   */ 
    19.6,      ,  ,  
      ,     
   .         
 . 

    542  V.   

