每个基表都包含构成 true 的行主张(声明)来自一些(特征)谓词(按列参数化的语句模板)。设计者给出了谓词。用户不断更新表格。
-- rows where student [snum] is named [sname] and has major [major] and ...
Students
-- rows where student [snum] is enrolled in offering [onum]
Enrolled
每个查询结果都包含根据某个谓词得出正确命题的行。关系表达式的谓词由其参数表达式的谓词组合而成,具体取决于其谓词非终结符。 DBMS 评估结果。
/* rows where
student [snum] is named [sname] and has major [major] and ...
AND student [snum] is enrolled in offering [onum]
*/
Student ⨝ Enrolled
AND
gives NATURAL JOIN
, AND
condition
gives RESTRICT
condition
, EXISTS
columns
gives PROJECT
other columns
. OR
& AND NOT
两侧具有相同的列给出OR
& MINUS
. Etc.
/* rows where
THERE EXISTS sname, major, standing, age & gpa SUCH THAT
student [snum] is named [sname] and has major [major] and ...
*/
π snum Students
/* rows where
THERE EXISTS onum SUCH THAT
student [snum] is enrolled in offering [onum]
*/
π snum Enrolled
/* rows where
( THERE EXISTS sname, major, standing, age & gpa SUCH THAT
student [snum] is named [sname] and has major [major] and ...
AND NOT
THERE EXISTS onum SUCH THAT
student [snum] is enrolled in offering [onum]
)
AND student [snum] is named [sname] and has major [major] and ...
*/
(π snum Students - π snum Enrolled) ⨝ Students
您可以从中投影出您不需要的任何列。
(请注意,我们不需要知道查询的约束。)
银行场景的关系代数 https://stackoverflow.com/a/24425914/3404097
从英文描述形成关系代数查询 https://stackoverflow.com/a/43318188/3404097
是否有任何经验法则可以根据人类可读的描述构建 SQL 查询? https://stackoverflow.com/a/33952141/3404097