Relational-Theory

與元組關係微積分運算的混淆

  • November 27, 2018

我遇到了一個問題,例如,

給定以下關係模式

**Student** (studId, name, age, sex, deptNo, advisor)
**Department** (deptId, DName, hod, phoneNo)

以下哪項是元組關係演算查詢以獲得沒有女生的**部門名稱

給出的正確答案是

{d.Dname | department(d) ∧ ~ ((∃(s)) student(s) ∧ s.sex = ‘F’ ∧ s.deptNo = d.deptId)}

我對它的解釋是,對於每個系,內在邏輯是試圖找到至少一個來自同一系的女性學生。現在,如果它找不到一個,它返回 FALSE,否定將使它成為 TRUE,因此 Dname 將被列印。這很好。

但是如果我否定邏輯,即流否定符號,那麼內部邏輯就變成了,

((∀s ∈ student) s.sex ≠ ‘F’ ∨ s.deptNo ≠ d.deptId)

這和上面的意思是什麼意思?我無法想像。

任何幫助表示讚賞。提前致謝。

∃s (student(s) ∧ s.sex = ‘F’ ∧ s.deptNo = d.deptId)

對於某些 s,s 是學生,s 是女性,s 在 d 的部門。

~∃s (student(s) ∧ s.sex = ‘F’ ∧ s.deptNo = d.deptId)

對於沒有 s,s 是學生,s 是女性,s 在 d 的部門。

~∃x P∀x ~P~∃x (Q ∧ R)也是如此。∀x (~Q V ~R)_ ∀x (Q → ~R)我們得到:

∀s (student(s) → (s.sex ≠ ‘F’ ∨ s.deptNo ≠ d.deptId))

對於所有 s,如果 s 是學生,則要麼他們不是女性,要麼他們的部門不是 d。

對於所有學生,要麼他們不是女性,要麼他們的部門不是 d’s。

出於某種原因,您更改了符號(但不是含義)並將其寫為:

∀s ∈ student(s) (s.sex ≠ ‘F’ ∨ s.deptNo ≠ d.deptId))

你沒有解釋你認為這意味著什麼,所以不清楚為什麼你認為它與被否定的存在主義不同。但它們的意思是一樣的。

當所有學生都不是女性或不在 d 部門時,forall 為真。但被否定的存在主義也是正確的。否則,某個學生是女性並且在 d 的部門,並且 forall 是錯誤的。但是被否定的存在也是錯誤的。(“否則”顯然是存在的。)

現在,如果它找不到一個,它返回 FALSE 並且否定將使它成為 TRUE

你沒有解釋你的普遍量化失敗和成功的概念。您的“找不到一個返回錯誤”是為了存在主義。(即“找到一個返回真”。)但是“找不到所有返回假”是通用的。(即“找到所有返回真”。)(不是“找不到一個返回真”或“找到一個返回假”。)

當存在主義未能找到女性且在 d 部門的學生時——假,否定為真——普遍發現所有學生要麼不是女性,要麼不在 d 部門——為真。否則,兩個表達式都返回 false。它們總是返回相同的結果。

引用自:https://dba.stackexchange.com/questions/217877