关系:一个扁平二维表。N个集合的笛卡尔积集合的子集。
每一行为一个元组,每一列为一个属性。关系模型为数据库表的表头。
主键(码):选一个候选码作为身份区别。
超码:一个关系中,能够标识一个元组的属性。
候选码:一个关系中,能够标识一个元组,最小属性集合。可能有多个,基于用户的使用环境。
null值与其他值比较时,其结果为null(null表示不确定)。
3 in {1,2,null} 结果为null。
关系性的完整性约束机制:1.主码属性不能为空 2.外码取值受限制(取值为参照的表的值,或为空)3.域完整性是针对某一具体关系数据库的约束条件,它保证表中某些列不能输入无效的值。4.用户定义的完整性
它是一种抽象的查询语言,用对关系的运算来表达查询。
关系代数用到的运算符包括传统的运算符和专门的关系运算符两类。
传统的集合运算有 并,差,交 和 笛卡尔积4个,都为双目运算符。
专门的关系运算符有选择,投影,连接和除4个,选择和投影是单目运算符,连接和除是双目运算符。选择运算: (类似6)选取某些符合条件的元组。
投影:(类似π)选取某些符合条件的列。
Join操作:在某些条件下 R连接S,R中的每一个元组 与S中的每一个元组做笛卡尔积,满足条件的元组留下来,两个表的列并在一起。
Natural join:R连接S,R中的每一个元组 与S中的每一个元组做笛卡尔积,相同的列取值相同的被留下,其余的被删除,两个表的列并在一起。
左外连接:左边全部的信息会被留下,类似Natural Join。
象集:一个关系R(X , Z),X的值为某个值时,Z的值对应的集合。
除:元组在x上分量值x的象集Yx包含S在Y上投影的集合。一定是象集Yx含有每一个S在y上投影的集合,结果只有分量值x。并且包含象集Yx的元组对应的X应完全相同。
------象集的本质是一次选择运算和一次投影运算。
(R中X分量等于x的元组集合在属性集Z上的投影)。a4在R中的象集为{(b6,c6}
1.选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算。
2.投影运算是从R中选择出若干列组成新的列。这是从列的角度进行的运算。
3.连接运算从两个关系的笛卡尔积中选取属性间满足一定条件的元组,比如,从R到S的笛卡尔积 R x S 中选取R关系中在A属性组上的值与S关系中在B属性组上值满足比较关系。连接分为等值连接和自然连接。
等值连接,它是从关系R与S的笛卡尔积中选取A , B属性值相等的那些元组。是从行的角度进行的。自然连接,是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性去掉。是同时从行的角度和列的角度进行的。
4.除 给定关系R(X,Y) 和S(Y,Z) ,其中X,Y,Z为属性组,R中的Y与S中的Y可以有不同的属性名,但必须有相同的值域。R与S的除运算得到一个新的关系P(X),该P中只包含R中投影下来的X属性组,并且该属性组X应该满足: R(Y)=S(Y);
关系的查询处理:
查询处理是关系数据库管理系统执行查询语句的过程。
查询处理可以分为4个阶段:查询分析,查询检查,查询优化和查询执行。
查询分析检查语法错误。查询检查进行语义检查,即相应的操作对象是否存在,是否违背完整性约束等。
查询优化是选择一个高效执行的查询处理策略。
查询执行是根据优化器得到的处理策略生成查询执行计划,由代码生成器生成某个查询计划的代码,然后执行。
最佳实践:
如果在关系代数中需要做连接操作,则应使用自然连接,而不是笛卡尔积运算。
能在自然连接前使用选择减少数据,则先执行选择,后连接。