资源预览内容
第1页 / 共87页
第2页 / 共87页
第3页 / 共87页
第4页 / 共87页
第5页 / 共87页
第6页 / 共87页
第7页 / 共87页
第8页 / 共87页
第9页 / 共87页
第10页 / 共87页
亲,该文档总共87页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
韩华 信息科学与工程系,数据库技术 讲义,2013 .08,关系模型,关系数据库模式与关系数据库,第二章 关系数据库系统,关系代数,2.1 关系模型,关系模型是一种数据模型,它和一般的 数据模型一样,由如下三部分组成: 关系数据结构 关系操作集合 关系完整性约束,2.1.1 关系数据结构,单一的数据结构-关系 在关系模型中,无论是实体还是实体间的各种联系均用关系来表示 数据的逻辑结构-二维表 从用户角度,关系模型中数据的逻辑结构是一张二维表。,1. 二维表,下图所示的二维表表示的是某个班级的学生名单,列名,出自相同的域,代表一个学生的信息,1. 二维表(续),对一张二维表可以做以下操作:,填表,修改,删除,查询,2. 关系,关系数据库是表的集合,每个表有唯一的名字,表中的一行代表的是一系列值之间的联系。 由于一个表就是这种联系的集合,因此表这个概念和数学上的关系这个概念密切相关,这也正是关系数据库名称的由来。,2. 关系(续),属性 列 字段,关系名 表名 文件名,元组 行 记录,返回,域 分量,关系模式,关键字(码)(KEY),二维表对应成关系如下图所示,A关系的逻辑结构,4种关键词,2. 关系(续),B关系的性质,C关键词,在数据库中要区分型和值。 关系数据库中,关系模式是型,关系实例是值。,2. 关系(续),关键词 (1)超关键字 (2)候选关键字 (3)主关键字 (4)外关键字,关系中能唯一确定一个元组(或记录) 的一个或几个属性的组合,如, 学生表中,(学号,姓名) 课程表中,(课程代号,学分,学时),如果 K 是某关系的超关键字,若从K中减少一个属性就不能唯一确定一个元组,则 K 是候选关键字,如, 学生表中,(学号) 课程表中,(课程代号),从关系的所有候选关键字中选定一个候选关键字确定为这个关系的先行关键字,称为关键字。,设有关系A和B,若属性组合K是A的主关键字,但不是B的关键字,则称K是B相对于A的外关键字。,如有关系,学生(学号,姓名,性别,)成绩(学号,课程号,分数) (学号)是“学生”的主关键字,但不是“成绩”的主关键字,则称(学号)是“成绩”的外关键字。,2. 关系(续),2. 关系(续),关系可以有三种类型: 基本关系(通常又称为基本表或基表),基本表是实际存在的表,是实际存储数据的逻辑表示。 查询表,是查询结果对应的表。 视图表,是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。,2. 关系(续),在关系模型中,实体以及实体之间的联系都是用关系来表示的。 例如雇员、部门、雇员与部门之间的工作关系在关系模型中可以表示如下: 雇员(雇员号、姓名、部门、性别、年龄、工作岗位) 部门(部门号,部门名) 工作关系(雇员号,部门号,工作年限),2.1.2关系操作,1) 关系操作的特点 集合操作方式,即操作的对象和结果都是集合。 非关系数据模型的数据操作方式:一次一记录,2.1.2 关系操作(续),2) 常用的关系操作 数据库操作只实现对数据库中数据的“存”和“取” 主要有4种不同类型的操作 : 1.数据查询 2.数据插入 3.数据删除 4.数据更新,根据用户给出的查询条件从数据库中提取数据作为结果的操作,插入是向数据库中添加一个或多个元组的操作,从数据库中去除一个或多个无须继续在数据库中存储的元组,修改数据库中数据,使其具有新值的操作,2.1.2 关系操作(续),3) 关系数据语言的种类 关系数据库操作需要关系数据语言支持 关系模型给出了关系操作的能力和特点,但不对DBMS的语言给出具体的语法要求。 关系代数语言:用对关系的运算来表达查询要求 关系演算语言:用谓词来表达查询要求 结构化查询语言SQL,2.1.3 关系的完整性,关系模型的完整性规则是对关系的某种约束条件。 关系模型中三类完整性约束: 实体完整性 参照完整性 用户定义的完整性 实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。,1 实体完整性,实体完整性规则(Entity Integrity) 若属性A是基本关系R的主属性,则任何一个元组在属性A上不能取空值(Null)。 例如,学生(学号,姓名,性别,出生年月,籍贯,身高) 学生关系中,学号是主码,则任何一个元组在属性“学号”上不能取空值。,1 实体完整性(续),关系模型必须遵守实体完整性规则的原因 (1)一个基本关系对应现实世界中的一个实体集。例如,雇员关系对应全体雇员的集合。 (2)现实世界中的实体是可区分的,即它们具有某种唯一性标识 (3)相应地,关系模型中以主码作为唯一性标识。 (4)主码中的属性即主属性不能取空值。,1 实体完整性(续),注意:实体完整性规则规定基本关系的所有主属性都不能取空值 例:选修(学号,课程号,成绩) “学号、课程号”为主码,则两个属性都不能取空值。,2 参照完整性,关系间的引用 外码 参照完整性规则,关系间的引用,例子,假设我们具有如下两个关系: 学生(学号,姓名,性别,系别,年龄) 选课(学号,课程号,成绩) 这两个关系的属性之间存在着下图所示的引用关系,即 选课关系引用了学生关系的主码“学号”。,外码(Foreign Key),如果基本关系R中某属性集F是基本关系S 的主码,则对基本关系R而言,F叫做外码 (Foreign Key),并称基本关系R为参照 关系(Referencing Relation),基本关系S 为被参照关系(Referenced Relation)或 目标关系(Target Relation)。,学生选课系统的概念模型,参照完整性和外键声明,逻辑模型,基本关系R的任何一个元组在外码F上的取值要么是空值,要么是被参照关系S中一个元组的主码值,显然,参照关系R的外码和目标关系S的主码必须定义在同一个(或一组)域上,但是,外码并不一定要与相应的主码同名。,从表,主表,参照完整性规则(续),同一关系内部属性间也可能存在引用关系。 例如在关系: 学生2(学号,姓名,性别,系别,年龄,班长) “班长”属性可以取两类值: 空值,表示该学生所在班级尚未选出班长; 非空值,这时该值必须是本关系中某个元组的学号值。 该例中学生2关系既是参照关系也是被参照关系。,主码,外码,保持参照完整性,参照完整性的违例 从表 插入从表元组,且外键不为Null 修改从表外键,且不为Null 主表 删除主表元组,其已被参照 修改主表主键,其已被参照 Drop Table,保持参照完整性策略,RESTRICT 前述违例的情况均不能操作 这是所有DBMS产品均支持的方式 安全的默认方式,CASCADE 对主表的违例操作 所有从表中的相关元组被级联删除或更新,SET NULL 对主表的违例操作 从表中相关外键的值均被置为Null(前提是允许为Null),SET DEFAULT 对主表的违例操作 从表中相关外键的值均被置为相应的Default Value,属性级 sno char(10) References student(sno) On Delete Set Null On Update Cascade, . 表级 Foreign Key sno References student(sno) On Delete Set Null On Update Cascade, .,3 用户定义的完整性,用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。(如触发器或存储过程),用户定义的完整性(续),例: 课程(课程号,课程名,学分) “课程名”属性必须取唯一值 非主属性“课程名”也不能取空值 “学分”属性只能取值1,2,3,4,当谈论数据库时,必须区分数据库模式和数据库实例。 数据库模式是数据库的逻辑设计,而数据库实例是给定时刻数据库中数据的一个快照。 针对关系模型来说,数据库模式和数据库实例就是关系模式和关系实例。,2.2 关系数据库模式与关系数据库,那么什么是关系模式呢?,程序设计语言,关系模型,数据类型 变量 值,关系模式 关系 关系实例,2.3 关系代数,1. 关系代数(一种抽象的查询语言,用对关系的运算来表达查询) 2. 关系运算的三要素(运算对象、关系运算结果、关系运算符:四类) 3. 关系代数运算符(集合运算符、专门的关系运算符、算术比较符和逻辑运算符) 4.关系代数运算按运算符分类(传统的集合运算和专门的关系运算),关系代数运算符,关系代数运算符(续),1、关系代数 并Union (),R和S的并,RS,是在R或S或两者中的元素的集合 一个元素在并集中只出现一次 R和S必须同类型(属性集相同、次序相同,但属性名可以不同),2.3.1 传统的集合运算,运算规则: “并”运算,T1 = R S,T1包含 R 和 S 的所有元组,2.3.1 传统的集合运算(续),SQL 语句 Select * from R Union Select *from S,数据示例,关系R:,关系S:,RS运算结果,2、关系代数 交Intersect (),R和S的交, RS ,是在R和S中都存在的元素的集合 一个元素在交集中只出现一次 R和S必须同类型(属性集相同、次序相同,但属性名可以不同),2.3.1 传统的集合运算(续),运算规则: “交”运算,T3 = R S,T3包含R和S共有的元组,2.3.1 传统的集合运算(续),SQ L 语句,Select R.学号 from R,S where R. 学号=S. 学号and R.课程名=S. 课程名and R.分数=S.分数 或 Select R.学号,R.课程名,R.分数 from R INTERSECT Select S.学号,S.课程名,S.分数 from S,数据示例,关系S:,RS结果:,关系R:,3、关系代数 差Minus (-),2.3.1 传统的集合运算(续),SQL语句 Select R. 学号,R. 课程名,R. 分数 from R EXCEPT Select S. 学号,S. 课程名,S. 分数 from S 或 select 学号, 课程名, 分数From R CWHERE 学号 NOT IN (Select R.学号 from R,S where R. 学号=S. 学号and R.课程名=S. 课程名and R.分数=S.分数),数据示例 R-S运算结果:,4.关系代数笛卡尔积(),关系R、S的笛卡尔积是两个关系的元组对的集合所组成的新关系 RS: 属性是R和S的组合(有重复) 元组是R和S所有元组的可能组合 使R、S的无条件连接,使任意两个关系的信息能组合在一起 例: student sc (注意 sno 的命名),2.3.1 传统的集合运算(续),运算规则: “笛卡尔积”运算,T4 = R V,T4包含R和V的元组所有可能的配对,两个分别为n、m目关系R和S的广义笛卡儿积是 一个(n+m)元组的集合,记作:RS,广义笛卡尔积 (续),R,S,R S,SQL 语句 Select * from R , S,小结:对于传统的集合运算,它是二目元算,其中R和S要求是同类关系(除广义笛卡尔积运算) 它能实现关系数据库的许多基本操作 并运算实现数据记录的添加 差运算实现数据记录的删除 数据记录的修改则是通过先删除,后插入这两步完成的,2.3.1 传统的集合运算(续),对关系R的选择操作记作: 其中F 表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”。选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。,1.选择(SELECT),2.3.2 专门的关系运算,T5 =F (R),逻辑 表达式,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号