2.1关系
关系模型由关系数据结构、关系操作和关系完整性三部分组成
2.1.1关系的定义
1.关系数据库系统:以关系数据模型为基础的数据库系统
只包含单一的数据结构-关系,即实体以及实体间的联系均用关
系表示
2.二维表格
属性和属性值:列和列的值
域: 一组具有相同数据类型的值的集合
关系模式:表头
元组:行
关系或实例:行的集合
元数(列数):属性的个数
基数(行数):元组的个数
3.笛卡尔积
笛卡尔积可表示为一张二维表,表中每行对应一个元组,表中每列对应一个域
4.关系的定义
把D1╳D2 ╳ … Dn的子集称为域D1,D2 , … ,Dn上的关系,
表示为:R(D1,D2, … ,Dn),其中R表示关系名。
关系是笛卡尔积的有限子集,关系也是一张二维表,
表中每行对应一个元组,表中每列对应一个域。
必须对每一列取一个名字,称为属性。
2.1.2关系的性质
关系模型要求关系必须是规范化的二维表,即满足一定的规范条件。
1. 关系的每一个分量必须是一个不可分的数据项。
2. 列的分量是同一类型的数据,来自同一域;
3.每一列为一个属性,属性有属性名;
4.行的次序无关,列的次序无关;
5. 一个关系中不存在两个元组(行)在各个分量(或属性)上完全相同。
2.2关系的键
关系模型中以主键作为唯一性标识,以外键来表达实体集之间的联系。
2.2.1键的一组概念
关系的一个或几个属性被称为键(或码),其中:
超键:能唯一标识元组的属性集。
候选键(候选码、候选关系字):不含有多余属性(与列有关)的超键。
能够唯一标识一条记录的最小属性集
标识性:一个数据表的所有记录都具有不同的候选键
最小性:任一候选键的任何真子集都不能唯一标识一个记录(比如在成绩表中(学号,课程号)是一个候选键,单独的学号,课程号都不能决定一条记录)
非空性:不能为空
候选键是没有多余属性的超键
主属性:候选码的所有属性。
非主属性:不包含在任何候选码中的属性 。
主键(主码、主关系字):多个候选键中的一个。(用户选作元组标识的一个候选键作为主键。)
某个能够唯一标识一条记录的最小属性集。(是从候选码里人为挑选的一条)
唯一性:一个数据表只能有一个主键
标识性:一个数据表的所有记录都具有不同的主键取值
非空性:不能为空
人为的选取某个候选码为主码
外键:如果关系R的某一属性不是本身的主键,而是另一关系S的主键, 则称该属性是R
的外键。(外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。子数据表中出现的父数据表的主键,称为子数据表的外键)
全码:关系模式的所有属性是该关系模式的候选码,称为全码。(即所有属性当作一个码。若关系中只有一个候选码,且这个候选码中包含全部属性,则该候选码为全码)
2.2.2键的示例
例1:学生成绩信息表中有(学号、姓名、性别、年龄、系别、专业)
超键:
由于学号能确定一个学生,因此学生表中含有学号的任意组合都为此表的超键。如:(学号)、(学号,姓名)、(学号,性别)等。
在没有重名的条件下(姓名唯一):
学号唯一,所以是一个超键
姓名唯一,所以是一个超键
(姓名,性别)唯一,所以是一个超键
(姓名,年龄)唯一,所以是一个超键
(姓名,性别,年龄)唯一,所以是一个超键
候选键:
学号唯一,而且没有多余属性,所以是一个候选键
姓名唯一,而且没有多余属性,所以是一个候选键
(姓名,性别)唯一,但是单独姓名一个属性就能确定这个人是谁,所以性别这个属性就是多余属性,所以(姓名,性别)不是候选键
(姓名,年龄),(姓名,性别,年龄)同上,也不是候选键
主键:
候选键里面的一个,是人为规定的,例如学生表中,我们通常会让“学号”做主键,学号能唯一标识这一个元组。
外键:
假如还有一个教师表,每个教师都有自己的编号,假设老师编号在教师表中是主键,在学生表中它就是外键
例2:
1.学生信息(学号、姓名、系别、身份证号)
(1)候选码 (学号)(身份证号)
(2)主码 (学号)
(3)主属性 学号,身份证号
(4)非主属性 姓名,系别
2.选课情况(学号、课程号、成绩)
(1)候选码 (学号,课程号)
(2)主码 (学号,课程号)
(3)主属性 学号,课程号
(4)非主属性 成绩
(5)外键 学号(引用学生信息表中的学号),课程号(引用课程信息表中的课程号)
3.课程信息(课程号、课程名、学分)
(1)候选码 (课程号)
(2)主码 (课程号)
(3)主属性 课程号
(4)非主属性 课程名,学分
例3:
职工Z(职工编号,姓名,部门编号,性别)
部门B(部门编号,部门名称,部门经理)
对关系Z来说,
(1)超键:(职工编号,性别)唯一
(2)候选码:(职工编号),(姓名)唯一,而且没有多余属性
(3)主键:(职工编号)人为
(4)外键(部门编号)引用B表中的部门编号
2.3关系模式与关系数据库
2.3.1关系模式与关系
1.关系模式是对关系的描述,即二维表的表头那一行
与关系进行区分,关系:是元祖的集合
2. 关系模式的定义包括:模式名、属性名、值域、模式的主键和其它完整性约束条件。
关系模式名(属性名1,属性名2,...,属性名n)
3. 关系模式是静态的(型),关系是关系模式某一时刻的状态,是动态的(值)
2.3.2关系数据库模式与关系数据库
关系模型中,实体以及实体间的联系都用关系来表示。所有实体以及实体之间联系,即全部关系的集合构成一个关系数据库。
关系数据库模式,是对整个关系数据库的描述(型),关系数据库是所有关系模式某一时刻对应的关系的集合(值)。
2.3.3关系模式与关系数据库实例
学生关系模式 S(sno,sname,age,sex)
课程关系模式 C(cno,cname,tname)
选课关系模式 SC(sno,cno,grade)
2.4基本的关系操作
关系模型组成:关系数据结构、关系操作和关系完整性约束
2.4.1关系操作的类型
关系数据库的数据操作分为查询和更新:
1)查询操作包括选择、投影、连接、除、并、交、差操作
2)更新操作包括增加、删除、修改操作
2.4.2关系操作的特点
关系操作的特点:操作对象和结果是集合,
一般的非关系模型的数据操作:通常以记录为单位
2.4.3关系代数
5个基本操作:并、差、笛卡尔积、选择和投影 组成了关系代数完备的操作集
2.5关系数据语言的分类
2.5.1关系操作的类型
关系操作根据其理论基础不同,可以用关系代数和关系演算来表示
关系代数是用关系运算来表达查询要求的方式,关系演算用谓词来表达查询要求的方式。
关系演算按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。
2.5.2关系数据语言的分类
2.5.3关系数据语言的示例
例1:检索学习课程号为c2的学生学号和成绩。
关系代数表达式:
元组演算表达式:
SQL表达式:
2.6关系的完整性
关系的完整性是对数据的约束。
关系模型提供三类完整性规则:实体完整性、参照完整性和用户定义的完整性。
实体完整性和参照完整性是关系模型必须满足的完整性约束条件,由关系系统自动支持。
2.6.1实体的完整性
1.实体完整性规则
实体完整性定义:关系中的每个元组是可区分的,是唯一的。
规则:组成候选键(码)的属性(即主属性)上不能有空值。
2.关系数据库中的空值
若主属性取空值,说明存在某个不可标识的实体,与主码能唯一标识一个元组的定义相违背。
2.6.2参照完整性
1.参照完整性规则
定义:在关系模型中,实体及实体间的联系都是用关系来描述的,关系与关系之间存在着相互引用、相互约束的情况,不能引用不存在的实体。
规则:用于定义主键和外键之间的引用规则。
例如:若属性集K是关系模式R2的外键,K也是关系模式R1的主键,在R2中K的取值或为空,或等于R1关系中的某个主键值。
R1为被参照关系,R2为参照关系。
2.参照完整性说明
1) 外键和相应的主键可以不同名,只要定义在相同的值域上即可。
职工(职工号,职工名,年龄,部门编号)
部门(部门号,部门名,负责人)
2)R1和R2可以是两个不同的关系,表示实体之间的引用(关系间的引用),也可以是同一个关系,表示属性之间的联系(关系内部的引用)。如:
职工(职工号,姓名,年龄,部门号,负责人职工号)
3)外键值是否允许空,应视具体问题而定。
SC为被参照关系,不能为空;
学生关系表为参照关系 可以为空:
3.参照完整性检查和违约处理
2.6.3用户定义的完整性
1. 关系的完整性
不同的关系数据库系统根据其应用环境的不同,还需要一些特殊的约束条件。
2.用户定义的完整性规则
定义:用户定义的完整性是应用领域需要遵循的约束条件,是针对不同的应用环境而定义的约束条件,反映某一具体应用所涉及的数据应该满足的语义要求。
规则:取值范围,某属性必须唯一,某非主属性不能取空值
2.7关系代数
关系代数是实现关系操作的基本表示方法,关系代数运算按运算符的不同分为传统的集合运
算和专门的关系运算。
2.7.1集合运算
1.并
两个关系R1,R2 (属性相同)的合并,是由属于R1或属于R2(或属于两者)的所有元组T(不计重复元组,去掉重复的)组成的一个新的关系,新关系具有和R1相同的属性名集合。
例:求R∪S
2.差
两个关系R , R (属性相同)的求差(相减),是由属于R 1而不属于R 2的所有元组t组成的一个新的关系,新关系具有和R1相同的属性名集合。
例:求R-S 保留R(被减数)中与S不同的部分 ,与S-R区别
3.交
两个关系R , R (属性相同)的相交,是由既属于R 又属于R 的所有元组t组成的一个新的关系。等价于:R∩S = R-(R-S) R∩S =S-(S-R)
例:求R ∩ S 取相同部分
4.笛卡尔积
例:求R×S
结论:元组的个数= R和S中行数之积
属性的个数=R和S中列数之和
2.7.2投影和选择关系
1.投影
从现有关系中选取某些属性(列),删除重复的行(元组),组成新的关系。(从列的角度进行运算)
例:
A3放前,A1放后。删除重复的行元素。
2.选择
从现有关系中选择满足一定条件的元组组成新的关系。(从行的角度进行运算)
例:
要求A2的所有值大于4,且满足条件的行的A1为a
例:对于学生模式S(sno,sname,age,sex),
查询所有年龄大于18岁的女生的学号和姓名。写出关系代数表达式和运算结果。
解:要求 age>18 ,sex=女,选出符合条件的学号姓名
2.7.3连接运算
1.连接——θ连接
连接也称为θ连接,它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
例:θ连接 (一个运算条件的连接,从行的角度进行运算)
题目要求是R1表的A2要大于R2表的A2àR1表中的第一行和第三行符合要求
进行连接时注意属性同名时,要在前面加表名进行区分,如:R1.A1 R2.A2
例: θ连接(有多个运算符,且多个运算条件之间“与”的关系,从行的角度进行运算)
R中的A要大于S中的E且R中的B要小于S中的F
结果:
2.等值连接
两类常用连接运算
等值连接(equijoin)
—θ为“=”的连接运算
—选取A、B属性值相等的那些元组
例:保留所有属性,同名时进行区分;选取属性值相等的元祖
3.自然连接
自然连接(equijoin) ——特殊的等值连接
—在结果中把重复的属性列去掉
—从行和列的角度同时计算
例:
此题中去掉重复的属性B,保留相等属性值得B(b1~b3)
例:自然连接(从行和列的角度进行运算)
保留A1 A2中属性值相等的,去掉重复的
例:检索学习课程号为c2的学生姓名,写出关系表达式和结果 。
解:要求 课程号=c2 得出姓名
先链接两个表 使用选择条件à使用投影得结果
4.外连接
1)左外连接
连接结果显示左边表中所有记录,以及右边表中符合条件的记录
2)右外连接
连接结果显示右边表中所有记录,以及左边表中符合条件的记录
3)全外链接
连接结果显示左右边表中所有记录,包括符合条件和不符合条件的记录