数据库系统原理-04735(2018年版) - 第二章:关系数据库 知识点与概念总结
数据库系统原理-04735(2018年版) - 第二章:关系数据库 知识点与概念总结
2020-07-26 225 ℃
第二章:关系数据库
2.1 关系数据库概述(识记)
- 基本特征:关系数据库的基本特征是使用关系数据模型阻止数据,这种思想源于数学。
2.2 关系数据模型
- 关系数据模型组成三要素: 数据结构、数据操作、关系完整性约束。
2.2.1 关系数据结构
(1)关系(Relation):也称为表(Table),一个关系对应着一个二维表,二维表就是关系名。
(2)元组(Tuple):在二维表中的一行,称为一个元组。
(3)属性(Attribute):在二维表中的列,称为属性。属性的个数称为关系的元或度。列的名称称为属性值;
(4)(值)域(Domain):属性值的取值范围为值域。
(5)分量:每一行对应的列的属性值,即元组中的一个属性值。 [2]
(6)关系模式:在二维表中的行定义,即对关系的描述称为关系模式。一般表示为(属性1,属性2,…,属性n),如老师的关系模型可以表示为教师(教师号,姓名,性别,年龄,职称,所在系)。
(7)键(码):如果在一个关系中存在唯一标识一个实体的一个属性或属性集称为实体的键,即使得在该关系的任何一个关系状态中的两个元组,在该属性上的值的组合都不同。
(8)候选键(候选码):若关系中的某一属性的值能唯一标识一个元组如果在关系的一个键中不能移去任何一个属性,否则它就不是这个关系的键,则称这个被指定的候选键为该关系的候选键或者候选码。
例如下列学生表中“学号”或“图书证号”都能唯一标识一个元组,则“学号”和“图书证号”都能唯一地标识一个元组,则“学号”和“图书证号”都可作为学生关系的候选键。
学号 | 姓名 | 性别 | 年龄 | 图书证号 | 所在系 |
---|---|---|---|---|---|
S3001 | 张明 | 男 | 22 | B20050101 | 外语 |
S3002 | 李静 | 女 | 21 | B20050102 | 外语 |
S4001 | 赵丽 | 女 | 21 | B20050301 | 管理 |
而在选课表中,只有属性组“学号”和“课程号”才能唯一地标识一个元组,则候选键为(学号,课程号)。
学号 | 课程号 |
---|---|
S3001 | C1 |
S3001 | C2 |
S3002 | C1 |
S4001 | C3 |
(8)主键(主码):在一个关系的若干候选键中指定一个用来唯一标识该关系的元组,则称这个被指定的候选键称为主关键字,或简称为主键、关键字、主码。每一个关系都有并且只有一主键,通常用较小的属性组合作为主键。例如学生表,选定“学号”作为数据操作的依据,则“学号”为主键。而在选课表中,主键为(学号,课程号)。
(9)主属性和非主属性:关系中包含在任何一个候选键中的属性称为主属性,不包含在任何一个候选键中的属性为非主属性。
(10)全键或者全码:一个关系模式中的所有属性的集合。
(11)外键或者外码:关系中的某个属性虽然不是这个关系的主键,或者只是主键的,但它却是另外一个关系的主键时,则称之为外键或者外码。
(12)超键或者超码:如果在关系的一个键中移去某个属性,它仍然是这个关系的键,则称这样的键为关系的超键或者超码。
(13)参照关系与被参照关系:是指以外键相互联系的两个关系,可以相互转化。
2.2.2 关系数据语言(识记)
1)关系代数语言
2)关系演算语言
3 ) 兼具双重特点的语言(例如SQL)
关系代数(识记)
**1.关系代数的五个基本操作:并、差、笛卡尔积、投影和选择。 **
-
并 (∪):两个关系需有相同的关系模式,并的对象是元组,由两个关系 所有元组构成。
-
差 (-):同样,两个关系有相同的模式,R和S的差是由属于R但不属于S 的元组构成的集合。
-
笛卡儿积(×): 对于两个关系作运算,列:(n+m)列的元组 的集合 ,元组的前n列是关系R的一个元组后m列是关系S的一个元组, 行:k1×k2个元组。
-
投影( σ):对关系进行垂直分割,消去某些列,并重新安排列的顺序。
-
选择 (π):根据某些条件关系作水平分割,即选择符合条件的元组。
**2.关系代数的四个组合操作:交、联接、自然联接和除法 **
-
交(∩):R和S的交是由既属于R又属于S的元组构成的集合。 联接包括θ联接和F联接,是选择R×S中满足iθ(r+j)或F条件的 元组构成的集合,特别注意等值联接 (θ为等号“=”)。
-
自然联接(R|X|S):在R×S中,选择R和S公共属性值均相等的元 组,并去掉R×S中重复的公共属性列。如果两个关系没有公共属性, 则自然联接就转化为笛卡尔积。
-
除法(÷):首先除法的结果中元数为两个元数的差,可以直接用 观察法来得到结果,把S看作一个块,拿到R中去和相同属性集中的元 组作比较,如果有相同的块,且除去此块后留下的相应元组均相同, 那么可以得到一条元组,所有这些元组的集合就是除法的结果。
选择(Selection)
-
选择又称为限制(Restriction)
-
选择运算符的含义
在关系R中选择满足给定条件的诸元组
σF ® = {t|tR∧F(t)= ‘真’}
F*8:选择条件,是一个逻辑表达式,基本形式为:
[( ] X1θY1 [ )][φ [( ] X2θY2 [ )]]…
θ:比较运算符(>,≥,<,≤,=或<>)
X1,Y1等:属性名、常量、简单函数;属性名也可以用它的序号 来代替;
φ:逻辑运算符(∧或∨)
[ ]:表示任选项
…:表示上述格式可以重复下去
- 选择运算是从行的角度进行的运算
4)举例
设有一个学生-课程数据库,包括学生关系Student、课程关系 Course和选修关系SC。
**[例1] ** : 查询信息系(IS系)全体学生
σ Sdept = ‘IS’ (Student)
或 **σ 5 =‘IS’ (Student) **
结果:

[例2] :查询年龄小于20岁的学生
**σ Sage < 20(Student) **
或 **σ 4 < 20(Student) **
结果:
投影(Projection)
1)投影运算符的含义
从R中选择出若干属性列组成新的关系
πA ® = { t[A] | t R }
A:R中的属性列
2)投影操作主要是从列的角度进行运算

但投影之后不仅取消了原关系中的某些列,而且还可能取消某些 元组(避免重复行)
3)举例
[例3] :查询学生的姓名和所在系
即求Student关系上学生姓名和所在系两个属性上的投影
**π Sname,Sdept(Student) **
或 π 2,5 (Student)
结果:
[例4] 查询学生关系Student中都有哪些系
π Sdept(Student)
结果:

连接(Join)
1)连接也称为θ连接
2)连接运算的含义
从两个关系的笛卡尔积中选取属性间满足一定条件的元组
A和B:分别为R和S上度数相等且可比的属性组
θ:比较运算符
连接运算从R和S的广义笛卡尔积R×S中选取(R关系)在A属性组 上的值与(S关系)在B属性组上值满足比较关系的元组。
3)两类常用连接运算
等值连接(equijoin)
什么是等值连接?
θ为“=”的连接运算称为等值连接
等值连接的含义
从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组, 即等值连接为:
自然连接(Natural join)
什么是自然连接?
自然连接是一种特殊的等值连接 两个关系中进行比较的分量必须是相同的属性组 在结果中把重复的属性列去掉 自然连接的含义 R和S具有相同的属性组B
4)一般的连接操作是从行的角度进行运算
自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。
5)举例
**[例5] **
2.2.3 关系的完整性约束
-
实体完整性
实体完整性要求每个表都有唯一标识符,每一个表中的主键字段不能为空或者重复的值。 -
参照完整性
参照完整性要求关系中不允许引用不存在的实体。设定相应的更新删除插入规则来更新参考表。
例如表sutdent(有id,username,password),表sutdent_info(有id,name,age,sex)。其中表sutdent_info参照了表student。id作为外键。那么当student表删除一行时,表student_info对应的id那一列将被删除或者置空(根据设定的规则而定)。同样,表student_info增加一行,其中的id必须等于student表中的id。
- 用户自定义完整性
用户自定义完整性是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
也就是说:某个表你设置这一列为null,not null,default,check等。包括:非空约束、唯一约束、检查约束、主键约束 、外键约束
- 关系模型完整性约束的检验
1、非空约束(Not Null Constraint) 这个可能大家都了解,就是我们在添加那个表 userinfo,在id、name后面都添加了not null,就是有些列不能把它设为空。
2、唯一约束(Unique Constraint) 一个唯一约束并不包括一个NULL值。直接在字段定义后加入UNIQUE即可定义该唯一约束。 1) 一个表只能创建一个主键约束,但一个表可以根据需要对不同的列创建若干unique约束 2)主键字段不允许为null ,unique允许为空 3)一般创建主键约束时,系统自动产生簇索引,unique约束自动产非簇索引
3、检查约束(The Check Clause) 通过在定义数据库表里,在字段级或者是在表级加入的检查约束,使其满足特定的要求。 我来举一个例子 create table student ( name varchar(15) not null, student_id varchar(15), degree_level varchar(15), primary key(student_id), check(degree_level in(‘Bachelors’,‘Masters’,‘Doctorate’))); Here ,we use the check clause to simulate an enumerated type by specifying that degree_level must to be one of ‘Bachelors’,‘Masters’,‘Doctorate’;
4、主键约束(Primary Key Constraint) 其实主键约束就是一张表只能建立一个主键约束,其实就是唯一约束+非空约束。大家通过上课讨论那么多关于“依赖”的事情,估计大家都能理解了
5、外健约束( Foreign Key Constraint) Foreign Key Constraint主要是确保同一个表或者不同表之间的引用完整性,所以必须引用一个PRIMARY KEY或者UNIQUE约束,用户必须在应用表上具有REFERENCES权限;一个表中最多可以有31个外部键约束; 在临时表中,不能使用外部键约束; 主键和外部键的数据类型必须严格匹配 。
2.3 关系数据库的规范化理论
2.3.1 关系模式的冗余和异常问题
1)数据冗余
2 ) 更新异常
3 ) 插入异常
4 )删除异常
2.3.1 函数依赖
- 1.函数依赖的定义
设有关系模式R(A1,A2,…An)或简记为R(U),X,Y是U的子集, r是R的任一具体关系,如果对r的任意两个元组t1,t2,由t1[X]=t2[X] 导致t1[Y]=t2[Y],则称X函数决定Y,或Y函数依赖于X,记为X→Y。 X→Y为模式R的一个函数依赖。
**这个定义可以这样理解:**有一张设计好的二维表,X,Y是表的某 些列(可以是一列,也可以是多列),若在表中的第t1行,和第t2行上 的X值相等,那么必有t1行和t2行上的Y值也相等,这就是说Y函数依 赖于X。
- 2.函数依赖的逻辑蕴涵
设F是关系模式R的一个函数依赖集,X,Y是R的属性子集,如果从 F中的函数依赖能够推出X→Y,则称F逻辑蕴涵X→Y,记为F|=X→Y。
而函数依赖的闭包F + 是指被F逻辑蕴涵的函数依赖的全体构成 的集合。
- 3.键和FD的关系
键是唯一标识实体的属性集。对于键和函数依赖的关系:有两个 条件:设关系模式R(A1,A2…An),F是R上的函数依赖集,X是R的一 个子集:
1 X→A1A2...An∈F +(它的意思是X能够决定唯一的一个元组)
2 不存在X的真子集Y,使得Y也能决定唯一的一个元组,则X就 是R的一个候选键。(它的意思是X能决定唯一的一个元组但又没有多 余的属性集)
包含在任何一个候选键中的属性称为主属性,不包含在任何键中 的属性为非主属性(非键属性),(注意) 主属性应当包含在候选键 中。
- 4.函数依赖(FD)的推理规则
前面我们举的例子中是以实际经验来确定一个函数依赖的逻辑蕴涵,但是我们需要一个推理规则才能完全确定F或F+的所有函数依赖。
设有关系模式R(U),X,Y,Z,W均是U的子集,F是R上只涉及到U 中属性的函数依赖集,推理规则如下:
A1 自反性:如果Y X U,则X→Y在R上成立。
A2 增广性:如果X→Y为F所蕴涵,Z U,则XZ→YZ在R上成立。 (XZ表示X∪Z,下同)
A3 传递性:如果X→Y和Y→Z在R上成立,则X→Z在R上成立。
A4 合并性:如果X→Y和X→Z成立,那么X→YZ成立。
A5 伪传性:如果X→Y和WY→Z成立,那么WX→Z成立。
A6 分解性:如果X→Y和Z Y成立,那么X→Z成立。
A7 复合性:{X→Y, W→Z} |=XW →YZ。
A8 通用一致性定理:{X→Y, W→Z } |=x ∪(X-Y) →YZ。