780 likes | 911 Views
数据库系统概论. 关系数据库. 概述. 关系数据库系统是支持关系模型的数据库系统。 关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。 关系操作的特点是集合操作方式,关系数据语言分为三类: 关系代数语言:如 ISBL 关系演算语言:分为元组关系演算语言(如 Aplha , Quel )和域关系演算语言(如 QBE ) 具有关系代数和关系演算双重特点的语言:如 SQL. 关系数据结构及形式化定义 (1). 关系中几个基本概念 域:一组具有相同数据类型的值的集合。值的个数称为域的基数。用 D 来表示。
E N D
数据库系统概论 关系数据库 数据科系统概论—关系数据库
概述 • 关系数据库系统是支持关系模型的数据库系统。 • 关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。 • 关系操作的特点是集合操作方式,关系数据语言分为三类: • 关系代数语言:如ISBL • 关系演算语言:分为元组关系演算语言(如Aplha,Quel)和域关系演算语言(如QBE) • 具有关系代数和关系演算双重特点的语言:如SQL 数据科系统概论—关系数据库
关系数据结构及形式化定义(1) • 关系中几个基本概念 • 域:一组具有相同数据类型的值的集合。值的个数称为域的基数。用D来表示。 • 笛卡尔积:给定一组域D1 ,D2, …,Dn,笛卡尔积D1×D2×…×Dn={(d1,d2, …,dn)|di∈Di,i=1,2, …,n} • 其中每一个元素 (d1,d2, …,dn) 叫一个n元组,简称元组 • 元组中的每个值di叫作一个分量。 数据科系统概论—关系数据库
关系数据结构及形式化定义(2) • 例: D1=男人集合MAN={王兵,李平,张英} D2=女人集合WOMAN={丁梅,李芳} D3=儿童集合CHILD={王一,李一,李二} D1×D2×D3 ={(王兵,丁梅,王一),(王兵,丁梅,李一),(王兵,丁梅,李二),…} 18组 • 若Di(i=1,2, …,n)为有限集,其基数为mi(i=1,2, …,n),则D1×D2×…×Dn的基数M为: n M= ∏ mi i=1 数据科系统概论—关系数据库
关系数据结构及形式化定义(3) • 关系: D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的关系, 表示为 R(D1,D2,…,Dn),R为关系名,n是关系的目或度。n=1:单元关系;n=2:二元关系。 n目关系必有n个属性。 关系 FAMILY(MAN,WOMAN,CHILD) 数据科系统概论—关系数据库
关系数据结构及形式化定义(4) • 注:构造关系时,不同属性可来自同一个域。如: 成人PERSON={王兵,李平,张英,丁梅,李芳} CHLID={王一,李一,李二} 这样就需要在模式中给以映象,说明这个属性来自某一域,如: Dom(MAN)= Dom(WOMAN)=PERSON 数据科系统概论—关系数据库
关系数据结构及形式化定义(5) • 候选码(键)(Candidate key):关系中的某一属性组能唯一的标识一个元组,则该属性组为候选码。 • 主码(键)(Primary key):若一关系有多个候选码则选其中一个为主码。 • 主属性:主码的诸属性称为主属性。 • 非码属性:不包含在任何候选码中的属性。 STUDENT(姓名,学号,性别,出生年份,籍贯,系别,入学年份) • 全码:关系模式所有属性组是该关系模式的候选码 SUPPLY(供应商,零件名,项目名) 数据科系统概论—关系数据库
关系数据结构及形式化定义(6) • 关系的三种类型 • 基本关系(基本表或基表):是实际存在的表,是实际存储数据的逻辑表示 • 查询表:是查询结果对应的表 • 视图表:是由基本表或其他视图表导出的表,是虚表 数据科系统概论—关系数据库
关系数据结构及形式化定义(7) • 关系的性质 • 列是同质的 • 不同的列可出自同一个域 • 列的顺序无所谓 • 任意两个元组不能完全相同 • 行的顺序无所谓 • 每一个分量都必须是不可分的数据项 数据科系统概论—关系数据库
关系数据结构及形式化定义(8) • 关系模式:关系的描述称为关系模式,形式化的表示为:R(U, D, dom, F) 简记为R(U)或R(A1, A2, …, An) • 例:定义学生与课程关系模式及主码如下: • S(Sno, Sname, SD, SA) Key(Sno) • C(Cno, Cname, Pcno) Key(Cno) dom(PCno)=Cno • SC(Sno, Cno, Grade) Key(Sno, Cno) 数据科系统概论—关系数据库
关系数据结构及形式化定义(9) • 关系数据库:用于描述系统的一组关系模式的总称。 • 型:对数据库的描述,包括若干域的定义及在这些域上定义 的若干关系模式。 • 值:这些关系模式在某一时刻对应的关系的集合。 数据科系统概论—关系数据库
关系的完整性—实体完整性 • 实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。 对该规则的说明: • 实体完整性规则是针对基本关系而言的。 • 现实世界中的实体是可区分的,即它们具有某中唯一性标识。 • 关系模型中以主码作为唯一性标识 • 主码中的属性即主属性不能取空值。空值就是“不知道”或“无意义”的值。 数据科系统概论—关系数据库
参照完整性(1) • 参照完整性约束是不同关系之间或同一关系的不同元组之间的约束。 • 外码:设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码KS相对应,则称F是基本关系R的外码。基本关系R为参照关系,基本关系S为被参照关系。 • S的主码KS和参照关系的外码F必须在同一个域上 • 基本关系S和R不一定是不同的关系 数据科系统概论—关系数据库
参照完整性(2) • 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码KS相对应,则R中的每个元组在F上的值必须为: • 或者为空值(F的每个属性值均为空值) • 或者等于S中某个元组的主码值。 数据科系统概论—关系数据库
参照完整性(3) • 学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名) • 学生(学号,姓名,性别,专业号,年龄) 课程(课程号,课程名,学分) 选修(学号,课程号,成绩) • 学生(学号,姓名,性别,专业号,年龄,班长学号) 数据科系统概论—关系数据库
用户定义的完整性 • 是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,也称为域完整性约束。 数据科系统概论—关系数据库
关系代数 • 关系代数是一种抽象的查询语言,是关系数据操纵语言的传统表达方式,是用对关系的运算来表达查询的。 • 运算的三要素:运算对象、运算符和运算结果 • 关系代数运算符包括:集合运算符、专门的关系运算符、比较运算符和逻辑运算符四类。 • 据运算符的不同,关系代数的运算可分为:传统的集合运算和专门的关系运算两类。 数据科系统概论—关系数据库
传统的集合运算—简介 • 传统的集合运算包括并、差、交、广义笛卡尔积四种运算。 • 特点: • 除乘积外,关系R和关系S具有相同的目n,且相应的属性取自同一个域,属性名可不同。 • 二目运算 。 • 是从关系的水平方向进行的运算。 数据科系统概论—关系数据库
传统的集合运算—并 • 并(∪): R∪S={t|t∈R∨t∈S},由属于R或属于S的元组组成,结果为n目关系 R S R∪S 数据科系统概论—关系数据库
传统的集合运算—差 • 差(-): R-S={t|t∈R∧t∈S},由属于R而不属于S的元组组成,结果为n目关系 R S R-S 数据科系统概论—关系数据库
传统的集合运算—交 • 交(∩): R∩S={t|t∈R∧t∈S},由既属于R又属于S的元组组成,结果为n目关系 R S R∩S 数据科系统概论—关系数据库
传统的集合运算—广义笛卡尔积 • 广义笛卡尔积(×):两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组,若R有k1个元组,S有k2个元组,则它们的广义笛卡尔积有k1×k2个元组。 R×S= {trts|tr∈R∧ts∈S} 数据科系统概论—关系数据库
广义笛卡尔积 R×S R S 数据科系统概论—关系数据库
专门的关系运算——几个记号 • 元组:设关系模式为R(A1,A2,…,An),它的一个关系设为R, t∈R表示t是R的一个元组, t[Ai]表示元组t中相对应于属性Ai的一个分量。 • 若A={Ai1,Ai2,…,Aik}, 其中Ai1,Ai2,…,Aik是 A1,A2,…,An中的一部分,则A称为属性列或域列。t[A] =(t[Ai1],t[Ai2],…, t[Aik])表示元组t在属性列A上诸分量的集合。A则表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余属性组。 数据科系统概论—关系数据库
专门的关系运算—几个记号 • R为n目关系, S为m目关系, tr∈R,ts∈S, trts称为元组的连接。它是一个n+m列的元组,前n个分量是R中的一个n元组,后m个分量是S中的一个m元组。 • 给定一个关系R(X,Z), X和Z为属性组。定义当t[X]=x时,x在R中的象集为: Zx={t[Z]|t∈R ,t[X]=x} 表示R中属性组X上值为x的诸元组在Z上的分量的集合。 数据科系统概论—关系数据库
专门的关系运算—选择 • 又称为限制,是在关系中选择满足条件的诸元组,记作:σF(R)={t|t∈R∧F(t)=‘真’},是从关系的水平方向进行运算。 • 例1 查询信息系全体学生 σSdept=‘IS’(Student) or σ5=‘IS’(Student) • 例2 查询年龄小于20的学生 σSage<20(Student) or σ4<20(Student) 数据科系统概论—关系数据库
专门的关系运算—投影 • 从关系R中选择出若干属性列组成新的关系。记作:πA(R)={t[A]| t∈R} 是从关系的垂直方向进行的运算。结果要取消重复的元组。 • 例1 查询学生的姓名和所在系 πSname,Sdept(Student) or π2,5(Student) • 例2 查询学生关系中所有的系 πSdept(Student) 数据科系统概论—关系数据库
专门的关系运算—连接 • 从两个关系的笛卡尔积中选取属性间满足一定条件的元组。记作: R AθB S={trts|tr∈R∧ts∈S∧ tr[A]θts[B]} • A和B分别为R,S上度数相等且可比的属性列 • θ为比较运算符 • 等值连接:θ取“=”的连接运算,是从广义笛卡尔积中选取A、B属性值相等的元组。 R A=B S={trts|tr∈R∧ts∈S∧ tr[A]=ts[B]} 数据科系统概论—关系数据库
专门的关系运算—连接 • 自然连接:特殊的等值连接。要求两关系中进行比较的分量具有相同的属性组,且在结果中去掉重复的属性列 。 记作: R S={trts|tr∈R∧ts∈S∧tr[B]=ts[B]} • 注:一般连接是从关系的水平方向运算,自然连接不仅从水平方向,且从垂直方向运算。 数据科系统概论—关系数据库
笛卡儿积、等值连接和自然连接三者之间的区别笛卡儿积、等值连接和自然连接三者之间的区别 • 设关系R的元数为r,元组个数为m;关系S的元数为s,元组个数为n, • 那么,R ×S的元数为r+s,元组个数为m ×n • R A=B S的元数也是r+s,但元组个数小于等于m ×n • R S的元数小于等于r+s,元组个数小于等于m ×n 数据科系统概论—关系数据库
专门的关系运算—除 • 给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。结果是满足下列条件的元组在X属性列上的投影:元组在X上的分量值x的象集YS包含S在Y上的投影的集合。 R÷S={tr[X]|tr∈R∧πy(S) Yx} • 除是同时从行和列的角度进行运算。 • 除的结果集的属性组为X。 数据科系统概论—关系数据库
R S R÷S a1的象集{(b1,c2),(b2,c3),(b2,c1)} a2的象集{(b3,c7),(b2,c3)} a3的象集{(b4,c6)} a4的象集{(b6,c6)} S在(B,C)上的投影为: {(b1,c2),(b2,c3),(b2,c1)} 数据科系统概论—关系数据库
专门的关系运算—综合应用 • 查询至少选修1号和3号课程的学生号码。 首先建立一临时关系K πSno,Cno(SC) ÷K • 查询选修了2号课程的学生的学号 πSno (σCno=‘2’ (SC)) 数据科系统概论—关系数据库
专门的关系运算—综合应用 • 查询至少选修一门直接先行课为5号的姓名 πSname (σCpno=‘5’(Course) SC πSno,Sname(Student)) • 查询选修了全部课程的学生号码和姓名 πSno,cno(SC)÷πcno(Course) πSno,Sname (Student)) 数据科系统概论—关系数据库
注意的几个问题 • 关系代数的五种基本操作为:并、差、笛卡尔积、投影和选择,其他操作都可由其导出。如 R∩S= R-(R-S) OR R∩S=S-(S-R) • 关系代数在使用的过程中对于只涉及选择、投影、连接的查询可用表达式: πA1, A2,… ,Ak(σF(S R) or πA1, A2,… ,Ak(σF(S×R) 数据科系统概论—关系数据库
注意的几个问题 • 对于否定操作,一般用差操作表示。不用: πSname (σCname≠ ‘操作系统’(S SC C))而用: πSname (S)-πSname (σCname= ‘操作系统’(S SC C)) • 对于检索具有全部特征的操作一般用除法。 不用:πSno,cno(SC÷πcno(C)) 而用:πSno,cno(SC)÷πcno(C) 数据科系统概论—关系数据库
2.3 关系演算 数据科系统概论—关系数据库
元组关系演算 • 形式化定义 { t | P(t)} 表示所有使谓词P为真的元组集合 • t为元组变量 • 如果元组变量前有“全称”()或“存在”()量词,则称其为约束变量,否则称为自由变量 • P是公式 • 由原子公式和运算符组成 数据科系统概论—关系数据库
元组关系演算 • 原子公式 • s∈R • s是关系R中的一个元组 • s[x] u[y] • s[x]与u[y]为元组分量,他们之间满足比较关系 • s[x] c • 分量s[x]与常量c之间满足比较关系 数据科系统概论—关系数据库
元组关系演算 • 公式的递归定义 • 原子公式是公式 • 如果P是公式,那么┑P也是公式 • 如果P1 , P2是公式,则P1P2 , P1 P2 , P1 P2也是公式 • 如果P(t)是公式,R是关系,则tR (P(t))和tR (P(t))也是公式 数据科系统概论—关系数据库
元组关系演算 • 公式的等价性 • P1P2 ┑(┑P1 ┑P2) • tR (P(t)) ┑t R (┑P(t)) • P1 P2 ┑P1 P2 数据科系统概论—关系数据库
元组关系演算 R S { t | t S t[A] >2} { t | t R ┑tS } 数据科系统概论—关系数据库
元组关系演算 { t | tS uR(t[C] < u[B])} { t | tR uS(t[C] < u[A])} { t | vS(uR(u[A]>v[B] t[A]=u[B] t[B]=v[C] t[C]=u[A]))} 数据科系统概论—关系数据库
元组关系演算 • 表达式的安全性 • 元组关系演算有可能会产生无限关系,这样的表达式是不安全的 如{t | ┑(t R)},求所有不在R中的元组 • 引入公式P的域概念,用dom(P)表示 dom(P) = 显式出现在P中的值 + 在P中出现的关系的元组中出现的值(不必是最小集) 如dom ( t | ┑(t R) )是R中出现的所有值的集合 • 如果出现在表达式{t | P(t)}结果中的所有值均来自dom(P),则称{t | P(t)}是安全的 数据科系统概论—关系数据库
元组关系演算 { t |┑(t R) } R dom(┑(t R)) = {{A1 , A2} , {B1 , B2 , B3}} 数据科系统概论—关系数据库
元组关系演算 • 示例 • 找出工资在800元以上的老师 {t | tPROF t[SAL] > 800} • 找出工资在800元以上的老师的姓名 {t | sPROF ( t[PNAME] s[PNAME] s[SAL] > 800 )} • 给出计算机系老师的姓名 {t | uDEPT ( u[DNAME] = “计算机系” sPROF ( s[DNO] = u[DNO] t[PNAME] s[PNAME] ))} 数据科系统概论—关系数据库
元组关系演算 • 求选修了全部课程的学生号 {t | uC ( sSC ( s[CNO] = u[CNO] t[SNO] s[SNO] ))} • 求选修了张军同学所选修的全部课程的学生姓名 课程,张军选之 所求同学选之 {t | uC ( sSC wS ( s[CNO] = u[CNO] w[SNO] s[SNO] w[SNAME] = “张军” )) 数据科系统概论—关系数据库
元组关系演算 • 元组关系演算与关系代数的等价性 • 投影 ∏A( R ) = { t | sR ( s[A] = t[A] ) } • 选择 F(A)(R) = { t | tR F(t[A]) } • 广义笛卡儿积 R(A) S(B) = { t | uRsS( t[A] = u[A] t[B] = s[B])} • 并 RS={ t | tR tS} • 交 RS={ t | tR ┑tS} 数据科系统概论—关系数据库
域关系演算 • 形式化定义 { < x1 , x2 , … , xn > | P( x1 , x2 , … , xn)} xi代表域变量,P为由原子构成的公式 • 原子公式 • < x1 , x2 , … , xn > R • xi是域变量或域常量 • x y • 域变量x与y之间满足比较关系 • x c • 域变量x与常量c之间满足比较关系 数据科系统概论—关系数据库