关系代数
关系型数据库是基于集合的数据库,数据库中的关系均为集合,所有针对关系的操作都是针对集合的操作,操作对象和操作结果都是关系,即若干元组的集合。关系模型中常用的关系操作包括查询(Query)、插入(Insert)、删除(Delete)、修改(Update)。其中,关系的查询表达能力很强,是关系操作中最主要的部分。关系的运算在符合集合运算规则的基础上围绕数据的查询展开,也就是进行数据的查询。把对关系的运算称为关系代数,通过关系代数对关系进行抽象的查询操作。
与所有的运算相一致,关系的运算也由运算数、运算符和运算结果构成。运算数和运算结果都为集合,运算符是针对集合的运算符。根据运算符的不同,关系代数可以分成传统的集合运算和专门的关系运算。
域
域是一组具有相同数据类型的值的集合。
笛卡尔积
设D1,D2,…,Dn为任意集合,定义笛卡尔积为:
D1×D2×…×Dn = {(d1,d2,…,dn) | di∈Di,i=1,2,…,n }
其中每一个元素(d1,d2,…,dn)称为一个n元组,简称元组。元组中每一个di称为是一个分量。
若Di(i=1,2,……,n)为有限集,其基数mi(i=1,2,……,n),则D1×D2×……×Dn的基数为:M=∏i=1nmi\displaystyle M=\prod_{i=1}^{n}m_iM=i=1∏nmi
笛卡儿乘积示例
设:
D1={计算机软件专业,信息科学专业}
D2={张珊,李海,王宏}
D3={男,女}
则D1×D2×D3笛卡尔积为:
D1×D2×D3={(计算机软件专业,张珊,男),(计算机软件专业,张珊,女),(计算机软件专业,李海,男),(计算机软件专业,李海,女),(计算机软件专业,王宏,男),(计算机软件专业,王宏,女),(信息科学专业,张珊,男),(信息科学专业,张珊,女),(信息科学专业,李海,男),(信息科学专业,李海,女),(信息科学专业,王宏,男),(信息科学专业,王宏,女)}
笛卡尔积实际上就是一个二维表
关系
D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn)
这里 R 表示关系的名字,n 是关系的目或度(Degree);
当 n=1 时,称该关系为单目关系(Unary relation);
当 n=2 时,称该关系为二目关系(Binary relation)。
关系是笛卡儿积的有限子集,所以关系也是一个二维表。
关系代数中使用的运算符包括 4 类:集合运算符、专门的关系运算符、比较运算符和逻辑运算符。
传统的集合运算符:传统的集合运算是二目运算,
- 并运算(∪)(Union)
- 交运算(∩)(Intersection)
- 差运算(-)(Difference)
- 广义笛卡尔积(×)(Cartesian Product)
专门的关系运算符:
(1)选择(Selection)
(2)投影(Projection)
(3)连接(Join)
(4)除 (Division)
逻辑运算符:(与、或、非:∧、∨、¬)
比较运算(关系运算)符:(=,>,<,≥,≤,≠)
左箭头←为赋值操作