     10 

     : 1 2   

    10.1.  

                
       , 

    S ( SI, SNAKE, STATUS, CITY ) PRIMARY KEY ( S# ) 
    P ( PI, PNAME, COLOR, WEIGHT, CITY ) PRIMARY KEY ( P# ) 
    SP ( Stt, PI, OTY ) 
    PRIMARY KEY ( Si, Pi ) 
    FOREIGN KEY ( S# ) REFERENCES S 
    FOREIGN KEY ( P# ) REFERENCES P 

     ,    ,   
 .          
   , ..       
     ,   . 
          .  , , 
     S, P  SP,     
, :     COLOR ()   ,  
   CITY ()   S,     QTY 
()   SP  ..    ?    
  ,      . 
, ,   CITY     S  
    SP (     
  ,    " "  
   ,    ).  . 10.1  
        . ( 
      SP,    
  SCP,     9.) 

    SCP 

    s#	CITY	P#	OTY 

    31	London	PI	300 
    SI	London	P2	200 
    SI	London	P3	400 
    SI	London	P4	200 
    SI	London	P5	100 
    SI	London	P6	100 
    S2	Paris	PI	300 
    S2	Paris	P2	400 
    S3	Paris	P2	200 
    S4	London	P2	200 
    S4	London	P4	300 
    S4	London	P5	400 
    
    
    , 10.1.   SCP 

     10.  : 1, 2, ,    275 


             
,    . ,     
SCP   S1    ,   S1  
 ;     SCP   S2  
  ,   S2   ,  ..   
       ,  
   .  ,   ,   
  . ,     
 S1        ,     
.  ,       
 "     " (..  ). 
        
 ,     ,   
       . 
    ,          
,    "" . (  
""         .)  . 4.5 
  4       
  .      
          
,   SCP,   . 10.1.  
         
    .     SCP   
          
   " " :    {S#, CITY},  
   {S#, P#, QTY}. 

      

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

      (  ) 

      1 ( ) 
      2 
    
       
       
      4 
      5 
    
    
    . 10.2.   

     . 10.2    ,    
 .   (1, 2, )    (Codd) 
[9.4].    . 10.2,      1, 

    276      III.    

      1    2    2 
   .       
,     " " ( ,   
 ),  ,  ,   , " ", 
 .  ,       
        ,      . 
     [9.4]     ,   
   ,  2,     
   ,  ,  ,  
. (         , 
,       ,     
   .)      
        
 .   , ..     
 (,  ,   )   
 (  ,   2).  
      , 
 ,       . 
          ,     
 [9.4]    .     
,   ()    [10.2],      
,             
 ,           
    .       
 ,         
  -  . 
      (Fagin)  [11.8]   ,  
  (4),     ,    
    -  .   
  [11.9]      ,    
-  ',     
 ,  .    . 10.2,    
    4,     4    5. 
     ,         
  ,     .     
     11,    ,   
   ,     . 10.2. 
     (  )    
""  . 

      

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

     10.  : 1, 2, , 	277 

     ,          
      .    
  ,   ,    ,  
 --  ,       
,    .   ,    
,       . 
     ,      . 
    1.    ,      ,  
        
""   (..  ).     
    ,   ,  
    (    
   ).   ,   ,  
 ,    . ,   
,        
   (  ,  "   
",   ""     ). 
    ,    .  
        
,   ,        
    .   12   
   ,      
        . 
    2.     ,      
      .    , 
            
.   ,  ,      
  12   " ".     
   ,      
     .   , 
       . 
           , 
      . 
    10.2.       
           , 
      ,    
  .   ,    
,       ,  
   , ..    . 
 ,     ,    
 .   ,      
,      . 
            S  
 {S#, STATUS, CITY} (    SNAME   
 ).  . 10.3      
( ,     )   
   : ()  (). 
        ,    . 
    1.   ()   ,   SST  SC 
     ,   S3   30    
 (Paris),   S5   30     (Athens). 
 ,       . 

    278	 III.    

    2.     (), ,   ,  
    30,     ,     
  .  ,     
  . 

    S 
    Si	STATUS     CITY 
    S3 S5	30         Paris 30        Athens 
    
    
    a)   SST			sc 
    SI	STATUS				S#    CITY 
    S3 S5	30 30				S3    Paris S5    Athens 
    
    
    )   SST			STC 
    Stt	STATUS				STATUS     | CITY 
    S3 S5	30 30				30         Paris 30         Athens 
    
    
    . 10.3.  S      

      ,      ,  
    ?  ,  ,  , 
     "",     
, ..     . 10.3  SST, SC  
STC        S.  
,        
 . 
     ,    ()      
,      SST  SC   
  S.   (), ,    
 SST  SC      S,   ,  
   . (,    S   
    "" .    
       ,    
  .)  , "" ,   
    .     
    ,    
    (,      
   ). 
       ,    .  R1  R2  
   R,     R.  
     ,     R1  R2 
    R7      
      .  
   S    
  . (     ,   
  , ..      
 .       
 9.) 

    S# - STATUS S# -> CITY 

     ,      ,  
,   S     {S#, STATUS}  
{S#, CITY}.    ,     (Heath) [10.4]. 

     10.  : 1, 2, ,  279 

       .  R{A, , }  ,  ,   ї 
  .  R    > ,  R  
   {, }  {, }. 
        S#,   STATUS,   CITY,    
,    ,   S     
     {S#, STATUS}  {S#, CITY}   . 
         ,   S      
    {S#, STATUS}  {STATUS, CITY}.    
 ,   . (  ,     
"..., ...",   "   , ...".     
     .      
    11.)    ,   
      , .. 
 S# > STATUS    (  {S#, 
STATUS}),   S# - CITY  . 

        

         ,  . 
    1.   .   9   
  ,     "  ". 
, ,  SCP,     ,  
  : 
    {   S#,   #   }  - CITY 
      #        ,   
  : 
    S# - CITY 
    ( CITY    S#.)     
 .  ,  ,   CITY  
  S#,      {S#, P#}. (  
" "  "  "    
" "  " ",      
     .     
,        .) 
              
      (    
 10.3). 
    
    
    PNAME 
    SNAME 
    COLOR 
    s#			STATUS					QTY		P# 
    
    
    WEIGHT 
    CITY			    							CITY 
    
    
    
    
    . 10,4.     S, SP   

      (   ).    R  
    /   ,  
       ( ). 
 . 10.4         
 S, SP   .      
   . 

    280  III.    

       . 10.4,       
(     )  .   
      ,   
    ,   ,   - 
.       ,   
  ,  ,    
,     .  ,   
        , 
     . 
    3.     . , Ǘ     
,   , ,  .   
        ,   
 S   S# > CITY,  ,   
     .     
  . 
          ,    
 ,  :       . 
          ,    
-     . 
               
,         . 
             
 . 
       ,       
  . 

    10.3. ,      

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

     10.  : 1, 2, , 	281 

            ,   
       -   
.   ,     
     . 
    ,   ( )     
 :  PNAME ( ), COLOR (), WEIGHT 
()  CITY ()  (..       
  )         #. 
             
  . 
               , 
       ,  
  ,       
  ,     . 
          ,      
      ( ),  
   ,      
 ( ,  ,    ,   
  ). 
             
 1. 
               , 
       . 
         ,    
   1.  ,     1 
(..     ,     )  
,      .    
 ,           
 S  SP,   : 

    FIRST ( S#, STATUS, CITY, P#, QTY ) PRIMARY KEY ( S#, P# ) 

          SCP     
 ,     : 

    CITY -> STATUS 

    ( STATUS     CITY;   
   ,      
,         20.) 
 ,     SNAME   . 
    FIRST   {S#, P#},  
    ,   . 10.5. 

    CITY QTY # 
    STATUS 

    . 10.5.    FIRST 

     ,     ""    
 .    ,         

    282  III.    

         (  . 10.4).    
   ,      (,  
 FIRST),       , 
    .    FIRST   
, ()  (),     , ..  
    ,   STATUS   
 CITY (  ),       
 ,   STATUS  CITY    
   S# (   ). 
       ,   ,  . 
10.6      FIRST.     
 ,   ,    S3   
 30   10,    ,  
   CITY    STATUS.  
,  ,       S1 
  London   CITY ,  ,     
 London   20   STATUS. 

    FIRST 
    S#	STATUS	CITY	P#	QTY 
    SI	20	London	PI	300 
    SI	20	London	P2	200 
    SI	20	London	P3	400 
    SI	20	London	P4	200 
    SI	20	London	P5	100 
    SI	20	London	P6	100 
    S2	10	Paris	PI	300 
    S2	10	Paris	P2	400 
    S3	10	Paris	P2	200 
    S4	20	London	P2	200 
    34	20	London	P4	300 
    S4	20	London	P5	400 
    
    
    . 10.6.    FIRST 

       FIRST     , 
     , ..    
    INSERT (), DELETE ()  
UPDATE ().      -, 
   S# -> CITY,    
   . 
       INSERT.     ,    
   ,      ,  
 . ,    . 10.6    
S5   ,    ,       
,       . ( , 
   FIRST    ,  
    5.) 
       DELETE.       FIRST   
,           
 ,      ,    
   . ,    FIRST   
  S3  S#   2  #,   
  ,   S3   . ( , 
         .) 

     10.  ; 1, 2, ,  283 

    .      ,    
FIRST     ,    
       .  
,  FIRST        
.  ,       
   .       
   , ..       
,       (      
).  ,     
        
 . 
       UPDATE.        
 FIRST  ,        
. ,   S1     , 
  ,       FIRST  
,    S1   (   
),      (   
  SI  ,     ). 
       ,   ,    
FIRST  : 

    SECOND { S#, STATUS, CITY } SP { S#, P#, QTY } 

            . 10.7,   
   . 10.8.  ,       
  S5 (  SECOND,     SP),   SP 
     . 

    QTY 

    . 10.7.        SECOND  SP 

    SECOND				SP 
    S#	STATUS	CITY		S#	P#	QTY 
    SI	20	London		SI	PI	300 
    S2	10	Paris		SI	P2	200 
    S3	10	Paris		SI	P3	400 
    S4	20	London		SI	P4	200 
    S5	30	Athens		SI	P5	100 
    SI	P6	100 
    S2	PI	300 
    S2	P2	400 
    S3	P2	200 
    S4	P2	200 
    S4	P4	300 
    S4	P5	400 
    
    
    . 10.8.     SECOND  SP 

    284  III.    

     ,       
    ,    . 
       INSERT.         
SECOND     ,   S5   , 
         . 
       DELETE.      ,   
    S3    2,   
   SP,     ,   S3  
 ,  . 
       UPDATE.        
    ,      
     SECOND ( S#   
   ).  ,   S#-CITY 
.          
   SECOND     S1, 
    . 
     . 10.7  10.5,  ,     
FIRST   SECOND  SP    ,   
 ,         
.   ,    FIRST    
CITY   ,    (),  
,    (     
  STATUS).           
       . 
        2  ,     
 ,    . 
               , 
           
    . 
     , SECOND  SP,       
  S#  {S#, P#} ,   FIRST  
  .  ,    1     
2,       ,   2. 
           1   
,      ,    
      .    
 SECOND  SP    FIRST,    
 SECOND  SP   S#. (   ,  
 SECOND   , ,  ,   
  S5,       FIRST (. . 10.8). 
 ,      ,  
    .      
       .) 
     ,       
   ""  . 
           R: 

    R ( , , , D ) 
    PRIMARY KEY ( ,  )         /*   */  -  

            
, R1  R2: 

     10.  : 1, 2, , 	285 

    Rl ( A, D ) 
    PRIMARY KEY ( A )	/*   */ 
    R2 ( , ,  } 
    PRIMARY KEY ( ,  )	/*   */ FOREIGN KEY (  ) REFERENCES Rl  

     /*   */ 

     R        R1  
R2          . 
       SECOND-SP      
.    SP,   ,   
         .   , 
    SECOND    . 
    SECOND    " ",  
     .  ,   STATUS  
 S#       ,  
  (  CITY), ..   S#  
 CITY,   CITY,   ,   STATUS.  
,      9,      ->  
  -> ,      > .  ,  
        . 
(         
-,     CITY - STATUS.) 
      INSERT.      ,   
, ,  ,       
 50,           
  (  ,      
 ). 
       DELETE.     SECOND     
       ,     
,     . ,     
SECOND    S5     ,    
   30. (,  ,     
    .) 
    .       
:  SECOND         
  .       ,  
 , .. ""         
  ,       . 
       UPDATE.   SECOND      
  (      ). 
 ,       20  30  
      SECOND    
 (   ),    
  (         
20,     30). 
             SECOND 
  : 

    SC { S#, CITY } 
    CS { CITY, STATUS } 

            . 10.9,   
  . 10.10.  ,      (Rome) 
    CS.   ,  
 SECOND    SC  CS   CITY. 

    286	 III.    

       ,     
      .  
       . 
 . 10.9  10.7,  ,    
      STATUS  
 S#       .  
 ,   STATUS   SECOND   , 
   (.. ),   . 
           
  . 

    s# 
    CITY 

    , 10.9.     SC  CS 

    SC			CS 
    Stt	CITY		CITY	STATUS 
    31	London		Athens	30 
    52	Paris		London	20 
    S3	Paris		Paris	10 
    S4	London		Rome	50 
    S5	Athens 

    . 10.10.    SC  CS 

           ,    
  ,     . 
                , 
           
    . ( " " 
  -      .) 
     SC  CS   ,      
  S#  CITY ,   SECOND    
. ,    2,     ,   
       .    
,    , ,     
  .        
(,    50),       
   2. ( ,     
SECOND-SP       
 ,   FIRST,     SC-CS 
  SECOND,    2.) 
     ,  ,      
     .   
   R: 

    R ( , ,  ) 
    PRIMARY KEY ( A )        /*   */  -  

            
, R]  R2: 

    R1 ( ,  ) 
    PRIMARY KEY (  )	/*   */ 
    R2 ( ,  ) 
    PRIMARY KEY (  )	/*   */ FOREIGN KEY (  ) REFERENCES Rl      
    /*   */ 

     10.  : 1, 2, ,  287 

     R        R1  
R2          . 
       ,     
  ,       
  .          
  ,   , ,  .   
     , ..    
.   :      
,   ,     .     
 ,       , ,   
,    ,        
   .     ,  
  . 

    10.4.   

          ,   
       . 
     SECOND   
 S# > CITY, CITY  STATUS , ,  
 S# > STATUS ( . 10.11    
 ). 
    
    
    CITY 
    1 
    s# 
    1		STATUS 
    
    
    
    . 10.11.     SECOND 

     ,   ,    
SECOND,          
   . 

    SC  {  S#,   CITY }	           CS   { CITY,   STATUS  } 

        " ",   ,   
   " fi": 

    SC   {  S#,   CITY }	           S3   {   S#,   STATUS  } 

        SC    ,    .   
    ,       . 
       ,   
. ,         
  ,      ,   
   . 
       .   ,   
       (. . 10.11),  
         . 
           : 
          
  . (,      SC  CS.) 
        , ..  
      ,    
        SECOND (.. 
     ,      
SECOND).   , 

    288	 III.    

    ,        
,      CITY > 
STATUS (         ,   
  ;     ,   
   S1     ).  , 
         . 
        ,      
 CITY > STATUS    . ( 
,         
     .)   , 
,   S#  STATUS    
,       
  : S# -> STATUS  CITY > STATUS.   
        
,     . 
      ,  ,   
     .    
       ,   
 .  (Rissanen) [10.6] ,   R1  R2 
 R         ,  
           R     
   R1  /?2; 
          RJ  R2   ,  
 ,    . 
          .      
,     CITY     
 CS     SECOND      , 
    .   , ,  
   ,   CITY -> STATUS  
      ,     S#  
    . 
    ( ,        
SECOND  {S#, STATUS}  {CITY, STATUS}    
,     . . 
  .) 
    . ,        
  ,   [10.6].    
,          
. ,  S        
   (  )   ,  
     .  SP, , 
 . 
           (  
-)     .   
         . 
    1.      R,      
     Rl, R2,... Rn (, 
     R). 
    2.       S    R, 
   SI, S2,... Sn   Rl, R2,... Rn. 
    3.     Si       
Ri (/=1, 2, 3, ..., ).  ,     () 
 

     10.  : 1, 2, , 	


289 10      

       Si    . 
         
 S.          R], 
R2, ... Rn,         
 SI, S2, ... Sn       
  S.  ,     
 . 
    4.    S'     SI, S2, ... Sn. 
 ,      S'=S  ,  
      ,  
 S  S'     (    
   9). 
    5.           
 S  ,       
.   ,    ,  
      .  
       ,   
    (Ullman) [7.16]. 
    .           
         
        . 

    10.5.   - 

           ,    
     (   ),  
   .   ,   
    [9.4]       
  . 
    1.	   ( )  . 
    2.	    . 
    3.	  (.. ,   ,   ). 
            
  - (Boyce/Codd) [10.2],    
      -, . (  
   ""  ,   
  -,     (Heath)  1971  
[10.4],        "  ".) 
    .   1, 2  3     ,  
        . 
           , 
   9    ,     
, .. ,        . 
           -    
,         
    .    
  . 
           -    
,     . 
     ,         
 .        
 , ,        
  . 

    290	 III.    

    ' .     ,    
    ,   "  "   
 .          
   ,     . 
      ,     ,  
  ,           
 ,       . 
 ,  (   )     
,   ,        
         
 . 
            
, ,   FIRST  SECOND,     , 
     .   ,   SP, SC  CS, 
   ,    .  FIRST   
,  : S#, CITY  {S#, P#},    {S#, P#} 
  .   FIRST    . 
     SECOND,   CITY 
   .  SP, SC  CS,   , 
  ,        
     . 
       ,    
 . ,     

    S   {   Stt,   SNAME,   STATUS,   CITY  } 

     S#  SNAME    (..    
       ). ,  
(, ,    ),   STATUS  CITY  
, ..        
  CITY -> STATUS   .    
    ,   . 10.12. 

     ^ 
    s#				STATUS I 
    
    
    SNAME				CITY 
    
    
    . 10.12.      S,  
 SNAME    ( CITY  STATUS  ) 

      S   .     
""      ,   ,   
     ,    
   .  ,   
      .  ,   SNAME 
         ,  
      .   
    S   : 

    S { S#, SNAME, STATUS, CITY } CANDIDATE KEY { S# } CANDIDATE KEY { SNAME } 

     10.  : 1, 2, ,  291 

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

    SSP  {  S#,   SNAME,   P#,   QTY  } 

         {S#, P#}  {SNAME, #}.   
    ,     , S#  SNAME, 
       (S#  SNAME  
,     ).    
 SSP   . 10.13.     ,   
SSP    ,   SCP, FIRST  
SECOND     ,     
  . ,    S1    
    ,     . 
  ,  SSP   ,    
  ,        
 ,       
   .  ,  ,   
SNAME     {S#, P#},  . (  ""  
 ,    [9.4],    
,     .) 
    
    
    SSP	s#	SNAME	P#	QTY 
    SI	Smith	PI	300 
    SI	Smith	P2	200 
    SI	Smith	P3	400 
    SI	Smith	P4	200 
    
    
    . 10.13.       SSP 

       SSP     : 

    S3   {  St,   SNAME  }    SP  {  S#,   #,   QTY  }. 

            

    SS   {   S#,   SNAME  }     SP   {   SNAME,   P#,   QTY  }. 

     ,         
   ,       . 
          ,   " 
" . ,   ,   
  SSP, ,         
. ,        
,          ( ..).   
 ,     SS-SP, , . , 
   " "       
      SS-SP    SSP. 
    ,        
  -.  ,   (,    
  ,      )    
  ,    ,    . 
          


    292  III.    

      , ,  ,   .  
     ,      
, ..         
.         , 
   ,      
      .     
  ,       
"  "       . 
               
       SJT   
S, J  ,   ,     
( ,     ,     
).  {S>:s, J:y, T:t}  SJT ,   
 s       /.   
   . 
        ,   ,    . 
             (   
   ). 
     . 10.14     . 

    SJT 
    s	J	 
    Smith	Math	Prof. White 
    Smith	Physics	Prof. Green 
    Jones	Math	Prof. White 
    Jones	Physics	Prof . Brown 
    
    
    . 10.14.       SJT 

          ? 
             
 {S, J},       J   . 
,     ,   . 10.15. 

    
     

    . 10.15.     SJT 

            
,  :  {S, J}   {S, }.   
  ,         
. ,      ,   
(Jones)  ,    ,     
,    (Prof. Brown)  .    
,    ,     .  
          , 
   : 

     10.  : 1, 2, ,  293 

    ST  {  S,    }                  TJ {  ,   J } 

             
  ,      . 10.14, 
      ,    
      (   
 ?),   ,     
  . 
        , ,      
   ,  ,    
.   ,   , ST  TJ,     
  (      ).  
,  

    {  S,   J }  ->  

          ,     
 , 

     - J. 

             . 
,     ST    (Smith)  
  (Prof. Brown)   ,   
  ,         (Prof. 
Green).        TJ   
.  ,     ,   ,  
:    ,   ,  
   ,     . 
       . 
    .    SJT   ( 
     ),       . 
 ,          
 ,  ,       
  ( ""    ). 
" "        ,  
     ,       
 ,        . 
     ,  ,     
    EXAM   S (), J 
()   ().   {S>:s, i:j, :}  EXAM 
  ,    s    
       .    : 
                    
    . 
          ,   . 10.16. 

     

    . 10.16.      EXAM 

             
{S, J}  {J, P},         
     ,         

    294  III.    

          .   
   ,      
 .   ,    
   ,      
.  ,       
     . 
       ,      
  , ,    , , 
   .  ,   
  ,        1, 2, 
    .  ,  
        
   ( ,   [10.2],  
  ).   ,   , 
   ..    ,  
    ,   
         . 
    , ,          
 ,       
       ,   . 

    10.6.  

          ,    
.      , ,   
    -.     
 ,   (+1)-      
-\  ,      , .. 
   -  ,     (/?-)- 
 . ( =3,   " (+1)-  " 
 ,   4!      .)  
,      , ..    
    ,    . 
    ,    , 
,    . 
            
  ,       
   .  ,    
 (     ).   
,         ; 
   ,     ,  
    .     
     ,    9  
,   "  ,    ". 
              
     ,    ,    
,        ,   
.       .  
,  ,       ,  
:          , 
    . 
         ( )    
,   (Zaniolo) [10.7].     . 

     10.  : 1, 2, , 	295 

          R, X     
 R,       R.  R   
      ,     
 X>   R        : 
    1. X  (..   ). 
    2. X     R ( , X  ). 
    3.       R. 
    ( ,     , 
    ,   
   .)    
     ,    . 
     ""  
    [9.4],       . 

     

    10.1.   .     ? 
    10.2.  ,       . 
   ? 
    10.3.  . 10.17   (.. ) 
 ,         
 . 
         . 
        (Department)    (Employee), 
  (Project)    (Office). 
          (Job), ..  , 
   .       
(Salary history), ..   ,    
  . 
           (Phone). 
    Office Phone 
    . 10.17.   ,   
       296 

     III.    

          : 
       :   (),    
,     (). 
       :   (),   
,  ,  ,      
      ,     . 
       :   ()  . 
       :   (),    
,  ()  ,    . 
          
  ,       
 . 
    10.4.          
,       . 
       : 
      (); 
      (   ); 
    ; 
      ; 
    . 
       : 
     :	 , 
     ,   ; 
      (   ):     , 
      . 
       : 
      (); 
    -; 
        ; 
          ; 
     . 
          "  ", 
     .    
    ,    
 . 
        ,  ,     , 
      . 
    10.5. ,   . 10.4     , 
    ,     . ( 
 ,        
    .)     
 ,   . 10.4?   
    ? 
    10.6. (  . 9.13.)  TIMETABLE 
   : 

     10.  : 1, 2, , 	297 

    D	  (1-5). 
    	     (1-8). 
    	 . 
    	 . 
    S	 . 
    L	 . 
     {D:d, P:p, C:c, T:t, 1:1}      
  ,     {D:d, :]   s  
 /,    /   . 
     ,      ,   
  ,         
.   TIMETABLE    . 
    10.7. (  . 9.14.)   NADDR  
 NAME (), STREET, CITY, STATE  ZIP.   
       ,  ,  
     .    NADDR  , 
, 2?        ? 

      

       ,      
   9,  [9.4, 9.5] (..     
  1, 2). 
    10.1. Bernstein P.A. Synthesizing Third Normal Form Relations from 
Functional Dependencies // ACM TODS.  1976.  1,  4. 
             . 
         
  ,     .    
  ,    ,    
    .       
     ,      
       , 
 ,        . 
    .          
     ,    
 .     ""   
        .  
         . 
           - 
        ,  
   ,   ,     
  . (        
.)        . 
    ,     ,  
,  ,     ,  
       . ,   
         
 (..      )    
 R, S  . 

    298	 III.    

     ->    R{A,]  ->    S{B, }  >     
(, ] 

      ,    , ,   
  ,   , ї  , R   
, S ,    , җ  . 
 ,         
.     S.  .  ( , 
     ).  ,  
    (..  )  
   .      
        , 
 1  2  S.  .. 
    10.2. Codd E.F. Recent Investigations into Relational Data Base Systems // 
Proc. 1FIP Congress.  Stockholm, Sweden, 1974. 
            .  , 
 "    ",   
    -.    
      ,  
,        (   1974 ). 
    10.3. Date C.J. A Normalization Problem // The Relational J.  1992.  4, 
 2. 
            
,         
        . 
          
  ,    : FLIGHT  
, DESTINATION   , HOUR    , DAY   
, GATE     , PILOT  . 
    1.	{ FLIGHT } - DESTINATION 
    2.	( FLIGHT } -> HOUR 
    3.	{ DAY, FLIGHT } -> GATE 
    4.	{ DAY, FLIGHT } -> PILOT 
    5.	{ DAY, HOUR, GATE } -> DESTINATION 
    6.	{ DAY, HOUR, GATE } -> FLIGHT 
    7.	{ DAY, HOUR, GATE } - PILOT 
    8.	{ DAY, HOUR, PILOT } - DESTINATION 
    9.	{ DAY, HOUR, PILOT } -> FLIGHT 
    10. ( DAY, HOUR, PILOT } -> GATE 
     ,      ,  
""            
 . 
    10.4. Heath I.J. Unacceptable File Operations in a Relational Database // 
Proc. 1971 ACM SIGFIDET Workshop on Data Description, Access, and Control.  
San Diego, Calif, 1971. 
        ,       
  .      
,       .  , 
          
    . 

     10.  : 1, 2, , 	299 

    10.5. Kent W. A Simple Guide to Five Normal Forms in Relational Database 
Theory // CACM.1983. 26, 2. 
          
   (, ):    
    ,      . 
    10.6. Rissanen J. Independent Components of Relations //ACM TODS. 1977.2,4. 
    10.7. Zaniolo C. A New Normal Form for the Design of Relational Database 
Schemata // Ibid.  1982.  7, 3.	- J 
         ,    . 
       ,    
   ,      
    "     ",     
 (,   " ",   "  
 ").    ,    
[10.1]    ,     . 

       

    10.1.   ,    R{A, , }  
   -  ( ,      
),  R     R1   {, }  
R2   {, }. 
            
 (, , )   {:, :, :}. 
      ,      R   
        .  (, , ) 
 R,  (, )  RI  (, )  R2,   (, , )  Rl JOIN R2. 
      ,       
   R (..       
""   ).  (, , )  Rl JOIN R2.   
      (, )  R1  (, 
)  R2. ,    , )  R2   
 *    (, *, )  R.    
  (,*)  R1.     (a, b) e R1  (, *)  R1, 
   -> ,  =*.  (, , )  R. 
    ,   , ,    R{A, , } 
    RI   {, }  R2   
{, },  R    > .   .  
  ,        
    () ,    
   11. 
    10.2.    (  ) .   
      [5.6].   US A 
{COUNTRY, STATE},    "STATE-()   
COUNTRY ()",        
  .       
  . 

    {   }   - COUNTRY 

        { }    , 
 USA    . 

    300	 III.    

      ,        
 ,    !    
     5. 
    10.3.  . 10.18     :  ,  
  ,   ,    
  (  ).    , 
     . 

    AREA                                                                       
        DBUDGET OFF#     [     DEPT#     -    
MGR# _____   i              i  >  _  
PHONE#      EMP# |      PROJ#     > PBUDGET JOBTITLE 
           DATE           SALARY 

    . 10.18.    . 10.3 

     : 
             . 
               . 
               . 
             . 
             . 
             . 
              . 
               . 

 0. 
      ,      
    DEPTO: 

    DEPTO ( DEPT#, DBUDGET, MGR#, XEMPO, XPROJO, XOFFICEO ) CANDIDATE KEY ( 
DEPTtt ) CANDIDATE KEY ( MGR# ) 

       DEPT# ( ), DBUDGET ()  MGR# 
(  )    ,  , 
   (), XPROJO ()  XOFFICEO 
(),   -      . 
        -,   
XPROJO.        PROJ#-PBUDGET (.. 
     PROJ#  PBUDGET).  
  XPROJO,     DEPT#, 
      .  , 
  XPROJO  -   
  

     10.  : 1, 2, ,  301 

             . 
( ,    ,     
PROJ#   PBUDGET;    ,   
         XPROJO.) 
          , XOFFICEO  
     ,    
-.         
       (   
 , ..     ). 
    -  "X".  
,       "" 
   . (   
,   "   "  
 ,     .) 

    DEPTO   (  DEPTi,   DBUDGET,   MCR#, 
       (  EMPtt,   PROJ#,   OFF#,   PHONE*, XJOBO   (  JOBTITLE, 
    XSALHISTO   (  DATE,   SALARY )   )   ), XPROJO   (  PROJ#,   PBUDGET  ), 
XOFFICE   (   OFFi,   AREA,   XPHONEO   (   PHCNEtf )   )   ) 

     1. 

      ,      , .. 
        .  
,  DEPTO      DEPT# ( , 
MGR#   ).      
    1.   ,  
,   . 
       ,     ,  
        
 .       
 ,   ""  ,   
,    . 
             
- (.. ,    -), 
         
      . 
             
  1.  ,        
-. (,     
,        , 
   .      11.) 

    DEPT1 ( DEPT#, DBUDGET, MGR# } 
    PRIMARY KEY ( DEPT# ) ALTERNATE KEY ( MGR# ) 
    EMP1 ( DEPT#, EMP#, PROJtt, OFF#, PHONES ) PRIMARY KEY ( DEPT#, EMP# } 
    JOB1 ( DEPT#, EMP#, JOBTITLE ) 
    PRIMARY KEY ( DEPT#, EMP#, JOBTITLE ) 

    302	 III.    

    SALHIST1 ( DEPTtt, 1#, JOBTITLE, DATE, SALARY ) 
    PRIMARY KEY ( DEPT#, EMPtt, JOBTITLE, DATE ) 
    PROJ1 ( DEPT#, PROJ#, PBUDGET ) 
    PRIMARY KEY ( DEPT#, PROJ# ) 
    OFFICE1 ( DEPTff, OFF#, AREA ) 
    PRIMARY KEY ( DEPT#, OFF* ) 
    1 ( DEPT#, OFFtt, PHONE ) 
    PRIMARY KEY ( DEPTtt, OFF#, PHONE# ) 

     2. 
       ,   1,   
   2,   .   
  1     . 
    DEPT1	     2. 
    1	 ,  ,  DEPT#   
    .     
    #,         
  2. 
    JOB1	 ,     DEPT#   
  .  DEPT#    #,  
   (DEPT#),      
     ( {#, JOBTITLE}), 
, , JOB1    2.      : 

    JOB2A ( #, JOBTITLE ) 
    PRIMARY KEY ( EMPtt, JOBTITLE ) 
     
    JOB2B ( EMPtt, DEPT# ) 
    PRIMARY KEY ( EMPt ) 

     JOB2A   SALHIST2 (   ), a 
JOB2B   1 (   2). ,  
   . 
    SALHIST1      ,      JOB1,    
 DEPT#.  , JOBTITLE      
 .        
{#, DATE},      2: 
    SALHIST2 ( #, DATE, JOBTITLE, SALARY ) PRIMARY KEY ( EMP#, DATE ) 
    PROJ1	 ,      1,   DEPT#  
 ,      2. 
    OFFICE1            . 
    PHONE I DEPT#   ,   (DEPT#, OFF#) 
   OFFICE! (   OFFICE2).  
, OFF#    PHONE#,     
    PHONE#       2: 

    PHONE2 ( PHONE*, OFF# ) 
    PRIMARY KEY ( PHONE* ) 

     ,        
2 (          
 ),    . 

     10,  : 1, 2, ,  303 

     ,        2: 

    DEPT2 ( DEPT#, DBODGET, MGR* ) 
    PRIMARY KEY ( DEPT* ) ALTERNATE KEY ( MGR* ) 
    EMP2 ( EMP#, DEPT#, PROJ*, OFF*, PHONE* ) PRIMARY KEY ( EMP# ) 
    SALHIST2 ( EMP#, DATE, JOBTITLE, SALARY ) PRIMARY KEY ( EMP#, DATE ) 
    PROJ2 ( PROJ*, DEPT*, PBDDGET ) PRIMARY KEY ( PROJ# ) 
    OFFICE2 ( OFF*, DEPT*, AREA ) 
    PRIMARY KEY { OFF* ) 
    2 ( PHONE*, OFF* ) 
    PRIMARY KEY ( PHONE* ) 

     3. 
    ,   ,   , 
  2,      .  
,    2     ,   
2,    OFF#  DEPT#      
#: OFF#  PHONE#, DEPT#  PROJ#,    OFF# ( 
,   PHONE#).  ,  2  
  ()  : 

     ( #, PROJ#, PHONE# ) 
    PRIMARY KEY ( EMP* ) 
    X ( PHONE*, OFF* } 
    PRIMARY KEY ( PHONE* ) 
    Y ( PROJ#, DEFT* ) 
    PRIMARY KEY ( PROJ* ) 
    2 ( OFF*, DEPT* ) 
    PRIMARY KEY ( OFF* ) 

      X     PHONE2, Y   PROJ2, Z 
 OFFICE2. ,       
  : 

    DEPT3 ( DEPT*, DBUDGET, MGR* ) 
    PRIMARY KEY ( DEPT* ) ALTERNATE KEY ( MGR* ) 
    EMP3 ( EMP#, PROJ*, PHONE* ) 
    PRIMARY KEY ( EMP* ) 
    SALHIST3 ( EMP#, DATE, JOBTITLE, SALARY ) PRIMARY KEY ( EMP#, DATE ) 
    PROJ3 ( PROJ*, DEPT*, PBUDGET ) PRIMARY KEY ( PROJ* ) 
    OFFICES ( OFF*, DEPT*, AREA ) 
    PRIMARY KEY { OFF* ) 
    PHONES ( PHONE*, OFF* ) 
    PRIMARY KEY ( PHONE* ) 

    ,           ( ,  
4    1   1;      11). 
     ,    ()  
        

    304	 III.    

    [4.1],     PROJ3   {PROJ#, DEPT#} 
    , PHONES  OFFICES. 
      ,      ""   
  (   ?). .  ,  "" 
    ,      . 
,    R,    
 S,    ( 0-8)   
D  R     (  ),   
       . 
    0.          D. 
    1.    /     S. 
    2.   X        
 ՗> Y  I. 
    3.        /    X   
 X-+Yl,X-+ Y2,...X-+ Yn. 
    4.    Z   Yl, Y2,... Yn. 
    5.   D  D    R   X  Z. 
    6.     3-5    X. 
    1.   1,2, ...An       
 R (, ,        ). 
 D  D    R   1,2,.... 
    8.         D     R, 
 D  D   R     
 R. 
           D 
 R    ,     ,  
    . 
    0.    R      D. 
    1.      (    )  D  
,    2-3. 
    2.    X-* Y      ,  
    . 
    3.       D  ,  :   
 X  Y,      ,   Y.   
   ,      , 
      ,       
.       ,    
    . 
    10.4.  . 10.19    ,    
   . 
            . 
         . 
           ,    . 

     10.  : 1, 2, , 	305 

    QTYORD			ORD#				DATE 
    
    QTYOUT			LINE* 

    DESCN			ITEM*				QTYOH 
    
    
    PLANT*				DANGER 
    
    . 10.19.    . 10.4 

            : 

    CUST ( CUST#, BAL, CREDLIM, DISCOUNT ) PRIMARY KEY ( COST* ) 
    SHIPTO ( ADDRESS*, CUST# ) 
    PRIMARY KEY ( ADDRESS ) 
    ORDHEAD ( ORD#, ADDRESS, DATE ) PRIMARY KEY ( ORD* ) 
    ORDLINE ( ORD#, LINE*, ITEM*, QTYORD, QTYOUT ) PRIMARY KEY ( ORD#, LINE* ) 
    ITEM ( ITEM*, DESCN ) PRIMARY KEY 
    ITEM* 
    IP ( ITEM#, PLANT*, QTYOH, DANGER ) 
    PRIMARY KEY { ITEM*, PLANT* ) 

    10.5.    ,    
  . ,       
,       (   
 ). 

    RETRIEVE CUST WHERE COST* = input.CUST* ; 

     ,     .. ; 

    RETRIEVE SHIPTO WHERE ADDRESS = input.ADDRESS ; 
    AND CDST# = input.CUST* /*    */ ; 
   ,    ; 
     99%      ,    
    -  ,  CUST ( 
   99%,  ADDRESS    CUST#). 
     .     
      ,   99%  
  .       
.   CUST    : 

    CUST ( CUST*, ADDRESS, BAL, CREDLIM, DISCOUNT } PRIMARY KEY ( CUST* ) 

      SHIPTO    

    SECOND ( ADDRESS, CUST* ) 
    PRIMARY KEY ( ADDRESS ) 

    306  III.    

     CUST.ADDRESS    , a SECOND   
  (   ).    
 ,       : 

    RETRIEVE CUST WHERE CUST# = input.CUST# ; 

     ,     .. ; 

    if COST.ADDRESS * input.ADDRESS then 
    RETRIEVE SECOND WHERE ADDRESS = input.ADDRESS ; 
    AND CUST# = input.CUSTl /*    */ ;    

,    ; 
         . 
      99%       . 
           ,     
  . 
     ,         
.    (..       
)  DISCOUNT      SHIPTO,  
     .   
    (  
)        DISCOUNT  
 CUST,        DISCOUNT  
 SECOND.         ,   
   99% . 
       ,     
, ,       
, ..         
,       . 
    10.6.  . 10.20    ,    
  . 

    . 10.20.    . 10.6 

    SCHED ( L, , , D,  ) 
    CANDIDATE KEY ( L ) CANDIDATE KEY ( , D, P ) CANDIDATE KEY ( C, D, P ) 
    STUDY   (   S,   L  ) 
    CANDIDATE KEY   (  S,   L  ) 

    10.7.  NADDR   2,        . 
     : 

     10.  : 1, 2, ,  307 

    NSZ ( NAME, STREET, ZIP ) 
    PRIMARY KEY ( NAME ) 
    ZCS ( ZIP, CITY, STATE ) 
    PRIMARY KEY { ZIP ) 

        ,      
  . 
      STREET (), CITY ()  STATE ()   
  (,    ),  
    ,      . 
      ,         NAME 
    (     
  NADDR    NSZ  ZCS).  
,      ,     
, .. ,       
,     ,    
   . (  ,    
    , ..    
  .)    
,    (.. ,  
    )       . 
       { STREET, CITY, STATE } -> ZIP   
   ,   :   ( 
        ),  . 
    NSZ  ZCS       [10.6]. 

    308	 III.    

