使用关系代数,找到那些可以在他经常光顾的酒吧里找到他喜欢的所有啤酒的饮酒者
Using relational algebra, find those drinkers who can find all the beers he likes in a bar that he frequents
Drinker (drinker, age, address)
Like(drinker, beer)
Beer (beer, manufacturer)
Bar (bar, owner, address)
Frequent(drinker, bar)
Sell (bar, beer, price)
找到那些可以在他经常光顾的酒吧里找到他喜欢的所有啤酒的饮酒者。
我不确定我的回答,想验证我是否在正确的轨道上:
R1:=πdrinker,bar,beer(LIKE⨝FREQUENT)
R2:=πdrinker,bar,beer(FREQUENT⨝SELL)
R3:=πdrinker,bar(R1-R2)
Solution:= FREQUENT - R3
R1 尝试获取所有饮酒者、喜欢的啤酒、去过的酒吧
R2 尝试从所有经常饮酒的酒吧获取所有啤酒
R3 得到不满足所有喜欢喝的啤酒的所有饮水器和酒吧成分
最后,从整个集合中减去这些集合(R3)
这是正确的吗?
R1:=πdrinker,bar,beer(LIKE⨝FREQUENT)
这是 Like(drinker, beer) AND Frequent(drinker, bar)
所在的行。你需要投影吗?反正投影合理吗?
R2:=πdrinker,bar,beer(FREQUENT⨝SELL)
这是 FOR SOME price, Frequent(drinker, bar) AND Sell(bar, beer, price)
所在的行。你需要投影吗?反正投影合理吗?
R3:=πdrinker,bar(R1-R2)
这是行
FOR SOME beer,
Like(drinker, beer) AND Frequent(drinker, bar)
AND NOT FOR SOME price, Frequent(drinker, bar) AND Sell(bar, beer, price)
Solution:= FREQUENT - R3
这是行
Frequent(drinker, bar)
AND NOT FOR SOME beer,
Like(drinker, beer) AND Frequent(drinker, bar)
AND NOT FOR SOME price, Frequent(drinker, bar) AND Sell(bar, beer, price)
我如何证明我的主张是正确的?
这是
Frequent(drinker, bar)
AND FOR ALL beer,
NOT (Like(drinker, beer) AND Frequent(drinker, bar))
OR FOR SOME price, Frequent(drinker, bar) AND Sell(bar, beer, price)
即
Frequent(drinker, bar)
AND FOR ALL beer,
Like(drinker, beer) AND Frequent(drinker, bar)
IMPLIES FOR SOME price, Frequent(drinker, bar) AND Sell(bar, beer, price)
即
Frequent(drinker, bar)
AND FOR ALL beer,
Like(drinker, beer) IMPLIES FOR SOME price, Sell(bar, beer, price)
为什么?
这是饮酒者常去酒吧的行,对于所有啤酒,如果饮酒者喜欢这种啤酒,那么酒吧就会出售一些价格的啤酒。这是正确的吗?
如果 R
和 S
分别持有 R(...)
和 S(...)
的行,那么持有 R(...) OR S(...)
的行的关系是什么样的?你怎么计算出来的?为什么这是个问题?如果 R
和 S
在 ...
中具有相同的属性怎么办? IMPLIES
呢?
我们可以使用哪些启发式方法从一些简单的东西开始,比如最终的非正式表达式,并尝试得到那些(Like
s 和那些)drinker
s & bar
s向下进入 FOR ALL
和 IMPLIES
?即从简单版本开始并生成我的重写?
一种机械方法,即始终有效,使用 prenex 范式 作为 Codd 在证明 Codd 定理 时使用的方法,它说(一种形式的)关系代数可以表达(一种形式的)关系演算可以表达的任何东西。
Drinker (drinker, age, address)
Like(drinker, beer)
Beer (beer, manufacturer)
Bar (bar, owner, address)
Frequent(drinker, bar)
Sell (bar, beer, price)
找到那些可以在他经常光顾的酒吧里找到他喜欢的所有啤酒的饮酒者。
我不确定我的回答,想验证我是否在正确的轨道上:
R1:=πdrinker,bar,beer(LIKE⨝FREQUENT)
R2:=πdrinker,bar,beer(FREQUENT⨝SELL)
R3:=πdrinker,bar(R1-R2)
Solution:= FREQUENT - R3
R1 尝试获取所有饮酒者、喜欢的啤酒、去过的酒吧
R2 尝试从所有经常饮酒的酒吧获取所有啤酒
R3 得到不满足所有喜欢喝的啤酒的所有饮水器和酒吧成分
最后,从整个集合中减去这些集合(R3)
这是正确的吗?
R1:=πdrinker,bar,beer(LIKE⨝FREQUENT)
这是 Like(drinker, beer) AND Frequent(drinker, bar)
所在的行。你需要投影吗?反正投影合理吗?
R2:=πdrinker,bar,beer(FREQUENT⨝SELL)
这是 FOR SOME price, Frequent(drinker, bar) AND Sell(bar, beer, price)
所在的行。你需要投影吗?反正投影合理吗?
R3:=πdrinker,bar(R1-R2)
这是行
FOR SOME beer,
Like(drinker, beer) AND Frequent(drinker, bar)
AND NOT FOR SOME price, Frequent(drinker, bar) AND Sell(bar, beer, price)
Solution:= FREQUENT - R3
这是行
Frequent(drinker, bar)
AND NOT FOR SOME beer,
Like(drinker, beer) AND Frequent(drinker, bar)
AND NOT FOR SOME price, Frequent(drinker, bar) AND Sell(bar, beer, price)
我如何证明我的主张是正确的?
这是
Frequent(drinker, bar)
AND FOR ALL beer,
NOT (Like(drinker, beer) AND Frequent(drinker, bar))
OR FOR SOME price, Frequent(drinker, bar) AND Sell(bar, beer, price)
即
Frequent(drinker, bar)
AND FOR ALL beer,
Like(drinker, beer) AND Frequent(drinker, bar)
IMPLIES FOR SOME price, Frequent(drinker, bar) AND Sell(bar, beer, price)
即
Frequent(drinker, bar)
AND FOR ALL beer,
Like(drinker, beer) IMPLIES FOR SOME price, Sell(bar, beer, price)
为什么?
这是饮酒者常去酒吧的行,对于所有啤酒,如果饮酒者喜欢这种啤酒,那么酒吧就会出售一些价格的啤酒。这是正确的吗?
如果 R
和 S
分别持有 R(...)
和 S(...)
的行,那么持有 R(...) OR S(...)
的行的关系是什么样的?你怎么计算出来的?为什么这是个问题?如果 R
和 S
在 ...
中具有相同的属性怎么办? IMPLIES
呢?
我们可以使用哪些启发式方法从一些简单的东西开始,比如最终的非正式表达式,并尝试得到那些(Like
s 和那些)drinker
s & bar
s向下进入 FOR ALL
和 IMPLIES
?即从简单版本开始并生成我的重写?
一种机械方法,即始终有效,使用 prenex 范式 作为 Codd 在证明 Codd 定理 时使用的方法,它说(一种形式的)关系代数可以表达(一种形式的)关系演算可以表达的任何东西。