2012-08-24 52 views

回答

2
s = [x y] 
    0 0 
    1 1 
    2 2 

r = [x y] 
    0 0 
    0 1 
    0 2 
    1 1 
    1 2 
    2 2 

A = {y} 

PROJECT A(r − s)=[y] 
      1 
      2 

PROJECT A(r) − PROJECT A(s)=[y] 

以下是如何生成(計數器)這樣的例子。該任擇議定書問題轉化爲QBQL斷言:

a <AND> TABLE_DUM = a & r <AND> TABLE_DUM =s <AND> TABLE_DUM 
-> 
a v (r <AND> <NOT> s) = (a v r) <AND> <NOT> (a v s). 

,所有的操作,除了"v"(廣義投影)距離d & d代數A.前兩個含義條件要求關係到a是空的,並且關係rs擁有相同的標題。它輸出:

s = [p] 
    0 
; 
r = [p] 
    1 
; 
a = [r] 
; 
*** False Assertion *** 

雖然這是合法的答案,有些人可能會覺得有突出關係到不屬於頭一個屬性的想法不舒服。需要爲ar標題添加一個條件以重疊:(a v s) <AND> TABLE_DUM != TABLE_DUM。然後,應該將屬性{p,r}手動轉換爲OP的{x,y}。 (這是Erwin發現的錯誤被引入的地方)。

+0

通過給出的這些示例值,所有結果都應該爲空。除非我誤解了' - '作爲表示關係差異的含義,也就是MINUS。 –

+0

的確,謝謝。 –

2

r = { TUPLE {X 1 , Y 1} }
s = { TUPLE {X 1 , Y 2} }

r MINUS s = r = { TUPLE {X 1 , Y 1} }

Take projections over X (A = {X} ???)

r PROJECT {X} === { TUPLE {X 1} }
s PROJECT {X} === { TUPLE {X 1} }

(r PROJECT {X}) MINUS (s PROJECT {X}) === { }
(r MINUS s) PROJECT {X} === { TUPLE {X 1} }

它在S中的Y 2部分。這就是r和s中的元組之間的區別。如果你首先「拋棄這種差異」,那麼在此之後的任何東西都是平等的,並且計算相等事物之間的差異當然沒有任何意義。

但是,如果你首先計算差異,那麼s中元組中的Y 2部分會導致r(不穩定地說)中的元組不會被從結果中丟棄,然後對該結果進行投影產生本身非空。