% % Understanding Relational Database Query Languages, S. W. Dietrich, Prentice Hall, 2001. % %--------------------------------------------------------------------------------------------------------------------------- % TUPLE RELATIONAL CALCULUS (TRC) %--------------------------------------------------------------------------------------------------------------------------- % Abstract Division Example % % abTable(a,b) % primary key (a, b) % bTable(b) % primary key (b) %--------------------------------------------------------------------------------------------------------------------------- universalDivision := { T.a | abTable(T) and (forall B) (not bTable(B) or (exists AB) (abTable(AB) and AB.a=T.a and AB.b=B.b)) }; forallExistsEquivalence := { T.a | abTable(T) and not (exists B)( not (not bTable(B) or (exists AB) (abTable(AB) and AB.a=T.a and AB.b=B.b) ) )}; existentialDivision := { T.a | abTable(T) and not (exists B) (bTable(B) and not (exists AB) (abTable(AB) and AB.a=T.a and AB.b=B.b) ) };