当前位置:文档之家› 关系数据库关系代数运算

关系数据库关系代数运算

组关系演算和域关系演算两类
• 是一种抽象的查询语言
SQL
• 介于关系代数和关系演算之间 • 集DDL、DML和DCL一身的关系数据语言
2.2 关系数据结构的形式化定义
关系模型建立在集合代数基础上,从集合论角度讨论 关系的形式化定义
定义1:域(Domain)-形式化表示为D
• 一组具有相同数据类型的值的集合,如整数、实数等。定义
张三 女
802
李四 男
803
王五 男
804
赵六 女
805
钱七 男
01
19
01
20
01
20
02
20
02
19
专业号 01 02 03
专业名 信息 数学 计算机
关系间的引用
例2 学生、课程、学生与课程之间的多对多联系
学生(学号,姓名,性别,专业号,年龄) 课程(课程号,课程名,学分) 选修(学号,课程号,成绩)
外码说明
关系R和S不一定是不同的关系 目标关系S的主码Ks 和参照关系的外码F必
须定义在同一个(或一组)域上 关于取名
外码并不一定要与相应的主码同名 当外码与相应的主码属于不同关系时,往往取
相同的名字,以便于识别
参照完整性举例
例1:学生实体与专业实体间的关系: 外码 学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名)
04
90
04
88
关系间的引用
例3 学生实体及其内部的领导联系(一对多)
学生(学号,姓名,性别,专业号,年龄,班长)
学号
801 802 803 804 805
姓名
张三 李四 王五 赵六 钱七
性别
女 男 男 女 男
专业号 年龄
01
19
01
20
01
20
02
20
02
19
班长 802
802 805
外码(Foreign Key)
关系完整性约束
• 实体完整性、参照完整性、用户定义完整性
关系的两个不变性, 由系统自动支持
由应用语 义约束
关系语言
关系操作特点
操作对象和结果都是集合 高度非过程化的语言,不必借助循环结构就可以完成
数据操作,能嵌入高级语言中使用
三种语言在表达能 力上完全等价
关系代数语言 关系数据语言 关系演算语言
关系模式与关系
关系模式是型,是对关系的描述,是静态的,稳定的 关系是值,由赋予它的元组语义来确定的,是动态的,不断变化的,
是关系模式在某一时刻的状态或内容
★实际应用中常常将关系模式和关系都称为关系
关系数据库
在给定应用领域中,所有表示实体及实体之间联 系的关系的集合构成一个关系数据库
关系数据库也有型和值之分
元素的数量是集合的基数
– 若Di的基数为Mi,则笛卡尔集的基数M为
n
M mi i 1
笛卡尔积
计算实例 例1:D1={甲,乙}, D2={1,2}, D3={a,b,c} 1)D1,D2,D3基数分别是多少? 2)D1×D2=?(基数?) 3)D1×D2×D3=?(基数?) 笛卡尔集可表示为一个二维表
专业
计算机 计算机 计算机 信息 信息 信息 计算机 计算机 计算机 信息 信息 信息
研究生
李勇 刘晨 王敏 李勇 刘晨 王敏 李勇 刘晨 王敏 李勇 刘晨 王敏
D1,D2,D3的笛卡尔积(上图)
关系数据结构的形式化定义
定义3:关系
D1×D2×···×Dn的子集叫做在D1, D2, …, Dn上的关 系,表示为 R(D1, D2, …, Dn)
选修(学号,课程号,成绩)
“学号”和“课程号”是选修关系中的主属性, 按照实体完整性和参照完整性规则,它们只能取 相应被参照关系中已经存在的主码值
参照完整性规则举例
学生(学号,姓名,性别,专业号,年龄,班长)
“班长”属性值可以取两类值:
空值,表示该学生所在班级尚未选出班长,或 该学生本人即是班长;
R=(导师,专业,研究生) •一个研究生只能有一个专业,如李 勇和王敏是计算机专业、刘晨是信 息专业
现在导师与研究生是什么关系?
限定一个学生只能有一个导师, 如张是计算机导师,刘是信息 专业导师
导师S
张清正 张清正 张清正 张清正 张清正 张清正 刘逸 刘逸 刘逸 刘逸 刘逸 刘逸
专业SP
计算机 计算机 计算机 信息 信息 信息 计算机 计算机 计算机 信息 信息 信息
元组关系演算语言 域关系演算语言
例如ISBL 例如APLHA, QUEL 例如QBE
具有关系代数和关系演算双重特点的语言 例如SQL
关系模型语言
关系代数语言
• 把关系当作集合,用集合运算和特殊的关系运算来表达查询
要求和条件
• 是一种抽象的查询语言
关系演算语言
• 用谓词来表达查询要求和条件 • 谓词变元的基本对象可以是元组变量或域变量,故可分为元
n:关系的度或目,表的列数,一般称n元关系
相关术语
候选码:能够唯一标识一个元组的属性组
• 一个关系可以有多个候选码
主码:一个关系中选定的一个候选码
主属性:主码的各个属性
非主属性(非码属性):不包含在任何候选码中的属

全码:若关系模式的所有属性组是这个关系模式的候
选码
请举例
三类关系
基本关系(基本表或基表)
请将例子表示为二维表
例2.已知三个域
D1=导师集合={张清正,刘逸} D2=专业集合={计算机,信息} D3=学生集合={李勇,刘晨,王敏}
计算思考
1)基数? 2)计算D1×D2×D3=?基数? 3)计算结果中的元组有无实际意 义?
导师
张清正 张清正 张清正 张清正 张清正 张清正 刘逸 刘逸 刘逸 刘逸 刘逸 刘逸
实际存在的表,是实际存储数据的逻辑表示
查询表
查询结果对应的表
视图表
由基本表或其他视图表导出的表,是虚表,不 对应实际存储的数据
例.已知三个域
D1=导师集合S={张清正,刘逸} D2=专业集合SP={计算机,信息} D3=学生集合P={李勇,刘晨,王敏}
计算思考
从笛卡尔集中取出一个子集,选择 有意义的结果组成关系
任意两个元组不能完全相同,由笛卡尔积的性质 决定
但许多关系数据库产品没有遵循这一性质,例如 Oracle,FoxPro等都允许关系表中存在两个完全相同 的元组,除非用户特别定义了相应的约束条件
举例
行的顺序无所谓,行的次序可以任意交换
遵循这一性质的数据库产品(如ORACLE),插 入一个元组时永远插至最后一行
关系数据库的型称为关系数据库模式,是对关系数据 库的描述
• 若干域的定义 • 在这些域上定义的若干关系模式
关系数据库的值是这些关系模式在某一时刻对应的关 系的集合,通常简称为关系数据库
课堂思考
给出导师、学生、专业三个实体可能组成 的关系数据库及其概念模型(ER图)
2.3 关系的完整性
实体完整性
属性被赋予不同的属性名 列的次序可以任意交换 任意两个元组不能完全相同 行的次序可以任意交换 分量必须取原子值,即不可再分
在许多实际关系数据库产品中,基本表并不完全具有这六条性质。
举例
列的顺序无所谓,次序可以任意交换
遵循这一性质的数据库产品(如ORACLE),增加新属 性时,永远是插至最后一列
但也有许多关系数据库产品没有遵循这一性质,例如 FoxPro仍然区分了属性顺序
非空值,这时该值必须是本关系中某个元组的 学号值
用户定义的完整性
用户定义的完整性是针对某一具体关系数 据库的约束条件,反映某一具体应用所涉 及的数据必须满足的语义要求
参照关系 被参照关系
关系参照图
学生关系 专业号 专业关系
例2:学生,课程,学生与课程之间的多对多联系:
学生(学号,姓名,性别,专业号,年龄)
被参照关系
课程(课程号,课程名,学分)
被参照关系
选修(学号,课程号,成绩)
参照关系主码?外码?关系来自照图学号课程号
学生关系
选修关系
课程关系
参照完整性举例
例3:学生(学号,姓名,性别,专业号,年龄,班长)
外码
设F是基本关系R的一个或一组属性,但不是关系R的 码。如果F与基本关系S的主码Ks相对应,则称F是基 本关系R的外码
FKr 基本关系R(F , …)
基本关系S(Ks,…)
参照关系 Referencing
Relation
被参照关系 Referenced Relation
或:目标关系 Target Relation
参照完整性
关系间的引用 外码 参照完整性规则
关系间的引用
在关系模型中实体及实体间的联系都是用关系来 描述的,因此可能存在着关系与关系间的引用
例1 学生实体、专业实体以及专业与学生间的一对多联系 学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名)
学号 姓名 性别 专业号 年龄
801
2:笛卡尔积(Cartesian Product) P47
• 一组域D1,D2,…Dn的笛卡尔积
D 1 D 2 . . . D n { ( d 1 , d 2 , . . . d n ) |d i D i , i 1 , 2 , . . . n }
• (d1,d2,d3,…dn)称为一个元组,di称为一个分量,集合中唯一
参照关系
被参照关系
外码
学号
801 802 803 804 805
姓名
张三 李四 王五 赵六 钱七
性别
女 男 男 女 男
专业号 年龄
01
相关主题