数据库第二章
关系
-
域:是一组具有相同数据类型的值的集合。
例如:整数、实数、介于某个范围内的整数、{‘男’ ,‘女’ }… -
笛卡尔积:给定一组域D1 ,D2 ,…,Dn, 允许其中某些域是相同的。
D1 ,D2 ,…,Dn的笛卡尔积为:D1 x D2 x Dn ={ (d1, d2, …, dn) | di ∈Di, i=1, 2,…, n}
???? 笛卡尔积是所有域的所有取值的一个组合,不能重复
例如:假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积:A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
元祖(Tuple)
◾️笛卡尔积中每一个元素(d1 ,d2 ,…,dn )叫作一个n元组(n-tuple)或简称元组
例如:在A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}中,(a, 0), (a, 1) 等 都是2元组
分量(Component)
◾️笛卡尔积元素(d1 ,d2 ,…,dn )中的每一个值di 叫作一个分量
例如:a,b,0,1等都是分量 -
关系
1)关系
D1 x D2 x … x Dn 的 子集 叫作在域D1 ,D2 ,…,Dn 上的关系,表示为:
R(D1 ,D2 ,…,Dn ) R 是关系名,n 是关系的目或度
2)关系的表示
关系是一个二维表,表的每行对应一个元祖,表的每列队应一个属性。
3)码
????候选码
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。
简单的情况:候选码只包含一个属性。
最极端的情况:所有属性组是候选码,称为全码
????主码
若一个关系有多个候选码,则选定其中一个为主码
????主属性
候选码的诸属性称为主属性。
不包含在任何侯选码中的属性称为非主属性或非码属性。
????D1 ,D2 ,…,Dn 的笛卡尔积的某个子集才有实际含义,笛卡尔积(全集)没有实际意义。 - 三级关系
基本关系(基本表或基表)
实际存在的表,是实际存储数据的逻辑表示
查询表
查询结果对应的表(暂存在内存)
视图表
由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据 - 基本关系的性质
① 列是同质的
② 不同的列可出自同一个域
????其中的每一列称为一个属性
????不同的属性要给予不同的属性名
③ 列的顺序无所谓,,列的次序可以任意交换
④ 任意两个元组的候选码不能相同
⑤ 行的顺序无所谓,行的次序可以任意交换
⑥ 分量必须取原子值
关系模式
关系模式------------型
????是对关系的描述
????是静态、稳定的
- 关系模式是对关系的描述,可以形式化地表示为:
R(U,D,DOM,F)
R 关系名
U 组成该关系的属性名集合
D U中属性所来自的域
DOM 属性向域的映象的集合
F 属性间数据的依赖关系的集合
(数据依赖将在第六章详细叙述)
关系------------------值
????关系模式在某一时刻的状态或内容、
????动态的、不断变化的
????关系模式和关系往往笼统称为关系,通过上下文加以区别
关系数据库
- 在一个给定的应用领域中,所有关系的集合构成一个关系数据库
关系数据库的型与值
关系数据库的型:关系数据库模式,是对关系数据库的描述
关系数据库的值: 关系模式在某一时刻对应的关系的集合,通常称为关系数据库
关系的完整性
- 实体完整性
▫️若属性A是基本关系R的主属性,则属性A不能取空值(空值即“不知道”或“不存在”或“无意义”的值)
例:选修(学号,课程号,成绩)
“学号、课程号”为主码
“学号”和“课程号”两个属性都不能取空值
????可以简单记忆为:主属性不能为空 - 参照完整性
1)关系间的引用
在关系模型中实体及实体间的联系都是用关系来描述的。
例: 学生实体、专业实体
学生(学号,姓名,性别,专业号,年龄)
专业(专业号,专业名)
????学生关系引用了专业关系的主码“专业号”。
????学生关系中的“专业号”值必须是确实存在的专业的专业号
2)外码
设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks 相对应,则称F是R的外码
基本关系R称为参照关系(Referencing Relation)
基本关系S称为被参照关系(Referenced Relation)
学生实体、专业实体
学生(学号,姓名,性别,专业号,年龄)
专业(专业号,专业名)
????“专业号”属性F是学生关系的外码
????专业关系S是被参照关系,学生关系R为参照关系
3)参照完整性规则
若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks 相对应,则对于R中每个元组在F上的值必须为:
????或者取空值(F的每个属性值均为空值)
????或者等于S中某个元组的主码值
????简单记忆为:外码要么为空,要么源自于被参照关系的主码
3. 用户定义的完整性
针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需应用程序承担这一功能。
例:
课程(课程号,课程名,学分)
▫️“课程号”属性必须取唯一值
▫️非主属性“课程名”不能取空值
▫️“学分”属性只能取值{1,2,3,4}
习题6.
1)πSNO (σJNO =‘J1’ (SPJ))
2) πSNO (σJNO =‘P1’ ∧ PNO =‘J1’ (SPJ))
3) πSNO(πSNO,PNO(σJNO=‘J1’ (SPJ))⋈ πPNO(σCOLOR=‘红’§))
4) πJNO(SPJ)- πJNO(πPNO(σCOLOR=‘红’§)⋈πSNO(σCITY=‘天津’(S))⋈ πSNO,PNO,JNO(SPJ))
5) π JNO,PNO(SPJ)÷πPNO(σSNO=‘S1’(SPJ))
关系代数基本运算
基本运算有并、差、笛卡尔积、投影和选择,其他运算有交、连接和除