知识卡片

原始关系代数的六个运算符

结构图卡

内容

Codd最初定义的关系代数由六个原始运算符组成,每个都遵循”输入一个或多个关系、输出 一个关系”的[[关系代数的闭包性质]],各自解决一类不同的关系构造问题:限制(restrict) 从一个关系中挑出满足某条件的所有元组(例如挑出某个部门的所有员工),是”按行筛选”; 投影(project)从一个关系中去掉某些属性、保留其余属性构成新关系,是”按列筛选”; 积(product,也叫笛卡尔积)把两个关系的元组两两组合,产生所有可能的组合对,是 后续连接运算的基础形式(书中在第6章指出积其实只是连接的特例);交(intersect) 返回同时出现在两个关系里的元组;并(union)返回出现在任一关系里的元组;差 (difference)返回出现在第一个关系但不出现在第二个关系里的元组;连接(join)把 两个关系中在同名属性上取值相同的元组组合起来、并让相同取值在结果里只出现一次, 这种连接严格来说叫”自然连接”,但因为它是最重要、最常用的连接形式,”连接”这个 未加限定的说法在行业里已经默认专指自然连接。这六个运算符构成了后续所有更复杂 关系查询能力的基础组件,第6、7章会分别讲解它们与SQL的对应关系以及更多附加运算符。

结构图

flowchart TD
    A[原始关系代数六运算符] --> B[限制 restrict<br/>按条件筛选元组/行]
    A --> C[投影 project<br/>保留部分属性/列]
    A --> D[积 product<br/>元组两两组合/连接的基础形式]
    A --> E[交 intersect<br/>两关系共同元组]
    A --> F[并 union<br/>两关系任一出现的元组]
    A --> G[差 difference<br/>仅第一关系独有的元组]
    A --> H[连接 join<br/>同名属性取值相同才组合/即自然连接]

参考来源

- 位置:《SQL与关系数据库理论——如何编写健壮的SQL代码》第1章"做好准备"1.4.3节 "操作特征"(源文件:OEBPS/text00010.html) - 结论依据:原文逐一定义"限制(restrict):返回一个关系,其中包含特定关系中满足 特定条件的所有元组……投影(project):返回一个关系,其中包含特定关系移除特定 属性后的所有(子)元组……积(product):返回一个关系,其中包含所有的可能由两个 元组组合形成的元组……交(intersect):返回一个关系,其中包含同时在两个指定关系 中都出现的所有元组……并(union)……差(difference)……连接(join):……在两个 关系的同名属性上具有相同的取值……用未加限定的术语'连接'来特指'自然连接'已经成为 了行规"。 - 原始内容:限制(restrict)返回一个关系,其中包含特定关系中满足特定条件的所有 元组……连接(join)返回一个关系,其中包含的元组是由分别来自于两个指定关系的 元组组合而成的……因为自然连接是最重要的连接类型,所以用未加限定的术语"连接"来 特指"自然连接"已经成为了行规。