R e l a c y j n e b a z y
R e l a c y j n e b a z y
d a n y c h
d a n y c h
T a d e u s z P a n k o w s k i
w w w . p u t . p o z n a n . p l / ~ t a d e u s z . p a n k o w s k i
T . P a n k o w s k i , M o d e l r e l a c y j n y 1
T . P a n k o w s k i , M o d e l r e l a c y j n y 2
M o d e l d a n y c h
M o d e l d a n y c h
B a z a d a n y c h
B a z a d a n y c h
B a z a d a n y c h :
M o d e l d a n y c h :
" j e s t l o g i c z n i e s p j n y m z b i o r e m d a n y c h p o s i a d a j c y c h o k r e [l o n s t r u k t u r ,
" A s p e k t s t r u k t u r a l n y : Z b i r s t r u k t u r d a n y c h , z b i r o p e r a c j i n a
n a k t r y c h m o |n a w y k o n y w a o k r e [l o n e o p e r a c j e ( a s p e k t s k Ba d n i o w y i
t y c h s t r u k t u r a c h , z b i r z a l e |n o [c i m i d z y d a n y m i .
o p e r a c y j n y ) ;
" A s p e k t s e m a n t y c z n y : U s t a l e n i e z n a c z e D z n a c z e n i e
" r e p r e z e n t u j e p e w i e n f r a g m e n t [w i a t a r z e c z y w i s t e g o z w a n e g o d z i e d z i n
( s e m a n t y k a ) s t r u k t u r d a n y c h w z g l d e m w i e d z y o [w i e c i e
p r z e d m i o t o w ( a p p l i c a t i o n d o m a i n ) ; z m i a n y w d z . p . o d z w i e r c i e d l a n e s w
r z e c z y w i s t y m , o k r e [l e n i e s e m a n t y k i ( w a r t o [c i ) o p e r a c j i .
b a z i e d a n y c h ( a s p e k t s e m a n t y c z n y ) ;
" A s p e k t p r a g m a t y c z n y : O k r e [l e n i e z a s a d k o r z y s t a n i a z " j e s t p r o j e k t o w a n a , t w o r z o n a i u t r z y m y w a n a z p u n k t u w i d z e n i a
p r z y d a t n o [c i d l a o k r e [l o n y c h z a s t o s o w a D, k t r y m i z a i n t e r e s o w a n a j e s t
m o d e l u d a n y c h w s y s t e m i e b a z y d a n y c h d l a r o z w i z y w a n i a
o k r e [l o n a g r u p a u |y t k o w n i k w ( a s p e k t p r a g m a t y c z n y ) .
k o n k r e t n y c h p r o b l e m w ( r e p r e z e n t a c j a s t a n u s y s t e m u
Z b a z d a n y c h z w i z a n e s :
r z e c z y w i s t e g o , f o r m u Bo w a n i e z a p y t a D, w y k o n y w a n i e
t r a n s a k c j i , . . . ) . " zr d Bo , z k t r e g o w y p r o w a d z a n e s d a n e ( d z . p . ) ;
" o k r e [l o n y p o z i o m i n t e r a k c j i z e z d a r z e n i a m i z a c h o d z c y m i w d z . p . ;
" g r u p a u |y t k o w n i k w c z y n n i e z a i n t e r e s o w a n a z a w a r t o [c i b a z y d a n y c h .
T . P a n k o w s k i , M o d e l r e l a c y j n y 3 T . P a n k o w s k i , M o d e l r e l a c y j n y 4
R e l a c y j n y m o d e l d a n y c h R e l a c y j n e ( S Q L - o w e ) b a z y d a n y c h
R e l a c y j n y m o d e l d a n y c h R e l a c y j n e ( S Q L - o w e ) b a z y d a n y c h
R e l a c y j n e b a z y d a n y c h = S Q L - o w e b a z y d a n y c h
E . F . C o d d , " A r e l a t i o n a l m o d e l o f d a t a f o r l a r g e s h a r e d
" w y k r a c z a j i s t o t n i e p o z a t e o r e t y c z n y m o d e l r e l a c y j n y ( w Bc z a j
d a t a b a n k s " , C o m m u n i c a t i o n s o f A C M 1 3 ( 3 ) , 1 9 7 0 , s s .
k o n c e p c j e o b i e k t o w o [c i , X M L , p r o g r a m o w a n i e ) ,
3 7 7 - 3 8 7 .
S Q L - o w e b a z y d a n y c h
" s t a n d a r d S Q L - 9 2
M o d e l d a n y c h ( p o d s t a w a t e o r e t y c z n a ) :
" s t a n d a r d S Q L : 1 9 9 9 , S Q L : 2 0 0 3
" s t r u k t u r y : d a n e p r o s t e ( a t o m o w e ) , k r o t k i , t a b e l e
N a j w a |n i e j s z e r e l a c y j n e S Z B D :
( r e l a c j e ) ;
" O r a c l e 9 i , 1 0 g
" M S S Q L S e r v e r 2 0 0 0 , 2 0 0 5 , 2 0 0 8
" o p e r a c j e : o p e r a c j e a l g e b r y r e l a c j i , r a c h u n k i r e l a c j i ,
o p e r a c j e a k t u a l i z a c j i ; " D B 2 , S y b a s e , I n t e r b a s e , . . .
I n n e s y s t e m y r e l a c y j n e
" z a l e |n o [c i : z a l e |n o [c i f u n k c y j n e ( k l u c z e g B w n e ) ,
" d B A S E , C l i p p e r , X b a s e ( s t a r e s y s t e m y p o w s z e c h n e w P o l s c e )
z a l e |n o [c i r e f e r e n c y j n e ( k l u c z e o b c e ) , o g r a n i c z e n i a n a
" A c c e s s ( M i c r o s o f t )
w a r t o [c i , . . .
" M y S Q L , P o s t g r e S Q L ( o p r o g r a m o w a n i e w o l n e ) .
T . P a n k o w s k i , M o d e l r e l a c y j n y 5 T . P a n k o w s k i , M o d e l r e l a c y j n y 6
R e l a c y j n y m o d e l d a n y c h
R e l a c y j n y m o d e l d a n y c h
R e l a c y j n y m o d e l d a n y c h
R e l a c y j n y m o d e l d a n y c h
A t r y b u t s y m b o l , n a z w a
( n p . N a z w i s k o , N r E w i d , D a t a U r , C e n a , . . . ) ,
U = { A 1 , . . . , A n } z b i r a t r y b u t w .
D z i e d z i n a a t r y b u t u D o m ( A ) , z b i r d o p u s z c z a l n y c h w a r t o [c i a t r y b u t u A .
W s z y s t k i e w a r t o [c i s p r o s t e ( a t o m o w e ) .
W y r |n i o n a w a r t o [ p u s t a N U L L " D o m ( A ) .
K r o t k a ( w i e r s z , r e k o r d ) t y p u U
r = [ A 1 : a 1 , . . . , A n : a n ] , a i " D o m ( A i ) , [ ] k r o t k a p u s t a ,
r = ( a 1 , . . . , a n ) z a p i s u p r o s z c z o n y , g d y u s t a l o n a j e s t k o l e j n o [ a t r y b u t w ,
T a b e l a ( r e l a c j a ) R t y p u U s k o Dc z o n y z b i r ( w i e l o z b i r m o g w y s t p o w a
d u p l i k a t y ! ) k r o t e k t y p u U .
F o r m a l n i e :
K r o t k a j e s t f u n k c j z U d o V = D o m ( A 1 ) *" . . . *" D o m ( A n ) ,
r : U ! V , r ( A i ) = r . A i " D o m ( A i )
7 8
A l g e b r a r e l a c j i O p e r a c j e n a t a b e l a c h ( r e l a c j a c h )
A l g e b r a r e l a c j i O p e r a c j e n a t a b e l a c h ( r e l a c j a c h )
A t t n i e s k o Dc z o n y i p r z e l i c z a l n y z b i r a t r y b u t w ,
D w i e g r u p y o p e r a c j i ( w y r a |a l n e z a p o m o c s z e [c i u
V a l z b i r w a r t o [c i
p o d s t a w o w y c h ) :
A l g e b r r e l a c j i n a z y w a m y n a s t p u j c s t r u k t u r :
A l g R e l A t t , V a l = ( T a b , { *"X , X , X , X Y , , E } ) ,
1 . O p e r a c j e m n o g o [c i o w e - w y n i k a j z f a k t u , |e
g d z i e :
t a b e l a j e s t z b i o r e m :
T a b z b i r w s z y s t k i c h t a b e l u t w o r z o n y c h n a d z b i o r a m i A t t i V a l ;
*"X s u m a m n o g o [c i o w a t a b e l t y p u X , X " A t t ( X j e s t s k o Dc z o n y ) ,
" s u m a , r |n i c a , p r z e k r j .
X r |n i c a m n o g o [c i o w a t a b e l t y p u X ,
2 . O p e r a c j e r e l a c y j n e - w y n i k a j z f a k t u , |e t a b e l a
X p r o j e k c j a t a b e l i n a z b i r X ,
X Y p r z e m i a n o w a n i e t a b e l i p o p r z e z z m i a n n a z w z X n a j e s t ( w i e l o ) z b i o r e m f u n k c j i :
o d p o w i a d a j c e i m n a z w y z Y ,
" p r o j e k c j a , p r z e m i a n o w a n i e , z Bc z e n i e ( n a t u r a l n e i
z Bc z e n i e t a b e l o d o w o l n y c h t y p a c h ,
i l o c z y n k a r t e z j a Ds k i ) , s e l e k c j a , z Bc z e n i a z e w n t r z n e ,
E s e l e k c j a z t a b e l i w e d Bu g w a r u n k u E .
p o d z i e l e n i e .
T . P a n k o w s k i , M o d e l r e l a c y j n y 9 T . P a n k o w s k i , M o d e l r e l a c y j n y 1 0
S u m a m n o g o [c i o w a
S u m a m n o g o [c i o w a
O p e r a c j e m n o g o [c i o w e s u m a
O p e r a c j e m n o g o [c i o w e s u m a
R
R *" S = { t | t " R (" t " S }
" R , S t a b e l e j e d n a k o w e g o t y p u U ,
w y n i k j e s t z b i o r e m , n i e z a w i e r a d u p l i k a t w
" W y n i k t a b e l a t y p u U .
" S u m a m n o g o [c i o w a ( u n i o n ) :
s e l e c t * f r o m R u n i o n s e l e c t * f r o m S
R *" S = { t | t " R (" t " S } .
" S Q L ( U N I O N u s u w a d u p l i k a t y , U N I O N A L L p o z o s t a w i a d u p l i k a t y )
R *"A L L S = { ( k + j ) * t | k * t " R (" j * t " S }
s e l e c t * f r o m S t u d e n t
S
w y n i k j e s t w i e l o z b i o r e m , z a w i e r a d u p l i k a t y .
u n i o n
s e l e c t * f r o m P r a c o w n i k
( k * t " R o z n a c z a , |e k r o t k a t w y s t p u j e k r a z y w t a b e l i R )
S t u d e n t P r a c o w n i k S t u d e n t *"A L L P r a c o w n i k
s e l e c t * f r o m R u n i o n a l l s e l e c t * f r o m S
T . P a n k o w s k i , M o d e l r e l a c y j n y 1 1 T . P a n k o w s k i , M o d e l r e l a c y j n y 1 2
O p e r a c j e m n o g o [c i o w e r |n i c a
O p e r a c j e m n o g o [c i o w e r |n i c a
S u m a m n o g o [c i o w a
S u m a m n o g o [c i o w a
" R , S t a b e l e j e d n a k o w e g o t y p u U ,
" W y n i k t a b e l a t y p u U .
R S R *" S R *"A L L S
" R |n i c a m n o g o [c i o w a ( d i f f e r e n c e ) :
R S = { t | t " R '" t " S } .
" S Q L ( E X C E P T u s u w a d u p l i k a t y ) :
s e l e c t * f r o m S t u d e n t E X C E P T s e l e c t * f r o m P r a c o w n i k P
s e l e c t * f r o m S t u d e n t a s S
w h e r e n o t e x i s t s ( s e l e c t * f r o m P r a c o w n i k P
w h e r e S . N a z w i s k o = P . N a z w i s k o
a n d S . K i e r u n e k = P . K i e r u n e k )
S t u d e n t P r a c o w n i k S t u d e n t P r a c o w n i k
T . P a n k o w s k i , M o d e l r e l a c y j n y 1 3 T . P a n k o w s k i , M o d e l r e l a c y j n y 1 4
R |n i c a m n o g o [c i o w a R |n i c a m n o g o [c i o w a
R |n i c a m n o g o [c i o w a R |n i c a m n o g o [c i o w a
S
S R = { t | t " S '" t " R }
S R S R S L D u p R
w y n i k j e s t z b i o r e m , n i e z a w i e r a d u p l i k a t w
s e l e c t * f r o m S e x c e p t s e l e c t * f r o m R
R
S L D u p R = { k * t | k * t " S '" t " R }
w y n i k j e s t w i e l o z b i o r e m , z a w i e r a d u p l i k a t y
s e l e c t * f r o m S
w h e r e n o t e x i s t s (
s e l e c t * f r o m R
w h e r e R . A = S . A a n d S . B = R . B )
T . P a n k o w s k i , M o d e l r e l a c y j n y 1 5 T . P a n k o w s k i , M o d e l r e l a c y j n y 1 6
O p e r a c j e m n o g o [c i o w e p r z e k r j
O p e r a c j e m n o g o [c i o w e p r z e k r j
P r z e k r j m n o g o [c i o w y
P r z e k r j m n o g o [c i o w y
R )" S = { t | t " R '" t " S }
" R , S t a b e l e j e d n a k o w e g o t y p u U ,
R
w y n i k j e s t z b i o r e m , n i e z a w i e r a d u p l i k a t w
" W y n i k t a b e l a t y p u U .
" P r z e k r j m n o g o [c i o w y ( i n t e r s e c t i o n ) :
s e l e c t * f r o m R i n t e r s e c t s e l e c t * f r o m S
R )" S = { t | t " R '" t " S } .
R )" S = S )" R
" S Q L ( I N T E R S E C T u s u w a d u p l i k a t y ) : :
R )"L D u p S = { k * t | k * t " R '" t " S }
s e l e c t * f r o m S t u d e n t I N T E R S E C T s e l e c t * f r o m P r a c o w n i k P w y n i k j e s t w i e l o z b i o r e m , z a w i e r a d u p l i k a t y
s e l e c t * f r o m S t u d e n t a s S
s e l e c t * f r o m R
w h e r e e x i s t s ( s e l e c t * f r o m P r a c o w n i k P
w h e r e S . N a z w i s k o = P . N a z w i s k o w h e r e e x i s t s (
a n d S . K i e r u n e k = P . K i e r u n e k )
S
s e l e c t * f r o m S
w h e r e R . A = S . A a n d S . B = R . B )
S t u d e n t P r a c o w n i k S t u d e n t )" P r a c o w n i k
s e l e c t * f r o m S
w h e r e e x i s t s (
s e l e c t * f r o m R
T . P a n k o w s k i , M o d e l r e l a c y j n y 1 7 1 8
w h e r e R . A = S . A a n d S . B = R . B )
P r z e k r j m n o g o [c i o w y O p e r a c j e n a k r o t k a c h p r o j e k c j a
P r z e k r j m n o g o [c i o w y O p e r a c j e n a k r o t k a c h p r o j e k c j a
P r z y k Ba d :
{ A , C } ( [ A : a , B : b , C : c ] ) = [ A : a , C : c ]
R S R )" S R )"L D u p S S )"L D u p R
D e f . ( p r o j e k c j a k r o t k i n a z b i r a t r y b u t w )
N i e c h r b d z i e k r o t k t y p u U , i n i e c h X b d z i e p o d z b i o r e m U , X " U .
P r o j e k c j ( r z u t e m , o g r a n i c z e n i e m ) ( a n g . p r o j e c t i o n ) k r o t k i r n a z b i r X ,
c o o z n a c z a m y X ( r ) , n a z y w a m y k r o t k t t y p u X t a k , k t r a j e s t i d e n t y c z n a
z k r o t k
r n a z b i o r z e a t r y b u t w X , t j . :
t = X ( r ) , j e [l i d l a k a |d e g o A "X , t . A = r . A .
G d y X = { } ( { } o z n a c z a z b r p u s t y ) , t o p r o j e k c j a j e s t k r o t k p u s t [ ]
P r z y k Ba d :
{ } ( [ A : a , B : b , C : c ] ) = [ ] .
1 9 T . P a n k o w s k i , M o d e l r e l a c y j n y 2 0
O p e r a c j e n a k r o t k a c h p r z e m i a n o w a n i e
O p e r a c j e n a k r o t k a c h p r z e m i a n o w a n i e
O p e r a c j e n a k r o t k a c h z Bc z e n i e
O p e r a c j e n a k r o t k a c h z Bc z e n i e
P r z y k Ba d :
D e f : ( z Bc z e n i e k r o t e k )
A D ( [ A : a , B : b , C : c ] ) = [ D : a , B : b , C : c ] .
N i e c h d a n e b d :
D e f : ( p r z e m i a n o w a n i e a t r y b u t w w k r o t c e )
r k r o t k a t y p u X , s k r o t k a t y p u Y .
N i e c h r b d z i e k r o t k t y p u U , B a t r y b u t e m w U i C a t r y b u t e m n i e n a l e |c y m d o U .
P r z e m i a n o w a n i e m a t r y b u t u B n a C w k r o t c e r , c o o z n a c z a m y B C ( r ) , n a z y w a m y
J e [l i z b i r r *" s j e s t k r o t k , t o n a z y w a m y g o z Bc z e n i e m n a t u r a l n y m r i s i
o z n a c z a m y r s .
k r o t k t p o w s t a B z r p r z e z z a m i a n a t r y b u t u B n a C , t j . t a k k r o t k t t y p u
J e [l i r *" s n i e s p e Bn i a w a r u n k w k r o t k i , t o m w i m y , |e r i s s n i e z Bc z a l n e .
U { B } *" { C } , |e :
t . A = r . A , d l a k a |d e g o A " U { B } ,
P r z y k Ba d :
t . C = t . B .
[ A : a , B : b , C : c ] [ D : d , E : e ] = [ A : a , B : b , C : c , D : d , E : e ] k r o t k i r o z Bc z n y c h t y p w ;
[ A : a , B : b , C : c ] [ B : b , E : e ] = [ A : a , B : b , C : c , E : e ] k r o t k i n i e r o z Bc z n y c h t y p w ;
U o g l n i e n i e n a c i g i a t r y b u t w :
[ A : a , B : b , C : c ] [ ] = [ A : a , B : b , C : c ] z Bc z e n i e z k r o t k p u s t n i e z m i e n i a k r o t k i ;
N i e c h X = ( B 1 , & , B k ) i Y = ( C 1 , & , C k ) b d c i g a m i a t r y b u t w , X " U , Y )" U = { } .
P r z e m i a n o w a n i e a t r y b u t w z X n a o d p o w i a d a j c e i m a t r y b u t y z Y w k r o t c e r
d e f i n i u j e m y n a s t p u j c o :
[ A : a , B : b , C : c ] i [ B : d , E : e ] k r o t k i n i e z Bc z a l n e !
X Y ( r ) = B k C k ( . . . ( B 1 C 1 ( r ) ) . . . )
s u m a [ A : a , B : b , C : c , B : d , E : e ] n i e j e s t k r o t k b o a t r y b u t B w y s t p u j e d w a r a z y
r a z z w a r t o [c i ' b ' i p o w t r n i e z w a r t o [c i ' d ' .
2 1 T . P a n k o w s k i , M o d e l r e l a c y j n y 2 2
W Ba [c i w o [c i p r o j e k c j i i z Bc z e n i a k r o t e k
W Ba [c i w o [c i p r o j e k c j i i z Bc z e n i a k r o t e k
S p e Bn i a n i e w a r u n k u p r z e z k r o t k
S p e Bn i a n i e w a r u n k u p r z e z k r o t k
D e f : ( w a r u n e k n a d z b i o r e m a t r y b u t w U )
{ } ( t ) = [ ] w y n i k i e m p r o j e k c j i k r o t k i n a z b i r p u s t y j e s t k r o t k a p u s t a [ ] ;
N i e c h U b d z i e z b i o r e m a t r y b u t w , a C o n s t z b i o r e s t a By c h ( l i c z b , t e k s t w ) .
N i e c h :
r r = r z Bc z e n i e k r o t k i z s a m s o b n i e z m i e n i a k r o t k i ;
A , A ' " U , c " C o n s t ,
"{ = , ! = , <