关系代数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自然连接可以用 Codd 的原始运算模拟如下。假定 b1,...,bm 是公共于 R 和S 的公共属性名字,a1,...,an 是唯一于 R 的属性名字而 c1,...,ck 是唯一于 S 的属性名字。进一步假定属性名字 d1,...,dm 不在 R 和 S 二者中。第一步我 们可以重命名 S 中的公共属性名字: : S' := ρd1/b1(...ρdm/bm( S)...),接 着我们采用笛卡尔积并选择要连接的元组: : T := σb1=d1(...σbm=dm(R × S')...) ,最后我们采用一个投影来去掉重命名的属性: : U := πa1,...,an,b1,...,bm,c1,...,ck(T) 。
50'000

BoatModel BoatPrice
Boat1
10'000
Boat2
40'000
Boat3
60'000
车船 CarModel CarPrice BoatModel BoatPrice
CarA
20'000 Boat1
10'000
CarB
30'000 Boat1
10'000
CarC
50'000 Boat1
Name Harry Sally George
雇员 EmpId DeptName 3415 财务 2241 销售 3401 财务
部门
DeptName Manager
销售
Harriet
生产
Charles
雇员 部门 Name EmpId DeptName Harry 3415 财务 George 3401 财务
总之,关系代数的运算有与域关系演算或元组关系演算同样的表达能力。但是出 于前面介绍中给出的原因,关系代数有严格弱于没有函数符号的一阶谓词演算的 表达能力。关系代数实际上对应于一阶逻辑的子集,即没有递归和否定的Horn子 句。
集合运算
尽管六个基本运算中有三个取自集合论,在它们的关系代数对应者中存在额外的 约束: 对于并集和差集,涉及到的两个关系必须是“并集相容”的 — 就是说, 两个关系必须有同样的属性集合。因为交集可以用差集来定义,交集所涉及的两 个关系也必须是并集相容的。
θ-连接和相等连接
考虑分别列出车模和船模的价格的表“车”和“船”。假设一个顾客要购买一个 车模和一个船模,但不想为船花费比车更多的钱。在关系上的θ-连接 CarPrice ≥ BoatPrice 生成所有可能选项的一个表。

CarModel CarPrice
CarA
20'000
CarB
30'000
CarC
部门
DeptName Manager
财务
George
销售
Harriet
生产
Charles
雇员 部门
Name EmpId DeptName Manager
Harry 3415 财务
George
Sally 2241 销售
Harriet
George 3401 财务
George
Harriet 2202 销售
认识到 Codd 的代数事实上关于一阶逻辑不完备是很重要的。实现它会引起不可 逾越的特定计算困难。为了克服这些困难,他限制操作数为有限关系,并提议了 对否定(NOT)和析取(OR)的有限支持。类似的限制在很多其他基于逻辑的计算机 语言中也能见到。Codd 定义术语关系完备性来称呼一个语言除了他提议的限制 之外关于一阶逻辑是完备的。在实践中这些限制对他的关系代数用于数据库用途 的适用性没有不利作用。
原始运算
如同任何代数,一些运算是原始的,而可以通过原始运算来定义的另一些运算是 导出的。尽管逻辑中的 AND, OR 和 NOT 的选取某种程度上是任意性的是众所周 知的,Codd 对他的代数作了类似的任意选取。
Codd 的代数的六个原始运算是“选择”、“投影”、笛卡尔积(也叫做“叉 积”或“交叉连接”)、并集、差集和“重命名”。(实际上,Codd 忽略了重命 名,而 ISBL 的发明者显著的包括了它)。这六个运算在省略其中任何一个都要 损失表达能力的意义上是基本的。已经依据这六个原始运算定义了很多其他运 算。其中最重要的是交集、除法和自然连接。事实上 ISBL 显著的用自然连接替 代了笛卡尔积,它是笛卡尔积的退化情况。
成立的所有元组。
重命名
重命名是写为 ρa / b(R) 的一元运算,这里的结果同一于 R,除了在所有元组 中的 b 字段被重命名为 a 字段之外。它被简单的用来重命名关系的属性或关系 自身。
…wikipedia.org/…/关系代数_(数…
2/9
2010-1-7
连接和类似连接的运算
关系代数 (数据库) - 维基百科,自…
接)。θ-连接是写为

的二元算子,这里的 a 和 b 是属
性名字,θ 是在集合 {<, ≤, =, >, ≥} 中的二元关系,v 是值常量,而 R 和 S 是关系。这个运算的结果由在 R 和 S 中满足关系 θ 的元素的所有组合 构成。只有 S 和 R 的表头是不相交的,即不包含公共属性的情况下,θ-连接
2010-1-7
关系代数 (数据库) - 维基百科,自…
关系代数 (数据库)
维基百科,自由的百科全书
这里的关系代数不同于奥古斯都·德·摩根在1860年为代数逻辑提供的关系 代数
关系代数是一阶逻辑的分支,是闭合于运算下的关系的集合。运算作用于一个或 多个关系上来生成一个关系。关系代数是计算机科学的一部分。
半连接是类似于自然连接的写为 R S 的连接,这里的 R 和 S 是关系。半连 接的结果只是在 S 中有在公共属性名字上相等的元组所有的 R 中的元组。例如 下面的例子是“雇员”和“部门”和它们的半连接的表:
雇员 Name EmpId DeptName Harry 3415 财务 Sally 2241 销售 George 3401 财务 Harriet 2202 生产
因为关系被解释为某个谓词的外延,关系代数的每个运算在谓词演算中都有对应
Biblioteka Baidu
…wikipedia.org/…/关系代数_(数…
1/9
2010-1-7
关系代数 (数据库) - 维基百科,自…
者。例如,自然连接是逻辑AND( )的对应者。如果关系 R 和 S 分别表示谓词 p1 和 p2 的外延,则 R 和 S 的自然连接(R S)是表示谓词 p1 p2 的外 延的关系。
Harriet
连接是关系复合的另一种术语;在范畴论中连接精确的是纤维积, 在Unicode中,领结符号是 ⋈ (U+22C8)。
自然连接被确证为最重要的算法之一,因为它的逻辑 AND 的关系对应者。仔细 注意如果同一个变量在用 AND 连结的两个谓词中出现,则这个变量表示相同的 事物而两个出现必须总是由同一个值来代换。特别是,自然连接允许组合有外 键关联的关系。例如,在上述例子中,外键成立于从 雇员.DeptName 到 部 门.DeptName,雇员和部门的自然连接组合了所有雇员和它们的部门。注意这能 工作因为外键在相同名字的属性之间保持。如果不是这样,外键成立于从 部 门.manager 到 Emp.emp-number,则我们必须在采用自然连接之前必须重命名 这些列。这种自然连接有时叫做相等连接(参见 θ-连接)。
R S = Πa1,..,an(R S) 因为我们可以通过基本运算模拟自然连接因此也就可以模拟半连接。
反连接
反连接是类似于自然连接的写为 R S 的连接,这里的 R 和 S 是关系,但是 反连接的结果是在 S 中没有在公共属性名字上相等的元组的 R 中的那些元组。 例如“雇员”和“部门”和它们的反连接的表:
投影
投影是写为
的一元运算,这里的 a1,...,an 是属性名字的集合。
这种投影的结果定义为当所有在 R 中的元组被限制为集合 {a1,...,an} 的时候
所获得的集合。
选择
广义选择是写为
的一元运算,这里的 是由正常选择中所允许的原
子和逻辑算子 (与)、 (或) 和 (非)构成的命题公式。这种选择选出 R 中使
笛卡尔积定义得与集合论有所不同,这里的元组是平坦的、无子元组的。就是 说,不同于集合论,那里的n 元组和 m 元组的笛卡尔积是 2 元组,而关系代数 中它们的笛卡尔积把这个 2 元组展平为 n+m 元组。更形式的说,R × S 被定 义为:
R S = {r s| r R, s S}
此外,对于要定义的笛卡尔积,涉及的两个关系必须有不相交表头 — 就是说, 它们一定不能有公共属性名字。
介绍
关系代数在1970年 E.F. Codd 发表数据的关系模型之前很少受到注意。Codd 曾是皮尔士选集编辑者 Arthur W. Burks 的博士研究生。Codd 提议这样一种 代数作为数据库查询语言的基础。第一个基于 Codd 的代数的查询语言是 ISBL,許多作者都認同這個先驱的工作展示了一個使 Codd 的想法成为有用语言 的方式。商务系统12 是追随 ISBL 先例的短命工业级实力的关系 DBMS。在 1998 年 Chris Date 和 Hugh Darwen 提议了一种叫 Tutorial D 的语言, 意图用于教学关系数据库理论,它的查询语言也吸取了 ISBL 的想法。Rel 是 Tutorial D 的一个实现。即使 SQL 的查询语言也松散的基于了关系代数,尽 管 SQL 中的操作数(表)不完全是关系,很多有用的关于关系代数的理论在 SQL 对应者中不成立。
8.1.1 基本选择性质 8.1.2 分解有复杂条件的选择 8.1.3 选择和叉积 8.1.4 选择和集合运算 8.1.5 选择和投影 8.2 投影 8.2.1 基本投影性质 8.2.2 投影和集合运算 8.3 重命名 8.3.1 基本重命名性质 8.3.2 重命名和集合运算 9 参见 10 引用 11 外部链接
自然连接
自然连接是写为 (R S) 的二元运算,这里的 R 和 S 是关系。自然连接的结 果是在 R 和 S 中的在它们的公共属性名字上相等的所有元组的组合。例如下面 是表格“雇员”和“部门”和它们的自然连接:
雇员 Name EmpId DeptName Harry 3415 财务 Sally 2241 销售 George 3401 财务 Harriet 2202 销售
更形式的说,自然连接的语义定义为:
R S = { t s : t R, s S, fun (t s) }
这里的 fun(r) 是对于二元关系 r 为真的谓词,当且仅当 r 是函数二元关系。 通常要求 R 和 S 必须至少有一个公共属性,但是如果省略了这个约束则在那种 特殊情况下自然连接就完全变成上面定义的笛卡尔积。
10'000
CarC
50'000 Boat2
40'000
…wikipedia.org/…/关系代数_(数…
3/9
2010-1-7
关系代数 (数据库) - 维基百科,自…
如果我们要组合来自两个关系的元组,而组合条件不是简单的共享属性上的相 等,则有一种更一般形式的连接算子才方便,这就是 θ-连接(或 theta-连
部门
DeptName Manager
销售
Harriet
生产
Charles
雇员 部门 Name EmpId DeptName Sally 2241 销售 Harriet 2202 生产
更形式的说半连接的语义定义如下: R S = { t : t R, s S, fun (t s) }
这里的 fun(r) 定义同于自然连接。 半连接可以被使用自然连接模拟如下。假定 a1,...,an 是 R 的属性名字,则:
在纯数学中的关系代数是有关于数理逻辑和集合论的代数结构。
目录
1 介绍 2 原始运算
2.1 集合运算 2.2 投影 2.3 选择 2.4 重命名 3 连接和类似连接的运算 3.1 自然连接 3.2 θ-连接和相等连接 3.3 半连接 3.4 反连接 4 除法 5 外连接 6 域计算的运算 6.1 聚集运算 7 关系代数的限制 8 有用于查询优化的代数性质 8.1 选择
的结果才是有定义的。
这个运算可以用基本运算模拟如下:
R φ S = σφ(R × S)
在算子 θ 是等号算子 (=) 的时候这个连接也相等连接。
但是要注意,支持自然连接和重命名的计算机语言可以不需要 θ-连接,因为它 可以通过对自然连接(在没有公共属性的时候的它退化为笛卡尔积)的选择来完 成。
半连接
…wikipedia.org/…/关系代数_(数…
相关文档
最新文档