数据库原理教案3-1
3. 2 关系代数
关系代数是关系数据库的数学基础。关系 代数的运算可分为两类:
传统的集合运算
并、交、差、笛卡尔积
特殊的集合运算
投影、选择、连接和自然连接、除法
一、关系查询语言和关系运算
关系数据库的数据操纵语言(DML)的语句分成 查询语句和更新语句两大类。 查询语句用于描述用户的各种检索要求; 更新语句用于描述用户进行插入、删除、修改等操作。 关于查询的理论称为“关系运算理论”。 关系查询语言根据其理论基础的不同分成三类: (1)关系代数语言。 (2)关系演算语言。 (3)关系逻辑语言。
图3.1 职工登记表
性别 M F M M
工资 2000 1500 2000 1000
三、关系模式、关系子模式
R(A1,A2,A3,……,An) 模式名,各属性名,值域名,模式的主键 举例:图书借阅管理,提供如下服务: (1)查询(种类、数量等); (2)查询借阅情况; (3)向出版社订购书籍。 分析:画出ER图,给出关系模式。
SC S S# S1 S2 S3 SNAME Wang Liu Chen AGE 20 21 22 SEX M F M PTR · · · PTR · · · · · S# S1 S3 S1 S3 S3 C# C1 C1 C2 C2 C3 GRADE 80 90 70 85 95
关系S和SC的环结构
关系S B C b1 c2 b2 c1 b1 c2 A
R-S B C c1
差
a1 b1
二、关系代数的五个基本操作 (3)
笛卡尔积(Cartesian Product)
设关系R的元数为i元,关系S的元数为j元,定义R和S 的笛卡尔积RS是个(i+j)分量的元组的集合。
R×S≡{ t | t=<tr,ts> ∧ tr ∈R ∧ ts ∈S},
关系模型的完整性规则 (4)
② 设工厂数据库中有两个关系模式: DEPT(D#,DNAME) EMP(E#,ENAME,SALARY,D# ) 车间模式DEPT的属性为车间编号、车间名。 职工模式EMP的属性为工号、姓名、工资、所在车间的 编号。每个模式的主键与外键已标出。在EMP中,由
于D# 不在主键中,因此D# 值允许空。
关 系 的 几 个 性 质
属性值是原子的,不可分解 没有重复的元组。 元组上下无序(无行序)。 理论上没有列序,为方便, 使用时有列序
二、关键码与表之间的联系
关键码(key,简称键)由一个或多个属性
组成。在实际使用中,有下列几种键。 (1)超建(super Key) (2)候选键(candidate Key) (3)主键(primary Key) (4)外键(foreign Key)
每个元组的前r个分量来自关系R的一个元组,后s个分 量来自关系S的一个元组。 若关系R有m个元组,关系S有n个元组,则RS共有 m· n个元组。
传统的集合运算
笛卡尔积(Cartesian Product)
RS
关系R A a1 a1 a2 B C b1 c1 b1 c2 b2 c1 关系S A a1 a2 a2 B C b1 c2 笛卡 b2 c1 尔积 b1 c2 A a1 a1 a1 a1 a1 a1 a2 a2 a2 B b1 b1 b1 b1 b1 b1 b2 b2 b2 C c1 c1 c1 c2 c2 c2 c1 c1 c1 D a1 a2 a2 a1 a2 a2 a1 a2 a2 E b1 b2 b1 b1 b2 b1 b1 b2 b1 F c2 c1 c2 c2 c1 c2 c2 c1 c2
关系模型的完整性规则 (5)
③ 设课程之间有先修、后继联系。模式如下:
R(C# ,CNAME,PC# )
其属性表示课程号、课程名、先修课的课 程号。如果规定,每门课程的直接先修课只有 一门,那么模式R的主键是C#,外键是PC#。这 里参照完整性在一个模式中实现。即每门课程 的直接先修课必须在关系中出现。
关系模型的完整性规则 (6)
用户定义的完整性规则 在建立关系模式时,对属性定义了数据类 型,即使这样可能还满足不了用户的需求。此 时,用户可以针对具体的数据约束,设置完整 性规则,由系统来检验实施,以使用统一的方 法处理它们,不再由应用程序承担这项工作。 例如学生的年龄定义为两位整数,范围还太大, 我们可以写如下规则把年龄限制在15~30岁之 间: CHECK(AGE BETWEEN 15 AND 30)
关系模型的表达
校名 地址 电话
学校
联系上的属性可 放在任一端。
1 任职 1 校长 任职年月
姓名
性别
年龄
职称
一对一联系
ER模型向关系模型的转换
系号 系名 电话
系
联系上的属性放 在N端。
1 聘用 N 教师 聘期
工号
姓名
性别
年龄
一对多联系
ER模型向关系模型的转换
学号 姓名 学生 年龄 性别
M
选课 N 课程 成绩
二、关系代数的五个基本操作 (4)
投影(Projection) 这个操作是对一个关系进行垂直分割,消去某些列,并重 新安排列的顺序。 设关系R是k元关系,R在其分量Ai1,…,Aim(m≤k,i1,…, im 为1到k间的整数)上的投影用π i1,…,im (R)表示,它 是一个m元元组集合,形式定义如下:
π i1,…,im(R)≡{ t | t=〈ti1,…,tim〉∧〈t1,…,tk〉∈R }
例如,π 3,1(R)表示关系R中取第1、3列,组成新的关系, 新关系中第1列为R的第3列,新关系的第2列为R的第1列。 如果R的每列标上属性名,那么操作符π 的下标处也可以用 属性名表示。例如,关系R(A,B,C),那么π C,A (R) 与π 3,1(R)是等价的。
第3章
关系运算
3.1 关系数据模型
关系模型有关系数据结构、关系操作 集合和完整性约束三部分组成。
关系操作的特点是操作对象和操作结果 都是集合。
用二维表格表示实体集,用关键码进行数据 导航的数据模型称为关系模型(relational Model)。这里数据导航(data navigation)是指 从已知数据查找未知数据的过程和方法。
关系模型的完整性规则 (3)
例: 下面各种情况说明了参照完整性规则在关系中如 何实现的。 ① 在关系数据库中有下列两个关系模式: S(S#,SNAME,AGE,SEX) SC(S#,C#,GRADE) 这里带下划线者为主键,带波浪线者为外键。据规 则要求关系SC中的S# 值应该在关系S中出现。如果关系 SC中有一个元组(S7,C4,80),而学号S7却在关系S中 找不到,那么我们就认为在关系SC中引用了一个不存在 的学生实体,这就违反了参照完整性规则。 另外,在关系SC中S# 不仅是外键,也是主键的一 部分,因此这里S# 值不允许空。
课程号
课程名 多对多联系
教师名
关系模型的三级体系结构 -- 关系 模式
在关系模型中,记录类型称为关系模 式,而关系模式的集合就是数据库的概念 模式。在系统实现时,关系模式和属性的 命名一般都用英文单词。
学生关系模式 S(S#,SNAME, AGE,SEX) 选 课 关 系 模 式 SC(S# , C# , GRADE) 课程关系模式 C(C#,CNAME, TEACHER)
设关系R和S具有相同的关系模式,R和S的差是 由属于R但不属于S的元组构成的集合,记为R -S。 形式定义如下: R-S≡{ t | t∈R ∧ t∈S},R和S的元数相同。
注: R-S不同于S-R
例子
传统的集合运算
差(Difference)
关系R A a1 a1 a2 B C b1 c1 b1 c2 b2 c1 A a1 a2 a2
二、关键码与表之间的联系
在图3.1中,(工号,姓名)是模式的一个超键, 但不是候选键,而(工号)是候选键。在实际 使用中,如果选择(工号)作为删除或查找元 组的标志,那么称(工号)是主键。
工号 4001 4002 4124 5018 姓名 zhang li liu wang 年龄 50 40 35 25
传统的集合运算
并(Union)
关系R
A a1 a1 a2
B b1 b1 b2
C c1 c2 c1
关系S A B a1 a2 a2 b1 b2 b1
RS
C c2 c1 c2 A B b1 b1 b2 b1 C c1 c2 c1 c2
并
a1 a1 a2 a2
二、关系代数的五个基本操作 (2)
差(Difference)
刘备,刘夫人,关平 刘备,刘夫人,张苞 关羽,刘夫人,张苞 刘备,关夫人,刘禅 关羽,关夫人,刘禅 刘备,关夫人,关平 关羽,关夫人,关平 刘备,关夫人,张苞 关羽,关夫人,张苞 刘备,张夫人,刘禅 关羽,张夫人,刘禅 刘备,张夫人,关平 关羽,张夫人,关平 刘备,张夫人,张苞 关羽,张夫人,张苞 关羽,刘夫人,刘禅 张飞,刘夫人,刘禅 关羽,刘夫人,关平
关系的数学定义
关系模型是建立在集合论的基础上,用集合 代数来定义一个关系。
定义一域(Domain)是值集合。定义二设 D1, D2, …, Dn 为一组域(可以有相同的域), D1, D2, …Dn 上的笛卡尔积 定义为: D1×D2×…×Dn = {(d1, d2, …,dn)|diDi, i=1, 2, …, n} 其中每一个元素(d1, d2, …dn)称为一个n元组, 简称元组。元组中每一个值 di 叫做一个分量。
关系的数学定义
定义三
D1×D2×…×Dn 的子集叫做在域 D1,D2,…, Dn上的关系(Relation),用R(D1, D2 …, Dn)表 示,R是关系名,n为关系的目。
关系是在一组域(D1,D2,…,Dn)上的笛卡 尔积的一个子集。