如何为此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"
...关系
处方
药
患者
答案 0 :(得分:3)
我只会指出你应该使用的操作符
投影(π)
π(a1,...,an):结果被定义为当R中的所有元组被限制为集合{a1,...,an}时获得的集合。
例如,患者表上的π(名称)与SELECT 名称 FROM患者
相同选择(σ)
σ( condition ):选择R中 condition 所有的那些元组。
例如,处方表上的σ(频率=“1周)”与SELECT * FROM处方相同 WHERE frequency =“1perweek”
交叉产品(X)
R X S:结果是R和S之间的叉积。
例如,患者X处方将是SELECT * FROM 患者,处方
您可以组合这些操作数来解决锻炼问题。如果您有任何问题,请尝试发布您的尝试。
注意:由于没有连接,我没有包含自然连接。交叉产品应足以进行此练习。
答案 1 :(得分:3)
一个例子如下。只有当您意外地忽略了患者,药物和处方之间的联接时。如果没有,你会在寻找交叉产品(在这种情况下这似乎是一个坏主意......),正如Lombo所提到的那样。我提供了可能适合您标记为“???”的表格的示例连接。如果您可以包含有用的表格布局。
我还假设取消来自处方,因为它没有前缀。
编辑:如果您需要标准RA格式,可以很容易地从图表中获取。
alt text http://img532.imageshack.us/img532/8589/diagram1b.jpg