从关系代数到SQL的转换
下面的练习要求我将关系代数转换为SQL代码 我仍然不太熟悉关系代数,但我尝试用SQL编写以下关系,但我认为我犯了一些错误从关系代数到SQL的转换,sql,relational-algebra,Sql,Relational Algebra,下面的练习要求我将关系代数转换为SQL代码 我仍然不太熟悉关系代数,但我尝试用SQL编写以下关系,但我认为我犯了一些错误 **> [Customer × Product ]―[π{Cid, Name, Pid, Label}(Customer ⋈ Orders ⋈ line_item)]** SELECT * FROM Customer, Product WHERE Cid, Name, Pid, Label NOT IN (SELECT Cid, Name, Pid, L
**> [Customer × Product ]―[π{Cid, Name, Pid, Label}(Customer ⋈ Orders ⋈ line_item)]**
SELECT * FROM Customer, Product WHERE Cid, Name, Pid, Label NOT IN
(SELECT Cid, Name, Pid, Label FROM Customer NATURAL JOIN Orders
NATURAL JOIN line_item);
对于这个,我真的不知道如何处理这个代数关系:
**> πName,Name2(σCid<Cid2 (πCid,Name,Pid (Customer ⋈ Orders ⋈ line_item)
⋈ βCid→Cid2,Name→Name2 (πCid,Name,Pid (Customer ⋈ Orders ⋈
line_item))))**
如果您能为我解释一下处理这种代数关系的推理过程,我将不胜感激。对于第一个查询,它看起来几乎正确,只是我认为您不能给出几个不在的列。如果不存在,我将使用: 从客户c1、产品中选择* 不存在的地方 从客户c2中选择Cid、名称、Pid、标签 自然连接顺序 自然连接行\u项 其中c1.Cid=c2.Cid;-假设Cid是客户表的主键 第二部分,
πName,Name2(σCid<Cid2 (πCid,Name,Pid (Customer ⋈ Orders ⋈ line_item)
⋈ βCid→Cid2,Name→Name2 (πCid,Name,Pid (Customer ⋈ Orders ⋈
line_item))))
可以这样写吗
R1 = (πCid,Name,Pid (Customer ⋈ Orders ⋈ line_item))
R2 = (πCid,Name,Pid (Customer ⋈ Orders ⋈ line_item) ⋈ βCid→Cid2,Name→Name2 R1))
R3 = πName,Name2(σCid<Cid2 R2)
这就意味着:
R1=从客户自然连接订单自然连接行项目中选择Cid、名称、Pid
R2=从客户自然连接订单中选择Cid、名称、Pid自然连接行\项目自然连接从R1中选择Cid作为Cid2,名称作为Name2
R3=从R2中选择名称,其中Cid