版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、韩华 信息科学与工程系,数据库技术 讲义,2013 .08,关系模型,关系数据库模式与关系数据库,第二章 关系数据库系统,关系代数,2.1 关系模型,关系模型是一种数据模型,它和一般的 数据模型一样,由如下三部分组成: 关系数据结构 关系操作集合 关系完整性约束,2.1.1 关系数据结构,单一的数据结构-关系 在关系模型中,无论是实体还是实体间的各种联系均用关系来表示 数据的逻辑结构-二维表 从用户角度,关系模型中数据的逻辑结构是一张二维表。,1. 二维表,下图所示的二维表表示的是某个班级的学生名单,列名,出自相同的域,代表一个学生的信息,1. 二维表(续),对一张二维表可以做以下操作:,填表
2、,修改,删除,查询,2. 关系,关系数据库是表的集合,每个表有唯一的名字,表中的一行代表的是一系列值之间的联系。 由于一个表就是这种联系的集合,因此表这个概念和数学上的关系这个概念密切相关,这也正是关系数据库名称的由来。,2. 关系(续),属性 列 字段,关系名 表名 文件名,元组 行 记录,返回,域 分量,关系模式,关键字(码)(KEY),二维表对应成关系如下图所示,A关系的逻辑结构,4种关键词,2. 关系(续),B关系的性质,C关键词,在数据库中要区分型和值。 关系数据库中,关系模式是型,关系实例是值。,2. 关系(续),关键词 (1)超关键字 (2)候选关键字 (3)主关键字 (4)外关
3、键字,关系中能唯一确定一个元组(或记录) 的一个或几个属性的组合,如, 学生表中,(学号,姓名) 课程表中,(课程代号,学分,学时),如果 K 是某关系的超关键字,若从K中减少一个属性就不能唯一确定一个元组,则 K 是候选关键字,如, 学生表中,(学号) 课程表中,(课程代号),从关系的所有候选关键字中选定一个候选关键字确定为这个关系的先行关键字,称为关键字。,设有关系A和B,若属性组合K是A的主关键字,但不是B的关键字,则称K是B相对于A的外关键字。,如有关系,学生(学号,姓名,性别,)成绩(学号,课程号,分数) (学号)是“学生”的主关键字,但不是“成绩”的主关键字,则称(学号)是“成绩”
4、的外关键字。,2. 关系(续),2. 关系(续),关系可以有三种类型: 基本关系(通常又称为基本表或基表),基本表是实际存在的表,是实际存储数据的逻辑表示。 查询表,是查询结果对应的表。 视图表,是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。,2. 关系(续),在关系模型中,实体以及实体之间的联系都是用关系来表示的。 例如雇员、部门、雇员与部门之间的工作关系在关系模型中可以表示如下: 雇员(雇员号、姓名、部门、性别、年龄、工作岗位) 部门(部门号,部门名) 工作关系(雇员号,部门号,工作年限),2.1.2关系操作,1) 关系操作的特点 集合操作方式,即操作的对象和结果都是集合。
5、 非关系数据模型的数据操作方式:一次一记录,2.1.2 关系操作(续),2) 常用的关系操作 数据库操作只实现对数据库中数据的“存”和“取” 主要有4种不同类型的操作 : 1.数据查询 2.数据插入 3.数据删除 4.数据更新,根据用户给出的查询条件从数据库中提取数据作为结果的操作,插入是向数据库中添加一个或多个元组的操作,从数据库中去除一个或多个无须继续在数据库中存储的元组,修改数据库中数据,使其具有新值的操作,2.1.2 关系操作(续),3) 关系数据语言的种类 关系数据库操作需要关系数据语言支持 关系模型给出了关系操作的能力和特点,但不对DBMS的语言给出具体的语法要求。 关系代数语言:
6、用对关系的运算来表达查询要求 关系演算语言:用谓词来表达查询要求 结构化查询语言SQL,2.1.3 关系的完整性,关系模型的完整性规则是对关系的某种约束条件。 关系模型中三类完整性约束: 实体完整性 参照完整性 用户定义的完整性 实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。,1 实体完整性,实体完整性规则(Entity Integrity) 若属性A是基本关系R的主属性,则任何一个元组在属性A上不能取空值(Null)。 例如,学生(学号,姓名,性别,出生年月,籍贯,身高) 学生关系中,学号是主码,则任何一个元组在属性“学号”上不能
7、取空值。,1 实体完整性(续),关系模型必须遵守实体完整性规则的原因 (1)一个基本关系对应现实世界中的一个实体集。例如,雇员关系对应全体雇员的集合。 (2)现实世界中的实体是可区分的,即它们具有某种唯一性标识 (3)相应地,关系模型中以主码作为唯一性标识。 (4)主码中的属性即主属性不能取空值。,1 实体完整性(续),注意:实体完整性规则规定基本关系的所有主属性都不能取空值 例:选修(学号,课程号,成绩) “学号、课程号”为主码,则两个属性都不能取空值。,2 参照完整性,关系间的引用 外码 参照完整性规则,关系间的引用,例子,假设我们具有如下两个关系: 学生(学号,姓名,性别,系别,年龄)
8、选课(学号,课程号,成绩) 这两个关系的属性之间存在着下图所示的引用关系,即 选课关系引用了学生关系的主码“学号”。,外码(Foreign Key),如果基本关系R中某属性集F是基本关系S 的主码,则对基本关系R而言,F叫做外码 (Foreign Key),并称基本关系R为参照 关系(Referencing Relation),基本关系S 为被参照关系(Referenced Relation)或 目标关系(Target Relation)。,学生选课系统的概念模型,参照完整性和外键声明,逻辑模型,基本关系R的任何一个元组在外码F上的取值要么是空值,要么是被参照关系S中一个元组的主码值,显然,参
9、照关系R的外码和目标关系S的主码必须定义在同一个(或一组)域上,但是,外码并不一定要与相应的主码同名。,从表,主表,参照完整性规则(续),同一关系内部属性间也可能存在引用关系。 例如在关系: 学生2(学号,姓名,性别,系别,年龄,班长) “班长”属性可以取两类值: 空值,表示该学生所在班级尚未选出班长; 非空值,这时该值必须是本关系中某个元组的学号值。 该例中学生2关系既是参照关系也是被参照关系。,主码,外码,保持参照完整性,参照完整性的违例 从表 插入从表元组,且外键不为Null 修改从表外键,且不为Null 主表 删除主表元组,其已被参照 修改主表主键,其已被参照 Drop Table,保
10、持参照完整性策略,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 Reference
11、s student(sno) On Delete Set Null On Update Cascade, .,3 用户定义的完整性,用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。(如触发器或存储过程),用户定义的完整性(续),例: 课程(课程号,课程名,学分) “课程名”属性必须取唯一值 非主属性“课程名”也不能取空值 “学分”属性只能取值1,2,3,4,当谈论数据库时,必须区分数据库模式和数据库实例。 数据库模式是数据库的逻辑设计,而
12、数据库实例是给定时刻数据库中数据的一个快照。 针对关系模型来说,数据库模式和数据库实例就是关系模式和关系实例。,2.2 关系数据库模式与关系数据库,那么什么是关系模式呢?,程序设计语言,关系模型,数据类型 变量 值,关系模式 关系 关系实例,2.3 关系代数,1. 关系代数(一种抽象的查询语言,用对关系的运算来表达查询) 2. 关系运算的三要素(运算对象、关系运算结果、关系运算符:四类) 3. 关系代数运算符(集合运算符、专门的关系运算符、算术比较符和逻辑运算符) 4.关系代数运算按运算符分类(传统的集合运算和专门的关系运算),关系代数运算符,关系代数运算符(续),1、关系代数 并Union
13、(),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
14、.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.
15、分数 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 (注
16、意 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的选择操作记作:
17、其中F 表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”。选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。,1.选择(SELECT),2.3.2 专门的关系运算,T5 =F (R),逻辑 表达式,T5包含R的满足条件的元组,关系,1. 选择(续),例: sage = 23 AND sdep = CS(student) 例:列出CS系的学号及姓名 sno,sname(sdep = CS(student) ) SQL语句,SELECT student.sno,student.sname from student WHERE sage =23 and sdep=CS;,例如,给出lo
18、an关系中分支机构名称为Downtown的元组,就应该写作: branch-name=“Downtown”(loan),图2-6,例如,找出在Downtown分支机构的贷款金额大于1200元的元组,就可以表示为: branch-name=“Downtown”amount1200(loan),注意:由于空值null表示“值未知或不存在”, 因而所有涉及空值的比较均得到false值。,投影(projection):一目运算 tRA是属性或属性组,投影运算的结果是在R中选取某些属性列(A)构成新的关系,注意:投影运算不仅会取消某些列,而且还可能因重复行的存在而取消某些元组(行)。 从关系R中选择若干
19、属性组成新的关系 A1,A2,An(R),表示从R中选择属性集A1,A2,An组成新的关系 列的运算 投影运算的结果中,也要去除可能的重复元组 例: ssex,sage(student) ?,2. 投影-Projection(),2. 投影(续),T6 =L (R),属性列表,T6包含R的满足条件的元组,关系,2. 投影 (续),例如,上述投影运算就应该写作: loan-number,amount(loan) 产生的结果如图2-4所示:,图2-7,连接(jion): 等值连接和自然连接。二目运算。 1) 连接:设有关系R和S,从RS(广义笛卡尔积)中选取属性间满足一定条件的元组。 2)等值连接
20、:A,B应出自相同的域,也就是说,A,B应可比较,当 取“=”时,等值运算,3. 连接 (Jion),T7包含R和V的所有属性,若 为“C D”,3)关系代数自然连接( ),从RS的结果集中,选取在某些公共属性上具有相同值的元组,组成新的关系 R、S的公共属性 属性集的交集(名称及类型相同) 公共属性在结果中只出现一次 一种特殊的等值连接,T8包含R的所有属性和V同属性中外的所有属性,自然连接运算: 尽管自然连接的定义很复杂,但使用起来却很方便。例如,“找出所有在银行中有贷款的客户的姓名、贷款号和贷款金额”。用关系代数的基本运算可以表示如下:customer-name,loan-number,
21、amount(borrower.loan-number=loan.loan-number(borrowerloan) ? 而用自然连接运算就可以简单地表示如下: customer-name,loan-number,amount(borrower loan),自然连接运算: customer-name,loan-number,amount(borrowerloan) 由于关系borrower和loan的模式中都有相同的属性loan-number,自然连接运算只考虑在loan-number上值相同的元组对。而自然连接的结果模式为两个模式的并,即: (customer-name,branch-nam
22、e,loan-number,amount),并的含义就是要去除重复,Select customer-name,loan-number,amount from borrower,loan where borrower. loan-number = loan. loan-number,4)关系代数改名(),对关系R实施改名运算,可显式地改变关系名及属性名 将关系R改名为S:s(R) 将关系R(B1,B2,Bn)改名 S(A1,A2,An): S(A1,A2,An)(R),S,C,SC,例:学生、课程、选课关系即S、C、SC关系分别如下所示:,SQL语句 SELECT DISTINCT A.Name
23、 FROM R AS A WHERE NOT EXISTS (SELECT * FROM S AS B WHERE NOT EXISTS (SELECT * FROM R AS C where C.Name=A.Name and B.City=C.City) GROUP BY A.Name,关系S:,R除S的运算结果:,关系R:,数据示例,5)关系代数查询中的复合运算,例:找出比95001年龄大的学生的学号和姓名、年龄 s.sno,s.sname,s.sage(s(student) s.sage stu.sage (stu.sno=95001(stu(student),给定一个关系R(X,Z)
24、,X,Z为属性组,定义当X=x时,x在R中的象集(Image Set)为 =tZ tR,tX=x,表示R中属性组X上值 为x的诸元组在 Z 上的集合,即:对R进行选择运算 ,再进行投影运算 。,象集的概念,SC,投影,4. 除法(自学) 给定关系R(X,Y)和S(Y,Z),X,Y,Z是属性组,R中的Y和S中Y可以有不同的属性名(对应的属性要出自相同的域) 记商为QX则 除法的结果是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx 包含在Y上的投影的集合。,什么是Yx ?,即:它使用除数关系S(Y)在被除数关系R(X,Y)中取商关系,记作:RS Y和Y具有相同的属性数目,且
25、对应属性出自相同的域 商关系是关系R在属性X上投影的一个子集 举例: 关系代数表达式的运算结果是一个关系 关系数据库的DML语言至少支持选择、投影和连接三种运算,Customer-schema=(customer-name, customer-street, customer-city) Account-schema=(branch-name, account-number, balance) Depositor-schema=(customer-name, account-number) Branch-schema=(branch-name, branch-city, assets) Loa
26、n-schema=(branch-name, loan-number, amount) Borrower-schema=(customer-name, loan-number),除运算用符号“”表示,适合于包含诸如“对所有的”此类短语的查询。 假设希望找出在Brooklyn市的所有分支机构中都有帐户的客户姓名,可以分步求解如下: 位于Brooklyn市的所有分支机构的名称: r1=branch-name(branch-city=“Brooklyn”(branch) 客户在分支机构中有帐户的所有 (customer-name,branch-name)对: r2=customer-name,branch-name(depositoraccount),除法: 现在需要找出这样的客户:他与r1中每个分支机构名称的结对都在r2中出现。而给出所有这样的客户的运算是除运算,即r2r1: customer-name,branch-name(depositoraccount) branch-name(branch-city=“Brooklyn”(branch) 此表达式产生的关系模 式为(customer-name) 结果元组为(Johnson),r1,r2,4. 除,例:求至少选修C1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届营口市老边区三年级数学第二学期期末学业质量监测模拟试题(含答案)
- 解析古代县试的题目及答案
- 体育馆赛事举办场地租赁合同二篇
- 建设工程监理合同协议范本
- 农田排涝设施改造合作项目合同书范本二篇
- 2026年食品检测知识(基础常识)试题及答案
- 老旧小区勘察质量控制规范
- 旅游景区文明游览管理规范
- 城镇道路雨水口病害排查报告
- 纤维装饰板色差控制作业报告
- 伦理审查中的试验方案科学性评估
- 第一单元 分类与整 理 课件 2025-2026学年二年级数学人教版上册
- 《电力机车行车安全装备》全套教学课件
- T/CAPE 10108-2024设备设施报废管理指南
- 计算机视觉完整全套教学课件
- (2025秋新修订)人教版三年级数学上册全册教案(教学设计)
- 华东师大版八年级数学上册《第十章数的开方》单元测试卷带答案解析
- 统编版五升六语文开学摸底测试卷(十)(含答案)
- 高中生物开学第一课课件
- 施工队进场安全教育培训
- 重庆彭水自治县招聘社区工作者考试真题2024
评论
0/150
提交评论