1 / 92

第三章 关系数据库

1. 3. 2. 第三章 关系数据库. 关系数据模型. 关系的完整性. 关系代数. 提出关系模型的是美国 IBM 公司的 E.F.Codd 1970 年提出关系数据模型 E.F.Codd, “ A Relational Model of Data for Large Shared Data Banks ”, 《Communication of the ACM》,1970 之后,提出了关系代数和关系演算的概念 1972 年提出了关系的第一、第二、第三范式 1974 年提出了关系的 BC 范式. (1) 域 (Domain): 一组具有相同数据类型的值的集合。.

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. 1 3 2 第三章 关系数据库 关系数据模型 关系的完整性 关系代数

  2. 提出关系模型的是美国IBM公司的E.F.Codd • 1970年提出关系数据模型 E.F.Codd, “A Relational Model of Data for Large Shared Data Banks”, 《Communication of the ACM》,1970 • 之后,提出了关系代数和关系演算的概念 • 1972年提出了关系的第一、第二、第三范式 • 1974年提出了关系的BC范式

  3. (1) 域(Domain):一组具有相同数据类型的值的集合。 3.1 关系数据模型 • 关系数据模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。 1 关系数据结构:二维表 • 整数 • 实数 • 介于某个取值范围的整数 • 长度指定长度的字符串集合 • {‘男’,‘女’} • ……………..

  4. 3.1.1 关系数据模型概述 (2)笛卡儿积(Cartesian Product) -给定一组域D1,D2,…,Dn,则其笛卡儿积为: D1D2…Dn={(d1, d2,…, dn)∣ di∈Di,i=1,2,…,n} • 若Di(i=1,2,…,n)为有限集,基数(元组个数)为mi个,则其笛卡儿积的基数为: 其中:每一元素(d1, d2,…, dn)为一个n元组(元组); 元素中的每一个值di为一个分量。

  5. 3.1.1 关系数据模型概述 例:域 姓名: D1={张金,王银,李玉}, 年龄: D2={20,21,22} 则笛卡尔积 D1D2 = {(张金,20), (张金,21), (张金,22), (王银,20), (王银,21), (王银,22), (李玉,20), (李玉,21), (李玉,22)}

  6. (3) 关系(Relation) - D1D2…Dn的子集叫做在域D1,D2,…,Dn上的关系,记:R(D1,D2,…,Dn) 关系是笛卡儿积的一个有限子集 3.1.1 关系数据模型概述 • 若n=1:称为单元关系(Unary relation) • 若n=2: 称为二元关系(Binary relation)

  7. 关系代数语言 元组关系演算语言 关系数据语言 关系演算语言 域关系演算语言 具有双重特点的语言:SQL 3.1.1 关系数据模型概述 2 关系操作:集合操作方式(一次一集合)

  8. 3.关系完整性约束: 实体完整性 参照完整性 用户定义的完整性 不变性 3.1.1 关系数据模型概述

  9. (1)关系(Relation):关系就是二维表,二维表名就是关系名。(1)关系(Relation):关系就是二维表,二维表名就是关系名。 (2)属性(Attribute):二维表中的列称为属性(字段);每个属性有一个名称,称为属性名;二维表中对应某一列的值称为属性值。 (3)值域(Domain):二维表中属性的取值范围称为值域,每一个属性都有一个取值范围,每一个属性对应一个值域,不同的属性可对应于同一值域。 (4)元组(Tuple):二维表中的行称为元组(记录值)。 (5)分量(Component):元组中的每一个属性值称为元组的一个分量,n元关系的每个元组有n个分量。 3.1.2 基本术语

  10. (6)关系模式(Relation Schema):二维表的结构称为关系模式,相当于文件结构或记录结构。设关系名为REL,其属性为A1,A2,…,An,则关系模式可以表示为 REL(A1,A2,…,An) 对每个Ai(i=1,…,n)还包括该属性到值域的映象,即属性的取值范围。 (7)关系模型(Relation Model):关系模型是所有的关系模式、属性名和主码的汇集,是模式描述的对象。 (8)关系数据库(Relation Database):对应于一个关系模型的所有关系的集合。 3.1.2 基本术语

  11. 3.1.2 基本术语 如: 教师(工号,姓名,性别,出生年月,身份证号,职称,家庭地址,系号) (9) 候选码:能唯一标识一个元组的某一属性组。 (10) 主码:候选码中的某一个。 (11) 主属性:包含在任一候选码的属性。 (12) 非主属性:不包含在任一候选码中的属性。 (13) 全码:该关系模式中所有属性组均为候选码。

  12. 码、超码、候选码、主码 概念的区别 码:能唯一标识实体的属性,它包括超码,候选码,主码 超码:唯一地标识一个实体的一个或多个属性的集合 如果K是超码,那么所有包含K的集合也是超码 学生(实体)具有多个属性:学号,身份证号,姓名,性别 {学号} 、{身份证号}是超码, 同理{学号,身份证号}、{学号,身份证号,姓名}、 {学号,身份证号,姓名,性别} 、 {身份证号,姓名、性别}也是超码 超码中含有多余的属性。所以我们需要候选码。 候选码:是最小超码,不带多余属性,可以有多个 主码:被数据库设计者选中的候选码 超码包括候选码,候选码包括主码

  13. 3.1.2 基本术语 (14)外键(Foreign key) 设F是基本关系R的一个或一组属性,不是R的主码,但是基本关系S的主码,则称F是R的外键。 R:为参照关系; S:为被参照关系或目标关系。 如:学生(学号,姓名,性别,出生年月,家庭地址,系号) 系(系号,系名)

  14. 主键 外键

  15. 注:不仅两个或两个以上关系间可以存在引用关系,同一关系内部属性间也可。注:不仅两个或两个以上关系间可以存在引用关系,同一关系内部属性间也可。

  16. 学号 姓名 性别 出生日期 所在系 0022102 王雪莲 女 1980-9-15 电子系 计算机系 白亚春 男 1981-1-25 0051309 0052201 陈韬 男 计算机系 1981-5-6 0052217 袁更旭 男 1980-12-8 计算机系 3.1.3 关系的性质 1.列是同质的。 2.关系中行的顺序、列的顺序可以任意互换,不会改变关系的意义。即行、列无序 不同质

  17. 学号 姓名 性别 出生日期 所在系 0022102 王雪莲 女 1980-9-15 电子系 0051309 白亚春 男 1981-1-25 计算机系 0051309 白亚春 男 1981-1-25 计算机系 0052217 袁更旭 男 1980-12-8 计算机系 3.1.3 关系的性质 3.关系中的任意两个元组不能相同。

  18. 3.1.3 关系的性质 4.关系中的元组分量具有原子性,即每一个分量都必须是不可分的数据项。 不具有原子性

  19. 5.不同的列可出自同一个域 其中的每一列称为一个属性。 同一关系中:不同的属性要给予不同的属性名。 如: EMPLOYEE(SSN,NAME,BDATE,SEX,ADDRESS, SALARY,SUPERSSN,DNO) 或: EMPLOYEE(雇员工号、雇员姓名、出生日期、性别、家庭住址、工资、经理工号、部门号) 3.1.3 关系的性质 域相同

  20. 一. 实体完整性(Entity Integrity) 规则:若属性A是基本关系R的主属性,则属性A不能取空值。 3.2 关系的完整性 例:选修(学号,课程号,成绩) 注意: (1)该规则针对基本关系; (2)基本关系中所有主属性都不能取空值; (3)空值即为“不知道”或“无意义”的值。 意义:关系对应现实世界中的实体集,元组对应实体,实体是相互可区分的,通过主码来唯一标识,若主码为空,则出现不可标识的实体,这是不容许的。

  21. 例:选修(学号,课程号,成绩) 可以为空 不能为空 不能为空

  22. 二.参照完整性(Referential Integrity) 定义实体与实体之间的联系。 3.2 关系的完整性 例: 学生(学号,姓名,性别,专业号,年龄,班长) 专业(专业号,专业名) 课程(课程号,课程名,学分) 选课(学号,课程号,成绩) 注意:不仅两个或两个以上的关系间可以存在引用关系,同一关系内部属性间也可能存在引用关系。

  23. 规则:若属性F是基本关系R的外码,它与基本关系S的主码Ks相对应,则对于R中每个元组在F上的取值必须为:规则:若属性F是基本关系R的外码,它与基本关系S的主码Ks相对应,则对于R中每个元组在F上的取值必须为: (1)或取空值(F的每个属性均为空); (2)或等于S中某个元组的主码值。 3.2 关系的完整性

  24. 例如关系S在系号上的取值有两种可能: 姓名 性别 学号 专业号 关系DEPT S256 S257 S258 王丹 章华 李力 男 女 男 D23 null D30 专业名 专业号 负责人 D23 D25 D30 物理 机械 计算机 王娟 杨华 张天 关系S 3.2 关系的完整性 系号是关系模式DEPT的主码,也是关系模式S的外码,那么在S的关系中,系号的取值只允许有两种可能,或者为空值,或者等于DEPT关系中某个主码值。 参照关系 被参照关系

  25. 3.2 关系的完整性 注: ✾同一关系内部属性间也可以存在引用关系,外码与所参照的属性必须定义在同一个(或一组)域上。

  26. ✾外码与相应的主码名可以取不同的名字

  27. 三.用户定义的完整性(User-defined Integrity) 针对某个具体数据库的约束条件,由应用环境决定,它反映某一具体应用所涉及的数据必须满足的语义要求。 如:grade在0-100之间 sno的编号规则 ssex只能取‘男’或‘女’

  28. 例: 课程(课程号,课程名,学分) • “课程号”属性必须取唯一值 • 非主属性“课程名”也不能取空值 • “学分”属性只能取值{1,2,3,4}

  29. 四.完整性约束的作用 数据完整性的作用就是要保证数据库中的数据是正确的,提高了数据库的正确度 . (1)执行插入操作时检查完整性 (2)执行删除操作时检查完整性 (3)执行更新操作时检查完整性

  30. 关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。 集合运算:∪ ∩ - × 行的角度 辅助专门的关系运算操作 专门的关系运算:σπ ÷ 分 类 行和列的角度 比较运算符:> ≥ < ≤ = <> 逻辑运算符:∧ ∨ ┐ 3.3 关系代数 • 运算三要素:运算对象,运算符,运算结果

  31. 传统的集合运算是二目运算,包括并、交、差、广义笛卡尔积四种运算,如图。传统的集合运算是二目运算,包括并、交、差、广义笛卡尔积四种运算,如图。 并 差 交 笛卡尔积 3.3.1 传统的集合运算

  32. 1. 并(Union) —所有至少出现在两个关系中之一的元组的集合。 并 3.3.1传统的集合运算 RS ={ t | tR  tS } 注:两个关系R和S若进行并运算,则它们必须是相容的: (1)关系R和S必须是同目的,即它们的属性数目必须相同; (2)对i,R的第i个属性的域必须和S的第i个属性的域相同。

  33. 3.3.1 传统的集合运算

  34. 实例A:某学生成绩管理系统使用的数据表部分数据如下:实例A:某学生成绩管理系统使用的数据表部分数据如下: G1 G2 G1UG2

  35. 2. 差(Difference) —由属于R但是不属于S的元组构成的集合。 差 3.3.1 传统的集合运算 R-S={t|t∈R∧t∈S} 注:R和S必须同类型(属性集相同,但属性名可不同)

  36. 3.3.1传统的集合运算

  37. 参见实例A: G1 G2 G2-G1

  38. 3. 交(Intersection) —所有同时出现在两个关系中的元组集合。 RS ={ t | tR  tS } 交 3.3.1传统的集合运算 注: • 交运算可以通过差运算来表示: RS = R  (R  S) • R和S必须同类型(属性集相同、次序相同,但属性名可不同)

  39. 3.3.1传统的集合运算

  40. 参见实例A: G1 G2 G1∩G2

  41. 4. 广义笛卡儿积(Extended Cartesian Product) -是两个关系的元组集合所组成的新关系。 RS={ |trR  tsS } trts 3.3.1 传统的集合运算 注: (1)两个关系R,S,其目数分别为r,s,则它们的笛卡尔积是所有这样的元组集合:元组的前r个分量是R中的一个元组,后s个分量是S中的一个元组。 (2)RS的目数为R与S的目数之和, RS的元组个数为R和S的元组个数的乘积。

  42. R.A R.B R.C S.A S.B S.C 3.3.1 传统的集合运算

  43. 实例: G S S×G 思考:数据合理吗?

  44. σ 3.3.2 专门的关系运算 • 选择(Selection)-限制 • -从关系R中选择符合条件的元组构成新的关系。 • σF(R) = {t|t∈R ∧ F(t)=‘真’} 注: (1)选择条件F:是一个逻辑表达式,基本形式为:X1θY1 (2)σF(R) ,表示从R中选择满足条件(使逻辑表达式F为真)的元组; (3)从行的角度进行计算。

  45. 3.3.2 专门的关系运算 例1: σSage<20(Student) 或写作:σ4<20 (Student)

  46. 例2: σSsex = ‘男’Sdept = ‘IS’(Student) 3.3.2 专门的关系运算 或写作:σ3 = ‘男’ 5= ‘IS’(Student)

  47. 2. 投影(Projection) -从关系R中选择若干属性列组成新的关系。 πA(R) = {t[A]|t∈R} π 3.3.2专门的关系运算 注: (1) πA1,A2,…,An(R),表示从R中选择属性集A1,A2,…, An组成新的关系; (2)从列的角度进行计算;对一个关系R进行垂直分割,消去某些列,并重新安排列的顺序。

  48. 例3: πSname,Sage(Student) 3.3.2 专门的关系运算 或写作:π2,4(Student)

  49. 例4: πSdept(student) 3.3.2 专门的关系运算 注:投影运算的结果中,可能会取消某些元组,因为 需要删除重复元组。

  50. 3. 连接(Join)-θ连接 -从R×S的笛卡儿积中,选取属性满足某一条件的元组。 RS={trts|trRtsS  tr[A]θts[B]} AθB 3.3.2 专门的关系运算 注: (1)A和B分别为R和S上度数相等且可比的属性组; (2) θ为比较运算符。 (3)连接运算从RS中选出tr[A]和ts[B]满足θ运算的元组。

More Related