490 likes | 616 Views
第 2 章 关系数据库. 2.1 关系数据库概述 2.2 关系数据结构 2.3 关系的完整性 2.4 关系代数 2.5 关系数据库管理系统. 关系数据库的主流地位. 应用数学方法来处理数据库数据 关系模型的提出 70 年代 E.F.Codd ( 81 年 ACM 图灵奖) 关系数据库是目前最重要、最流行的数据库 Oracle, DB2 ,SQL Server, Sybase, Infomix , Ingres, Access, FoxPro,FoxBASE, MySQL …. 2.1 关系数据库概述.
E N D
第 2 章 关系数据库 2.1关系数据库概述 2.2关系数据结构 2.3 关系的完整性 2.4 关系代数 2.5 关系数据库管理系统
关系数据库的主流地位 • 应用数学方法来处理数据库数据 • 关系模型的提出 70年代E.F.Codd (81年ACM图灵奖) • 关系数据库是目前最重要、最流行的数据库 Oracle, DB2 ,SQL Server, Sybase, Infomix , Ingres, Access, FoxPro,FoxBASE, MySQL…
2.1 关系数据库概述 • 关系数据库系统是支持关系模型的数据库系统 • 关系模型的三个组成部分: • 关系数据结构 • 关系操作集合 • 完整性约束
1.单一的数据结构-表 • “二维表” 2.关系操作 • 集合操作方式 set-at-a-time vs. record-at-time • 常用的关系操作: • 查询(选择、投影、连接、除、并、交、差) • 增加、删除、修改操作。
表达能力完全等价 • 关系语言是一种高度非过程化的语言 关系代数语言 元组关系演算语言 关系数据语言 关系演算语言 域关系演算语言 具有关系代数和关系演算双重特点的语言(如SQL)
由关系系统自动支持 3.完整性约束 • 实体完整性 • 参照完整性 • 用户定义的完整性
2.2 关系数据结构 1. 关系 1) 域(Domain) 定义2.1: 域是一组具有相同数据类型的值的集合。 例如,自然数、整数、实数、长度小于25字节的字符串集合、大于等于0且小于等于100的正整数等
2) 笛卡尔积(cartesian product) • 定义2.2:给定一组域D1, D2 ,… Dn,这些域中可以有相同的。D1, D2 ,…,Dn的笛卡尔积为: • D1×D2 ×… ×Dn={(d1,d2 ,… ,dn)| di Di,i=1,…,n} • 其中, (d1,d2 ,… ,dn)称为一个n元组(n-tuple)或元组 , di称为一个分量(component)。 • D1×D2 ×… ×Dn的基数
例如给出三个域: D1=导师集合 SUPERVISOR={张清玫,刘逸} D2 =专业集合 SPECIALITY={计算机专业,信息专业} D3=研究生集合POSTGRADUATE={李勇,刘晨,王名} 则D1 ,D2 , D3的笛卡尔积为 D1 ×D2 ×D3 = { (张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨), (张清玫,计算机专业,王名),(张清玫,信息专业,李勇),(张清玫,信息专业,刘晨),(张清玫,信息专业,王名), (刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),(刘逸,信息专业,刘晨),(刘逸,信息专业,王名)} 这对应一张二维表,表的行数
3) 关系(relation) 定义2.3: D1×D2 ×… ×Dn的子集称为在域D1,D2 ,… ,Dn的关系,用R(D1,D2,…,Dn )表示。 这里R表示关系的名字,n是关系的目或度(Degree)。当n=1时,称为单元关系;n =2时,称为二元关系。 • 关系也是一个二维表 • 表的每行对应一个元组,表的每列对应一个域。 • 为区别来自相同域的不同列,引入属性(attribute)
几个概念: • 候选码,主码,主属性,非码属性,全码 • 关系的三种类型: • 基本关系(称为基本表或基表) • 查询表 • 视图表
基本关系的性质: • 列是同质的 • 不同的列可出自同一域,要给予不同的属性名 • 列的顺序无所谓 • 无相同元组 • 行的顺序无所谓 • 分量必须取原子值,即分量不可再分 • 第一范式(1NF,1 normal form)
这是一张具体的表,即关系是“值” ! • 如何描述这张表的“型”呢?
2. 关系模式 • 关系模式是对关系的描述 • 要描述二维表(关系)的结构,要回答以下一些问题: • 它由哪些属性构成? • 这些属性来自哪些域? • 属性与域之间的映象关系? • 同时,现实世界的许多已有事实限定了关系模式所有可能的关系必须满足一定的完整性约束条件。关系模式应当刻划出这些完整性约束条件。 • 如 “Sage<30”,“所在系是存在的”
定义2.4关系的描述称为关系模式(Relation schema)。它可以形式化地表示为: R(U,D,DOM,F) 其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,DOM为属性向域的映象集合,F为属性间数据的依赖关系集合。 可简记为R(A1,A2,…,An) 例:学生(学号,姓名,性别,年龄,所在系) Student(Sno,Sname,Ssex,Sage,Sdept)
关系模式 学生(学号,姓名,性别,年龄,所在系)的一个“值”
3.关系数据库 • 在关系模型中,实体以及实体间的联系都是用关系来表示的。 • 在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库。 • 关系数据库的型和值 • 关系数据库的型(也称为关系数据库模式) • 包括域的定义以及这些域上定义的若干关系模式的集合 • 关系数据库的值 关系模式集合在某一时刻对应的关系的集合
2.3 关系的完整性 1.实体完整性(entity integrity) 实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。 例如:选修(学号,课程号,成绩)中的学号和课程号
学号 课程号 选修关系 课程关系 学生关系 专业号 专业关系 2.参照完整性(referential integrity) 例: 选修(学号,课程号,成绩)中的学号值应该“有效”,即要是学生(学号,姓名,性别,专业号,年龄)中确实存在的一个学号值!对课程号也有同样的约束条件。
定义: • 设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码ks相对应,则称F是基本关系R的外码(foreign key),并称基本关系R为参照关系(Referencing Relation),基本关系S为被参照关系(Referenced Relation)或目标关系(Target Relation)。 • 关系R和S不一定是不同的关系。 • 如:学生2(学号,姓名,性别,专业号,年龄,班长)中的班长也为外码,被参照关系为学生2本身。
参照完整性规则:若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),参照完整性规则:若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系), 则对于R中每个元组在F上的值必须为: .或者取空值(F的每个属性值均为空值): .或者等于S中某个元组的主码值
3.用户定义的完整性(user-defined integrity) • 不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。 • 例如某个属性必须取唯一值、某些属性值之间应满足一定的函数关系、某个属性的取值范围在0~100之间等。 • 关系模型应提供定义和检验这类完整性的机制,以使用统一的系统的方法处理它们,而不要由应用程序承担这一功能。
2.4 关系代数(Relational Algebra) • 关系代数用对关系的运算来表达查询。 • 按运算符的不同,分为两类: 1.传统的集合运算(交、并、差、广义笛卡儿积) 2.专门的关系运算(选择、投影、连接、除)
( trts (m+n)元组trts n元组tr m元组ts • 几个记号 • t[Ai]元组t中相应于属性Ai的一个分量 • t[A]元组t在属性列A上诸分量的集合 • 元组tr和ts的连接 • Zx 当t[X]=x时,x在R中的象集(images set) • Zx ={t[Z]|tR,t[X]=x})
R S R S 2.4.1 传统的集合运算 • 传统的集合运算是二元运算,包括并、差、交、广义笛卡尔积四种运算。 设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则可以定义并、差、交运算如下: 1.并(Union) RU S={ t | t R V t S ) RU S 2.差(Difference) R- S={ t | t R t S ) R-S
( trts R S 3.交(Intersection) R S={ t | t R t S ) 4.广义笛卡儿积(extended Cartesian product) R×S={ | tr R ts S )
A B 1 2 1 3 并操作示例 Relations R, S: A B A B 1 2 1 2 3 S R R S:
A B 1 1 差操作示例 Relations R, S: A B A B 1 2 1 2 3 S R R – S:
A B C D E 1 1 1 1 2 2 2 2 10 19 20 10 10 10 20 10 a a b b a a b b 笛卡尔积操作示例 A B C D E Relations R, S: 1 2 10 10 20 10 a a b b R S R xS:
2.4.2 专门的关系运算 1.选择(selection) F(R) = { t | t R F(t)= “真”} 其中F表示选择条件,它是一个逻辑表达式 X1 Y1 [ X2 Y1 ] 为比较运算符( =, , >, . <. ) 为逻辑运算符 (and), (or), (not) 选择运算是从关系R中选取使F为真的元组 -- 从行的角度进行的运算
A B C D 1 23 7 10 选择操作示例 A B C D Relation R 1 5 12 23 7 7 3 10 A=B ^ D > 5 (R)
关系Student 例1:查询信息系(IS系)全体学生 Sdept=‘IS’(Student)或5=‘IS’(Student) 例2:查询信息系的名叫王名的学生 Sname=‘王名’ Sdept=‘IS’(Student)
2.投影(projection) A(R) = { t [A]| t R } 其中A为R中的属性列(设有K列) • 结果是包含K个列的关系,其它的列被删除了。 • 由于关系是集合,故结果中消除了重复的行。
A C A C 1 1 1 2 1 1 2 投影操作示例 Relation R A B C 10 20 30 40 1 1 1 2 A,C (R) =
R S ( trts 3.连接(join) R S= { | tr R ts S tr [A] ts [B] } A B 其中A和B分别为R和S上度数相等且可比的属性组。 是比较运算符。连接运算从A和B的广义笛卡尔积A×B中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系的元组。 • 两种重要而常用的连接运算 : • 等值连接(equi-join): 为“=” • 自然连接(natural join) :一种特殊的等值连接,要求 1.A和B相同2.结果中除去重复属性
R S A B C D E 1 1 1 1 2 a a a a b 自然连接操作示例 • Relations R, S: B D E A B C D 1 3 1 2 3 a a a b b 1 2 4 1 2 a a b a b R S
4.除(division) • 给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。RS是R中满足下列条件的元组在X属性上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。记作: 说明: Yx={y|tr∈R∧y=tr[Y]∧x=tr[X]}。Yx为x在R中的象集x=tr[X](即Yx为属性X取值x)时,相应的Y值的集合。当中首次出现了关于集合的比较。
A 除法操作示例 A B Relations R, S: B 1 2 3 1 1 1 3 4 6 1 2 1 2 S R S: R
Cno 1 3 综合举例 例1.查询至少选修1号课程和3号课程的学生号码。 Sno,Cno(SC) K 临时关系K 例2.查询选修了2号课程的学生的学号。 Sno (Cno=‘2’(SC))
) Sname ( 例3. 查询至少选修了一门其直接先行课为6号课程的学生姓名。 Cpno=‘6’(Course) SC Sno,Sname ( ) Student 例4.查询选修了全部课程的学生号码和姓名。 Sno,Cno ( ) Cno (Course ) Sno,Sname (Student ) SC
2.5 关系数据库管理系统 (Relational DBMS) • 一个DBMS可定义为关系系统,当且仅当它至少支持: • 关系数据库(即关系数据结构) • 支持选择、投影和(自然)连接操作,且不要求用户 定义任何物理存取路径。
关系系统的分类 • 依据支持关系模型的程度不同,可分为四类: • 体系结构上都符合三级模式结构,提供两级映象功能。
R S = F(R×S) F 课堂练习 • 关系代数的五种基本运算: 并、差、笛卡儿积、选择、投影 问题: 试用以上五种基本运算表示交、连接和除法。 R S =(RUS)-((R-S) U(S-R)) R S =Y(R) - Y (S×(Y (R) )-R)
作 业 14 • 作业: 习题7中的关系代数操作部分 (教材page 64)