如何为这个SQL查询编写关系代数?
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"关系..。
处方
医学
患者
发布于 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处方将从病人,处方中选择*
您可以结合这些操作数来解决您的练习。如果你有任何问题,试着张贴你的尝试。
备注:我没有包含自然连接,因为没有连接。交叉积应该足够这个练习。
发布于 2010-06-20 23:11:01
例如,如下所示。只有当你不小心遗漏了病人、药物和处方之间的联系时,才是如此。如果不是,您将寻找交叉产品(在这种情况下,这似乎是个坏主意.)正如隆博所提到的。我给出的示例联接可能适合标记为“??”的表。如果您可以包括您的表的布局,这将是有帮助的。
我也认为取消来自处方,因为它没有前缀。
编辑:如果你需要它的标准RA形式,这是相当容易从一个图表。
alt文本http://img532.imageshack.us/img532/8589/diagram1b.jpg
https://stackoverflow.com/questions/3081213
复制相似问题