首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL到关系代数

SQL到关系代数
EN

Stack Overflow用户
提问于 2010-06-20 22:41:22
回答 2查看 946关注 0票数 2

如何为这个SQL查询编写关系代数?

代码语言:javascript
复制
Select patient.name, 
       patient.ward, 
       medicine.name, 
       prescription.quantity, 
       prescription.frequency
From patient, medicine, prescription
Where prescription.frequency = "3perday" 
  AND prescription.end-date="08-06-2010" 
  AND canceled = "Y"

关系..。

处方

  • 处方-参考
  • 病人参考文献
  • 医学参考文献
  • 数量
  • 频率
  • 截止日期
  • 取消(Y/N))

医学

  • 医学参考文献
  • 名字

患者

  • 病人参考文献
  • 名字
  • 沃德
EN

回答 2

Stack Overflow用户

发布于 2010-06-20 23:08:47

我只需指出你应该使用的操作员。

投影(π)

A1(a1,.,an):结果被定义为当R中的所有元组都被限制在集合{a1,.a}时得到的集合。

例如,您的病人表上的(名称)与从patient中选择π名称相同

选择(σ)

σ(条件):选择R中条件保持的所有元组。

例如,处方表上的(σ=“1 1perweek”)与SELECT * FROMσ相同,其中σ=“1 1perweek”

交叉积(X)

R×S:结果是R与S的交叉积。

例如,病人X处方将从病人,处方中选择*

您可以结合这些操作数来解决您的练习。如果你有任何问题,试着张贴你的尝试。

备注:我没有包含自然连接,因为没有连接。交叉积应该足够这个练习。

票数 3
EN

Stack Overflow用户

发布于 2010-06-20 23:11:01

例如,如下所示。只有当你不小心遗漏了病人、药物和处方之间的联系时,才是如此。如果不是,您将寻找交叉产品(在这种情况下,这似乎是个坏主意.)正如隆博所提到的。我给出的示例联接可能适合标记为“??”的表。如果您可以包括您的表的布局,这将是有帮助的。

我也认为取消来自处方,因为它没有前缀。

编辑:如果你需要它的标准RA形式,这是相当容易从一个图表。

alt文本http://img532.imageshack.us/img532/8589/diagram1b.jpg

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3081213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档