数据库:关系代数

目录


有了数据库,还要通过查询来获得数据。SQL是常用的查询语言,但我想用更抽象的查询语言来表达,从思路上去理解而忽略实现细节。下面将介绍关系代数。

数据库实例

在介绍查询语言之前,先定义一个数据库实例:
Sailors(sid: integer, sname: string, rating: interger, age: real)
Boats(bid: integer, bname: string, color: string)
Reserves(sid: integer, bid: integer, day: date)

关系代数

选择与投影

选择和投影均可对单个关系进行操作。选择行的操作符为 σ ,投影列的操作符为 π ,两种操作均可以添加检索条件。

等级大于8的水手: σ r a t i n g > 8 ( S a i l o r s )
所有水手名字和等级: π s n a m e , r a t i n g ( S a i l o r s )

集合操作

每个关系都可以看作实例的集合,因此可以对两个关系进行集合操作。集合操作包括交,并,差以及笛卡尔积,操作符分别为 × 。两个关系进行集合操作的结果仍为关系。

连接

连接操作包括条件连接、相等连接和自然连接,操作符为 。连接本质上是求笛卡尔积,条件连接是只对符合条件的元组进行连接,相等连接是条件为相等表达式的连接,自然连接是只对存在同名字段的元组进行连接。

所有水手预订的船只: S a i l o r s R e s e r v e s B o a t s

除并不是基本操作,虽然可以用操作符 表示,但实际上除是由其它操作定义的。考虑两个关系实例 A B A 有且仅有字段 x y ,而 B 只有一个字段 y A B 定义为满足如下条件的 x 的集合,对于 B 中每个元组 y ,在 A 中都有一个元组 < x , y > 与之对应。

A B 定义为: π x ( A ) π x ( ( π x ( A ) × B ) A )

参考资料

Raghu Ramakrishnan, Johannes Gehrke. Database Management Systems (Third Edition)[M]. 北京:清华大学出版社, 2003.

猜你喜欢

转载自blog.csdn.net/fast_g/article/details/79808329