这点在知识链中的地位:算是解决复杂问题的一个工具
with 的用法在实际中已经用到,对处理复杂的sql有一定的帮助,有一定的结构化的特点,是一张临时表,又像是定义了一个中间变量,对简化问题有一定的帮助。
在书中讲这个例子的过程中,用到了几种方法,首先是将意思表达出来,如“W(C#,PC#)表示课程号、直接或间接先修课”;接下来是利用这个关系进行分类讨论和推理,如下:
获得w有两种方式
1、W(x,y) <---- course(x,u,y)
2、w(x,y) <----- W(x,z)∧W(z,y)
这一步就将问题解析的比较清晰了,接下来就是用sql实现的问题了。
作者是用了解数学问题的方法解决这个问题,首先是概念上的抽象,接下来是数学上的形式化表达和推理,最后才是具体sql的实现,这也是水到渠成的。
with R as <R 的定义> <涉及到R的查询>
course(C#,Cname,PC#) 表示课程号、课程名、直接先修课
W(C#,PC#)表示课程号、直接或间接先修课,
获得w有两种方式
1、W(x,y) <---- course(x,u,y)
2、w(x,y) <----- W(x,z)∧W(z,y)