学习数据库系统第二章、关系数据库
目录:
一、关系数据库结构的形式化定义
按照数据模型的三个要素,关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
(一)、关系
1、域:域是一组具有相同数据类型的集合;如:专业、年龄、姓名……(在表中是每一列)
2、笛卡尔积:笛卡尔积是域上的一种集合运算;如D1*D2*D3*D4……其中每一个元素(d1、d2、d3……)叫作元组,其中的一个d单独叫作分量;笛卡尔积可表示为一张二维表,表中的每行对应一个元组,每列对应一个域。
3、关系:关系是笛卡尔积的有限子集,所以关系也是一张二维表。表中的每行对应一个元组,每列对应一个域。
一组域的子集叫作在某一个域上的关系,关系R也是一张二维表,由于域可以相同,为了区分必须对每列起一个名字,称为属性。若关系中的某一属性组的值能唯一标识一个元组,而子集不能,称该属性组为候选码,有多个候选码时选定一个为主码。
候选码的属性称为主属性,不是候选码的属性陈非主属性。
关系有三种类型:基本表、查询表、视图表;
- 基本关系(基本表):基本表是实际存在的,它是实际存储数据的逻辑表示。
- 查询表:查询表是查询结果对应的表。
- 视图表:视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。
(二)、关系模式
数据库中要区分型和值。而关系数据库中,关系模式是型,关系是值。关系模式是对关系的描述。
关系是元组的集合,因此关系模式必须指出这些元组由哪些属性构成,这些属性又来自哪些域,以及属性和域之间的映像关系。
关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的。
(三)、关系数据库
所有关系的集合构成一个关系数据库。
(四)、关系模型的存储结构
- 有的关系数据库管理系统中一个表对应一个操作系统文件,将物理数据组织交给操作系统完成
- 有的关系数据库管理系统从操作系统那里申请若干个大的文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理
二、关系操作
(一)、基本的关系操作
关系模型中常用的关系操作包括 查询操作 ;插入、删除、修改操作 两大部分。
查询操作:选择、投影、连接、除、并、差、交、笛卡尔积 —— 其中 选择、投影、并、差、笛卡尔积是5种基本操作
(二)、关系数据语言的分类
三类:关系代数语言、关系演算语言、具有前两者双重特点的语言;
1、关系代数语言
用对关系的运算来表达查询要求
代表:ISBL
2、关系演算语言:元组关系演算语言、域关系演算语言
用谓词来表达查询要求
3、具有关系代数和关系演算双重特点的语言
结构化查询语言:SQL(Structured Query Language)
三、关系的完整性
关系的完整性规则是对关系的某种约束条件。
1、实体完整性:属性不能为空值,空值就是不知道、不存在、无意义的值。
规则:
- 关系模式中以主码作为唯一性标识。
- 主码中的属性即主属性不能取空值。
2、参照完整性:关系与关系之间的引用。如:学生实体和专业实体之间的关系,两者之间存在属性的引用,即学生关系引用了专业关系的主码专业号,显然专业号必须是确实存在的,也就是说学生关系的某一个属性的取值需要参照专业关系的属性取值。
外码:一个关系A里面的一个属性a与另一个关系B的一个主属性主码a相对应相同。因此属性a就是关系A的外码。
参照完整性规则就是定义外码与主码之间的引用规则。
规则:
- 外码取空值
- 外码非空值,但该值必须是被参照关系中的主码值
3、用户定义完整性
该规则是一些特殊的约束条件
四、关系代数
关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。
运算三大要素:运算对象、运算符、运算结果。
关系代数的运算对象是关系,运算结果也是关系,关系代数的运算符包括两类:传统的集合运算符和专门的关系运算符。
- 将关系看成元组的集合,传统的集合运算是从关系的“水平”方向即行的角度进行
- 专门的关系运算不仅涉及行而且涉及列
(一)、传统的集合运算
设2个关系R和S,具有相同的属性个数,相应的属性取自同一个域;
1、并R∪S
2、差R - S
3、交R∩S
4、笛卡尔积R×S
(二)、专门的关系运算
1、选择σ:又称限制,它是在关系R中选择满足给定条件的某些元组。选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算。
2、投影π:关系R上的投影就是从关系R中选择出若干属性列来组成新的关系,投影操作是从列的角度进行运算
3、连接:它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组;
- 等值连接:从两个关系的广义笛卡尔积中选取那行属性值相等的那些元组;
A | R.B | C | S.B | E |
a1 | b1 | 5 | b1 | 3 |
a1 | b2 | 6 | b2 | 7 |
a2 | b3 | 8 | b3 | 10 |
a2 | b3 | 8 | b3 | 2 |
- 自然连接:一种特殊的等值连接,它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉;如把上面表中重复的B去掉一个。
A | B | C | E |
a1 | b1 | 5 | 3 |
a1 | b2 | 6 | 7 |
a2 | b3 | 8 | 10 |
a2 | b3 | 8 | 2 |
4、除÷:关系R与关系S的除运算得到一个新的关系P(X)
除操作是同时从行和列角度进行运算
五、小结
本章学习了关系数据库的基本概念,包括关系模型的数据结构、关系操作以及关系的三类完整性;学习了关系代数包括传统的集合运算符和专门的关系运算符。
六、习题
1、关系模型的三个组成部分。
答案:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
2、关系数据语言的特点和分类。
答案:特点:都具有完备的表达能力。分类:关系代数语言、关系演算语言:元组关系演算语言和域关系演算语言、具有关系代数和关系演算双重特点的语言。
3、理解术语:
(1)域,笛卡尔积,关系,元组,属性;
答案:
域:域是一组具有相同数据类型的集合。
笛卡尔积:笛卡尔积是域上的一种集合运算。
关系:关系是笛卡尔积的有限子集。
元组:笛卡尔积的其中一个子集就是一个元组。
属性:由于域可以相同,为了区分来自同一个域的必须对每列起一个名字,这些名字就称为属性。
(2)主码,候选码,外码;
答案:
主码:多个候选码中的一个码。
候选码:若关系中的某一属性组的值能唯一标识一个元组,而子集不能,称该属性组为候选码。
外码:一个关系A里面的一个属性a与另一个关系B的一个主属性主码a相对应相同。因此属性a就是关系A的外码。
(3)关系模式,关系,关系数据库
答案:
关系模式:关系模式是对关系的描述。
关系:关系是元组的集合。
关系数据库:所有关系的集合构成一个关系数据库。
4、关系模式和关系的区别。
答案:关系模式是型,关系是值,关系模式是对关系的描述
5、关系模式的完整性规则。
答案:实体完整性:
- 关系模式中以主码作为唯一性标识。
- 主码中的属性即主属性不能取空值。
参照完整性:
- 外码取空值
- 外码非空值,但该值必须是被参照关系中的主码值
6、等值连接和自然连接的区别联系。
答案:连接运算符θ是“=”的连接运算称为等值连接;从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组。
自然连接是一种特殊的等值连接,两个关系中进行比较的分量必须是相同的属性组,在结果中把重复的属性列去掉;自然连接的含义:R和S具有相同的属性组B
7、关系代数的基本运算有哪些?
答案:基本运算:并、差、笛卡尔积、投影、选择这5种。
8、设有一个 SPJ 数据库,包括 S , P , J , SPJ 四个关系模式:
1 )求供应工程 J1 零件的供应商号码 SNO :
答案:π Sno ( σ Jno= ‘ J1 ’ ( SPJ ) ) //投影π +选择σ
2 )求供应工程 J1 零件 P1 的供应商号码 SNO :
答案:π Sno ( σ Jno= ‘ J1 ’∧ Pno= ‘ P1 ‘ (SPJ))
3 )求供应工程 J1 零件为红色的供应商号码 SNO :
答案:π Sno ( π Sno,Pno (σ Jno= ‘ J1 ‘ (SPJ)) ∞π Pno (σ COLOR= ’红‘ ( P ) ))
4 )求没有使用天津供应商生产的红色零件的工程号 JNO :
答案:π Jno (SPJ)- π JNO (σ city= ‘天津’∧ Color= ‘红‘ ( S ∞ SPJ ∞ P )
5 )求至少用了供应商 S1 所供应的全部零件的工程号 JNO :
答案:π Jno , Pno (SPJ) ÷ π Pno (σ Sno= ‘ S1 ‘ ( SPJ ))