之前学数据库都只是感觉单纯在学习Sql而已,而sql语法又符合英语的语法,所以并没有觉的难学,直到翻开教材的那一次,各种概念术语搞得我甚是头疼。
闲话少说!众所周知,除运算是整个代数运算中最难理解的运算,没有之一。小编也是在学习这块内容的时候绞尽脑汁,在学习除运算之前,先引出象集的概念
通俗来说:象集就是有两个不相交的属性集A,B;属性集A取特定的属性值为x所对应的组元在属性集B上的投影;简单来说就是左边A中取一个值,对应右边B中每一行所能取的属性值的集合——即为象集。
教材定义:
给定一个关系R(X,Z),X和Z为属性组。当t[X]=x时,x在R中的象集(images set)定义为
Zx={ t[Z] | t ∈ A,t[X]=x }
他表示R中属性组X上值为x的诸元素组在Z上分量(对应属性值)的集合。
例子:
X Y Z
a1 b1 c2
a2 b3 c7
a3 b4 c6
a1 b2 c3
a4 b6 c6
a2 b2 c3
a1 b2 c1
a1在A中的象集为{(b1,c2),(b2,c3),(b2,c1)}
那什么是除运算呢?
以下是书上除运算的定义:
设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。
给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。
R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。