如何从数学上描述图6-1表与表之间的关系,以及每个表所具有的属性呢?IBM 公司的Edgar F.Codd[1]于1970年创立了关系代数(relational algebra),建立了关系数据库的基础。Codd于2003年去世,当年关系数据库的产值达到120亿美元。
为了方便,我们把关系作为一个表的抽象说法,两者是一样的,本文中为了避免与6.1.3的关系(relationship)在中文上的混淆,统一用表(Table),因此,这里关系代数就是表代数(Table algebra)——表的表达和运算的代数(注释:事实上,关系与表是有差别的,可参见数据库原理的书籍)。
表的每个列是属性,记为
A1,A2,…,An是属性(attribute)。
每个行是表模式(schema),记为R
R=(A1,A2,…,An)
例如,instructor=(ID,name,dept_name,salary)。
或解释为中文的定义:(www.xing528.com)
老师=(教师编号,姓名,部门,工资)
正式定义是,给定集合D1,D2,….Dn,表r是D1×D2×…×Dn的子集。
这样,表是n个元组(a1,a2,…,an)的集合,这里每个ai∈Di。
元组的顺序无关紧要,即元组可以按任意顺序存放。例如,instructor里面的属性(ID,name,dept_name,salary)的前后顺序可以是任意的。
定义了表,就可以定义出一张表的运算,多张相同模式表的运算,以及多张不同模式表的运算。
表代数具有5个基本算子:选择(selection)、投影(projection)、笛卡儿积(Cartesian product)、并(union)以及差(difference)。其他的运算是扩展运算,常用的是交(Intersection)、连接(Join)和除(Division)等运算,可以用上述5个基本算子构造而成。
下面以举例的方式解释五种基本算子和两个扩展运算的含义。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。