【问题标题】:about query in domain relational calculus关于域关系演算中的查询
【发布时间】:2018-12-03 22:49:52
【问题描述】:

有两种关系:

预测(cname,etype)

措施(etype,提供者)

cname - 预计未来灾难的城市名称。

etype - 事件类型。地震、海啸……

提供者 - 警察、救护车...

我需要使用域关系演算编写一个查询,它应该找到一个提供者,为米兰的所有预测事件提供服务。

到目前为止我有这个:

{<P> | ∃et <et,P> ∈ Measures ^ ∀ ev (<'Milano', ev> ∈ Prediction 
⟹  ∃pr(ev,pr) ^ pr=P)}

我不确定。可以吗?还是有什么问题?

【问题讨论】:

  • 请提供您的教科书名称和版本——DRC 有很多变体。 (还要澄清量词的范围和运算符的解析/优先级。)请阅读点击谷歌搜索“stackexchange homework”并显示您的步骤组成您的查询,理由是参考您的教科书。否则,我们将不得不做这项工作,而不仅仅是检查它,我们不能说你在哪里做对或错,解释你应该做什么只是用定制的教程重写教科书并为你做功课。
  • 您的问题陈述对“all”有一个典型的模棱两可的用法:如果 Milano 中没有预测事件怎么办——您希望查询返回所有提供者,还是不返回? (关于“所有”的含义和如何明确的问题在各种关系划分和替代查询的演示中得到解决。)为了清楚准确地表达自己,始终使用“for some (value for) x”/“there exists ( x 的值”和“所有(x 的值)”/“每个(x 的值)”。请澄清。 PS您不希望查询找到“提供者”,而不是“提供者”吗? PS“∃pr(ev,pr)”没有意义。

标签: relational-division domain-calculus


【解决方案1】:

您没有提及您的 RA(关系代数)或 DRC(域关系微积分)版本。我会从你的尝试中猜出一些语法。

-- <cname, etype> rows where city cname suffers event type etype
-- { <cname, etype> | city cname can suffer event type etype }
Provider

-- <etype, provider> rows where event type etype service is provided by provider
-- { <etype, provider> | event type etype is service is provided by provider}
Measures

为米兰所有预测事件提供服务的提供商。

这是“all”/“every”的经典模糊用法。如果在米兰没有发生任何事件类型,您想要所有提供者还是没有提供者? (这是通过关系除法变体计算的查询中的常见问题。)

也许您希望提供者 p where 用于所有类型 e,如果 Milano 遭受 e 则 p 服务 e:

-- <p> rows where
    (for all e (
       if city 'Milano' suffers event type e then event e service is provided by p))

{ <p> | (forall e (if <'Milano', e> ∈ Prediction then <e, p> ∈ Measures)) }

但从您的查询看来,您可能想要提供者 p,其中有一种 Milano 遭受的类型,并且对于所有类型 e,如果 Milano 遭受 e,则 p 服务 e:

-- <p> rows where
    (for some e ('Milano' suffers event type e))
&   (for all e (
       if city 'Milano' suffers event type e then event e service is provided by p))

{ <p> |
    (exists e (<'Milano', e> ∈ Prediction))
&   (forall e (if <'Milano', e> ∈ Prediction then <e, p> ∈ Measures))
}

您的查询似乎试图类似于以下复杂情况:

{ <p> |
    (exists e (<'Milano', e> ∈ Prediction))
&   (forall e (
        if <'Milano', e> ∈ Prediction
        then (exists pr (<e, pr> ∈ Measures & pr = p))
     ))
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    相关资源
    最近更新 更多