2014-09-01 25 views
0

我的問題也是基於關閉How to find all pizzerias that serve every pizza eaten by people over 30?關於如何在關係代數中正確使用div運算符的正確語法?

這是我使用的數據庫爲我查詢

https://class.stanford.edu/c4x/DB/RA/asset/pizzadata.html

用於寫出關係代數的查詢語法是基於關閉http://www.cs.duke.edu/~junyang/ra/

我的目標是「找到所有隻供應30人以上的比薩餅的比薩餅店。」 「。我有幾個步驟的拳頭,但我努力找到完全匹配的比薩餅店。根據最後一條線索,我查看了這個問題,看起來像是div運營商有必要找到與比薩餅給定列表完全匹配的比薩餅店。但從http://www.cs.duke.edu/~junyang/ra/,我找不到這樣一個div運算符。有沒有爲div運營商的工作?該主題上的其他答案太過複雜,並且不起作用。 這是我的查詢到目前爲止

\project_{pizzeria, pizza} (
\select_{age > 30} (
    Person \join Eats 
    ) 

\join 
    Serves 

) 

我這裏有什麼是首先定位人超過30,並加入那些人,他們吃比薩餅的查詢。然後我加入Serves,這樣我就可以看到供應比薩餅的比薩餅店了。我知道我需要一場完整的比賽 - 只爲30歲以上的人提供服務的比薩餅。這就是爲什麼我覺得div運營商會非常有幫助。

+0

在這種情況下,_negative_公式常常有助於:找到所有沒有供應比薩餅的比薩餅店,供不到30人以下的人食用。 – 2014-09-01 07:32:16

+0

它只有在你設法做出否定的時候纔有用。你沒有。爲了做到這一點,大部分時間需要闡明在你開始應用否定之前所涉及的存在/普遍量化。在回答OP問題時,年齡<= 30的人吃什麼是無關緊要的。 – 2014-09-01 12:06:59

回答

1

找到所有比薩店的服務於人們長期食用比薩每...

找到所有比薩店的唯一服務於人們長期吃比薩餅...

是不同的問題了。

首先應該返回所有比薩店的,其集服務比薩餅的是任何人在吃了一組比薩餅的超 ...

第二個應該返回所有比薩店的其一套擔任比薩的是任何人在吃了一組比薩餅的一個子集 ...

另一個問題是找到Pizzaria嗎的,其組擔任比薩的是等於被任何人在吃了一組比薩餅的...

這個問題的這個方面可能是RA系統(包括SQL處理器)不能直接支持除法運算符的主要原因:關係鴻溝可能有很多種類,並且很難判斷用戶需要哪一個。

改寫問題,使其聲明等價物,然後將表示轉換爲RA或SQL,例如,例如「找到所有比薩店的Z,以便不存在任何比薩餅P和/或人PRS超過...並且PRS吃P,並且P不由Z服務」。

或者類似於「找到所有比薩店中不包含那些不適合30歲以上的任何人吃的比薩餅」的東西。