1 / 102

第 二 章 关系数据库

第 二 章 关系数据库. 2.1 关系数据库的基本概念. 2.2 关系模型及其描述. 2.3 关系代数. 2.4 关系演算. 本章小结. 1 、关系 及其性质 ( 1 ) 域 定义 2.1: 域是一组具有相同数据类型的值的集合。. 2.1 关系数据库的基本概念. 例:. 在关系中用域来表示属性的取值范围 域中所包含的值的个数称 域的基数 ( 用 m 表示 ). 例: D 1 ={ A , 2 , 3 , … , Q , K } M 1 = 13

field
Download Presentation

第 二 章 关系数据库

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第二章关系数据库 2.1 关系数据库的基本概念 2.2 关系模型及其描述 2.3 关系代数 2.4 关系演算 本章小结

  2. 1、关系及其性质 (1)域 定义2.1:域是一组具有相同数据类型的值的集合。 2.1 关系数据库的基本概念 例: • 在关系中用域来表示属性的取值范围 • 域中所包含的值的个数称域的基数(用m表示) • 例:D1={A , 2 , 3 , … , Q , K } M1= 13 • D2={数据库原理,面向对象数据库技术} M2= 2

  3. (2)笛卡尔积 定义2.2: 给定一组域 D1,…,Dn (可有相同的域)。其笛卡尔积为: D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2…,n} 2.1 关系数据库的基本概念 n m= ∏ mi i=1 例: di为分量 n元组 笛卡儿积也是一个集合 其中每一个元素(d1,d2,…,dn)叫作一个n元组(n-Tuple), 或简称为元组。元素中的每一个值di叫作一个分量(Component)。 若Di(i=1,2,…,n)为有限集,其基数(Cardinal number)为mi(i=1,2,…,n),则D1×D2×…×Dn的基数为:

  4. (3)关系 2.1 关系数据库的基本概念 定义2.3 D1×D2×…×Dn的有意义的子集称为在域D1,D2,…,Dn上的关系, 记为 R(D1,D2,…,Dn)。 其中:R为关系的名;n为关系的度(目);r∈R表示 r 是 R 中的元组。 • 子集元素是关系中的元组; • 关系中的元组个数是关系的基数; • 同样可以把关系看作是一个二维表: • 每一行对应一个元组; • 表的每一列对应一个域,每个域起一个名字——称为属性;

  5. 2.1 关系数据库的基本概念 Family MAN WOMAN CHILD 王强 赵红 王一 李东 吴芳 李一 李东 吴芳 李二 例:设 D1=男人集合(MAN) = { 王强、李东、张兵} D2 =女人集合(WOMAN) = { 赵红、吴芳} D3=儿童集合(CHILD) = { 王一、李一、李二} (1)求上面三个集合的笛卡儿积 (2)构造一个家庭关系,可表示为: FAMILY(MAN,WOMAN,CHILD)

  6. (4)关系中常用术语 候选码 主码 外码 全码 2.1 关系数据库的基本概念 候选码(candidate key) 值能唯一标识一个元组的属性组,且不含多余属性, 称该属性组为候选码。 主码(primary key) 一个关系有多个候选码时, 选定其中的一个作为主码。 外码(foreign key) 关系R的某一属性组X不是R的码,但是是是其它某一关系的码,称X为R的外码。 全码(all key) 若关系R整个属性的集合是R的候选码,则该候选码为全码。

  7. S(Sno, Cardno, Dno, Sname, Sage, …) D(Dno, Dname, Location) 2.1 关系数据库的基本概念 候选码 Sno Cno Grade 9801 95 01 80 9801 02 9802 88 01 9802 92 03 9803 80 02 …… 外码 参照关系 主码 主码 被参照关系 PUR(Cno,Pno,Sno) 全码

  8. (5)关系的性质 ① 每列的值为同一类型。 ② 每列具有不同的属性名(可同域) ③ 任意两元组不能完全相同。 ④ 行的次序可以互换。 ⑤ 列的次序可以互换。 ⑥ 分量值是原子的。 2.1 关系数据库的基本概念 属性名 分量值 学号 姓名 年龄 元组 • 关系的类型 : • 基本关系(基表) • 查询表 • 视图表 不允许 、网虫 +5

  9. 2、关系模式与关系数据库 定义2.4: 关系的描述称关系模式,其表示为:R(U,D,Dom,F) 关系模式可简记为关系的属性名表。 R(U)=R(A1 ,A2,A3,….An) 例:学生(学号,姓名,总成绩) 2.1 关系数据库的基本概念 属性间的依赖关系集 域名集 属性名集 属性向域的映像集 • 关系模式就是关系的框架(表框架) • 它是对关系结构的描述

  10. 2.1 关系数据库的基本概念 • 在关系模型中,实体以及实体间的联系都是用关系来表示。在一个给定的现实世界领域中,相应于所有实体及实体之间的联系的关系的集合构成一个关系数据库。 • 关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述,是关系模式的集合。关系数据库的值也称为关系数据库,是关系的集合。关系数据库模式与关系数据库通常统称为关系数据库。 • 关系数据库

  11. 2.2 关系模型及其描述 1.关系模型的特点及组成 关系模型的特点: • 结构简单,表达力强 • 语言的一体化 • 非过程化的操作 • 坚实的数学基础 • 操作效率较低 关系模型的组成: • 关系数据结构 • 关系数据操作 • 关系完整性约束 2. 关系模型的数据操作 (1)数据查询 (2)数据插入 (3)数据删除 (4)数据修改

  12. 3.关系的完整性 三类完整性约束: 实体完整性 参照完整性 用户定义的完整性 说明: ① 实体完整性规则是对基本关系的约束和限定。 ② 实体具有唯一性标识—主码。 ③ 主码属性不能取空值。 2.2 关系模型及其描述 不变性 由关系系统自动支持 数据完整性控制过程? 是应用领域需要遵循的约束条件 (1)实体完整性 • 规则2.1实体完整性规则 : • 若属性A是基本关系R的主码属性,则属性A不能取空值。

  13. (2)参照完整性 引用关系: 关系中的某属性的值需要参照另一关系的属性来取值。 例1:学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名) 例2: 学生(学号,姓名,性别,专业号,年龄,班长) 2.2 关系模型及其描述 引用 引用

  14. 定义2.5 : 设:基本关系R、S(可为同一关系)。 若F是R的一个(组)属性,但不是R的码。 如果F与S的主码 K相对应,则称F是R的外码。 并称R为参照关系,S为被参照关系(目标关系)。 说明:S的主码K和R的外码F必须定义在同一个(或一组)域上。 例1:学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名) 2.2 关系模型及其描述 引用 外码 参照关系 被参照关系 • 参照完整性规则定义了外码与主码之间的引用规则。

  15. 规则2.2参照完整性规则 若属性(组) F是R的外码它与S的主码K相对应,则对于R中每个元组在F上的值必须为: 或者取空值(F的每个属性值均为空值); 或者等于S中某个元组的主码值。 例1:学生(学号,姓名,性别,专业号,年龄) 关系中每个元组的专业号取值: ① 空值(未给该学生分配专业); ② 非空值(是专业关系中某个元组的专业号值)。 2.2 关系模型及其描述

  16. 2.2 关系模型及其描述 例2:职工EMP(EMP#,ENAME,JOB,DEPT#) 部门DEPT(DEPT#,DNAME,LOC) 则:EMP中的DEPT#为空或为DEPT中的DEPT#的值 (3)用户定义的完整性 用户自定义完整性是针对某一具体数据的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用环境决定。 例: 属性的取值范围 属性的非空限制

  17. 2.3 关系代数 • 关系数据语言的分类 (1)关系代数语言 用对关系的运算来表达查询要求方式的语言。 (2)关系演算语言 用谓词来表达查询要求方式的语言。 ①元组关系演算语言 ②域关系演算语言 (3)结构化查询语言 (SQL)

  18. 2.3 关系代数 关系代数 用关系运算来表达查询,以ISBL为代表 关系演算:元组演算、域演算 元组演算 用谓词公式来表达查询元组演算(以行为变量),以ALPHA为代表 域演算 域演算(以列为变量),以QBE为代表 关系数据库标准语言SQL 具有关系代数和关系演算双重特点

  19. 2.3 关系代数 关系查询语言 关系代数语言:查询操作是以集合操作作为基础的语言 关系演算语言:查询操作是以谓词演算作为基础的语言 • 关系查询语言是一种比Pascal、C等程序设计语言更高级的语言。 • Pascal、C、关系代数语言属于过程性语言,在编程时必须给出获得结果的操作步骤。 • 而关系演算语言属于非过程性语言,编程时只需要指出需要什么信息,不必给出具体的操作步骤。 干什么? 怎么干? 干什么?

  20. 2.3 关系代数 S R 1.集合运算 关系代数是一种抽象的查询语言。它以关系为运算对象, 通过对关系进行“组合”或“分割”,得到所需的数据集合—关系。 • 分类: 集合运算(并、交、差;广义笛卡尔积) 关系运算 (投影、选择、连接和除运算) 设:t 为元组变量;R、S为同类关系(同元、相应属性同域); • 下列运算结果为同类关系: (1)并运算: RUS ={t |(t∈R)∨(t ∈ S)} (2)差运算: R-S={t |(t∈R)∧(t  S)} (3)交运算: R∩S={t |(t∈R)∧(t ∈ S)}

  21. 2.3 关系代数 R R 2 1 R R ∪ A A A 1 2 A A A 1 2 3 1 2 3 b 2 d A A A b 3 b a 3 c 1 2 3 c 2 d d b 2 b 2 d d 3 b c 2 d b 3 b e 5 f c 2 d g 6 f d 3 b R R - a 3 c 1 2 R ∩ R e 5 f 1 2 A A A 1 2 3 g 6 f A A A b 3 b 1 2 3 b 2 d d 3 b c 2 d • 关系运算示例

  22. 2.3 关系代数 R S A A A 1 2 3 A A 2 3 b 2 d 2 d b 3 b 3 b c 2 d d 3 b (4)广义笛卡尔积: R、S可为不同类关系,则结果为不同类关系: R×S={tr ts|(tr∈R)∧(ts ∈ S)} n目关系 连接为 m+n目关系 m目关系

  23. 2.3 关系代数 R S × A A A A A R R . . . . . R S S 1 2 3 2 3 b 2 d 2 d b 2 d 3 b b 3 b 2 d b 3 b 3 b c 2 d 2 d c 2 d 3 b d 3 b 2 d d 3 b 3 b • 元组的前n列是关系R的一个元组 • 后m列是关系S的一个元组

  24. 记号 设t为R的元组变量,设:R(A1,A2,…An) = R(U) t[Ai] (Ai为属性): R在属性集Ai上的所有值。 t[A] (A为属性集),R在属性集A上的所有值。 例:t[学号 ]--R中学号上的值 t [学号,姓名] 2.3 关系代数 学号 姓名 年龄 t

  25. 2.专门的关系运算 (1)选择 是行上的选择,产生同类关系。 σF(R)={t|(t∈R)∧F( t )=true}} 含义:由R中满足F条件的元组组成。 其中:F由属性名(值)、比较符、逻辑运算符组成。 例: σA2>5∨A3 ≠“f”(R) 或: 选择运算是从行的角度进行的运算 R 2.3 关系代数 A A A 1 2 3 a 3 f d b 2 c 2 d e 6 f g 6 f σ σ[2]>5 (R) σ [3] “f” (R) ∨ ≠ [2]>5 [3] “f” ∨ ≠ A A A 1 2 3 b 2 d c 2 d e 6 f g 6 f √ √ √ √

  26. R 2.3 关系代数 A A A Π (R) 1 2 3 A A 3, 2 a 3 f d A A b 2 2 3 c 2 d f 3 d 2 e 6 f g 6 f f 6 (2)投影运算 是列上的选择,产生不同类关系。 ΠA(R)={t[A] |(t∈R) } • 含义:R中取属性名表A中指定 的列,消除重复元组。 例: ΠA3,A2(R)

  27. 2.3 关系代数 π Sno Cno Grade SC表 9801 95 1 90 9801 2 9802 88 1 9802 2 92 3 9803 80 2 …… • 投影操作主要是从列的角度进行运算 • 用关系代数表示查询: 例:查选2号课程的学生记录。 例: 成绩在90分以上的学生号。 √ 解: σCno=‘2’(SC) √ 解: ΠSno(σGrade≥90(SC))

  28. 2.3 关系代数 ① ② (3)连接运算: ① 一般连接 它从两个关系的笛卡尔积中选取属性间满足一定条件的元组。 R ⋈S={tr ts|(tr∈R)∧(ts∈S)∧tr[A]θts[B]} A θ B 比较运算符 含义: • 从R X S中选取R关系在A属性组上的值与S关系在B属性组上值满足θ关系的元组。

  29. 2.3 关系代数 R AθB S A=B tr ts p73例 ② 等值连接:θ为“=”的连接。 • 什么是等值连接 • θ为“=”的连接运算称为等值连接 • 等值连接的含义 • 从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为: R S = { | trR∧ts S∧tr[A] = ts[B] }

  30. 2.3 关系代数 ③自然连接 设R、S有同名属性 Bi ( i=1,2….k) R∞S= {tr ts|(tr∈R)∧(ts∈S)∧tr[B]= ts[B]} • 其中B是R和S的公共属性,并且在形成的新关系中要去掉重复的属性。 p74例

  31. B A E B C 2.3 关系代数——连接举例 a1 b1 5 b1 3 b2 7 a1 b2 6 b3 10 a2 b3 8 b3 2 a2 b4 12 b5 2 S R

  32. A R.B C S.B E 2.3 关系代数——连接举例 a1 b1 5 b2 7 C<E a1 b1 5 b3 10 a1 b2 6 b2 7 a1 b2 6 b3 10 a2 b3 8 b3 10 R S

  33. A R.B C S.B E 2.3 关系代数——连接举例 a1 b1 5 b1 3 a1 b2 6 b2 7 R.B=S.B a2 b3 8 b3 10 a2 b3 8 b3 2 等值连接 R S

  34. A B C E 2.3 关系代数——连接举例 a1 b1 5 3 a1 b2 6 7 a2 b3 8 10 a2 b3 8 2 自然连接 R S

  35. 2.3 关系代数——连接举例 • 等值连接与自然连接的区别: (1)自然连接一定是等值连接,但等值连接不一定是自然连接。因为自然连接要求相等的分量必须是公共属性,而等值连接相等的分量不一定是公共属性。 (2)等值连接不把重复的属性去掉,而自然连接要把重复属性去掉。 注意 若R、S无公共属性,R S=?

  36. 2.3 关系代数 (4)除运算 • 象集(Image Set) • 关系R(X , Z), X, Z是属性组,x是X上的取值,定义x在R中的象集为 Zx={t[Z]|tRt[X]=x} 从R中选出在X上取值为x的元组,去掉X上的分量,只留Z上的分量 X Z Zx 张军同学所选修的全部课程 x=张军

  37. 2.3 关系代数 如何得到选修了全部课程的学生? 做法:逐个考虑选课关系SC中的元组r,求r在姓名SN上的分量x,再求x在选课关系中的象集课程Cx,若Cx包含了所有的课程C,则x是满足条件的一个元组 除运算 x同学所选修 的全部课程 选修全部课 程的学生 全部课程 { x | x=r[SN]  rSC CxC } 除定义R(X,Y)  S(Y) = {tr[x] |trRY(S)Yx} 其中Yx为x在R中的象集,x=tr[x]

  38. 2.3 关系代数 姓名 姓名 课程 课程 张军 张军 物理 物理 姓名  = 王红 王红 数学 数学 张军 张军 张军 数学 数学 王红 王红 王红 物理 物理 姓名 =  王红 姓名 课程 张军 物理 课程 王红 数学 姓名 姓名 姓名 = 数学  张军 数学 王红 张军 王红 物理 张军 所有学生选修全部课程 没有选修全部课程的学生 选修了全部课程的学生

  39. 2.3 关系代数 • 示例 • 求同时选修了001和002号课程的学生号 方案1: ∏S#,C#(SC)  C# = 001C# = 002 (C) 方案2: ∏S#(SC  C# = 001C# = 002 (C)) 哪一个正确?

  40. 2.3 关系代数 S R AB (R)  CD (S) AB (R) AB (R)  CD (S)-R R  S= - =

  41. 学生-课程数据库: S(sno,sname,sex,age,dept) C(cno,cname, credit , pcno) SC(sno,cno,grade) 2.3 关系代数(综合举例) 目标 A 条件 F 来源 R

  42. 学 号 Sno 姓 名 Sname 性 别 sex 年 龄 age 所 在 系 dept 2.3 关系代数(综合举例) 95001 李勇 男 20 CS 95002 刘晨 女 19 IS 95003 王敏 女 18 MA 95004 张立 男 19 IS Student

  43. 课程号 课程名 先行课 学分 2.3 关系代数(综合举例) Cno Cname pcno credit 1 数据库 5 4 2 数学 2 3 信息系统 1 4 4 操作系统 6 3 5 数据结构 7 4 6 数据处理 2 7 PASCAL语言 6 4 Course

  44. 学 号 课 程 号 成 绩 2.3 关系代数(综合举例) Sno Cno Grade 95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002 3 80 SC

  45. 2.3 关系代数(综合举例) • 例1:查不选002号课程的学生姓名与年龄。 Cno≠’002’ ? Πsname,age(S)- Πsname,age(S ∞σcno=‘002’(SC)) • 例2:查询至少选修了两门课程的学生学号。 Πsno(σ[1]=[4]∧[2]≠[5](SC×SC))

  46. 2.3 关系代数(综合举例) ① ② 目标A1、A2 例3:查所选课程包含了学生210101所选全部课程的学生号和姓名。 Πsno,sname(S) ∞ (Πsno,cno(SC) ÷ Πcno(σsno=210101 (SC))) 例4:查询选修了全部课程的学生学号与姓名。 Πsno,sname(S) ∞ (Πsno,cno(SC) ÷ Πcno ( (C)))

  47. Sno Sname sex age dept 2.3 关系代数(综合举例) 95002 刘晨 女 19 IS 95004 张立 男 19 IS [例5]查询信息系(IS系)全体学生 σdept= 'IS' (Student) 或 σ5 ='IS' (Student) 结果:

  48. Sno Sname sex age dept 2.3 关系代数(综合举例) 95002 刘晨 女 19 IS 95003 王敏 女 18 MA 95004 张立 男 19 IS [例6]查询年龄小于20岁的学生 σage < 20(Student) 或 σ4 < 20(Student) 结果:

  49. Sname dept 2.3 关系代数(综合举例) 李勇 CS 刘晨 IS 王敏 MA 张立 IS • [例7]查询学生的姓名和所在系 • 即求Student关系上学生姓名和所在系两个属性上的投影 • πSname,dept(Student) • 或 π2,5(Student) • 结果:

  50. 2.3 关系代数(综合举例) 以学生-课程数据库为例 (P.59) [例8]查询至少选修1号课程和3号课程的学生号码  首先建立一个临时关系K: 然后求:πSno.Cno(SC)÷K

More Related