




已阅读5页,还剩79页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库原理及应用,第四讲,上节回顾,access概述 创建数据库 数据库表的建立与操作,本节内容,一.关系代数 二.关系数据库规范化理论,一 关系代数,关系模型源于数学,关系是由元组构成的集合,可以通过关系的运算来表达查询要求 关系代数是关系操作语言的一种传统的表示方式,它是一种抽象的查询语言。 运算的三大要素 运算对象、运算符、运算结果 关系代数的运算对象、运算结果都是关系 关系代数的运算符 集合运算符、专门的关系运算符、比较运算符和逻辑运算符,关系操作,传统的关系运算: 将关系看成元组的集合,运算从关系的“水平”方向的角度来进行。 并(union) 交(intersection) 差(difference) 广义笛卡尔乘积(extended cartesian product) 专门的关系运算: 不仅涉及行而且涉及列。 选择(select) 投影(project) 连接(join) 除(divide) 比较运算符和逻辑运算符: 辅助专门的关系运算符进行操作,关系运算符,关系运算符(续),传统的集合运算,传统的集合运算是二目运算 设关系r和s均是n元关系,且相应的属性值取自同一个值域,则可以定义三种运算: 并运算() 交运算() 差运算(),1并运算,关系r与关系s的并记为: rst | tr ts 其结果仍是n元关系,由属于r或属于s的元组组成。,2交运算,关系r与关系s的交记为: rst | tr ts 其结果仍是n目关系,由属于r并且也属于s的元组组成。,3差运算,关系r与关系s的差记为: rst | tr t s 其结果仍是n目关系,由属于r并且不属于s的元组组成。,4. 广义笛卡尔积,r n目关系,k1个元组 s m目关系,k2个元组 rs 列:(n+m)列的元组的集合 元组的前n列是关系r的一个元组 后m列是关系s的一个元组 行:k1k2个元组 rs = tr ts |tr r tss ,广义笛卡尔积示例,专门的关系运算,专门的关系运算包括: 选择 投影 连接 除,1. 选择(selection),1) 选择又称为限制(restriction) 2) 选择运算符的含义 在关系r中选择满足给定条件的诸元组 f(r) = t|trf(t)= 真 f:选择条件,是一个逻辑表达式,基本形式为: ( x1y1 ) ( x2y2 ) :比较运算符(,或) x1,y1等:属性名、常量、简单函数;属性名也可以用它的序号来代替; :逻辑运算符(或) :表示任选项 :表示上述格式可以重复下去,选择(续),3) 选择运算是从行的角度进行的运算 4) 举例 设有一个学生-课程数据库,包括学生关系student、课程关系course和选修关系sc。,选择(续),(a),student,选择(续),(b),course,选择(续),(c),sc,选择(续),(a),student,例1,例2,next,选择(续),例1 查询信息系(is系)全体学生 sdept = is (student) 或 5 =is (student) 结果:,选择(续),例2 查询年龄小于20岁的学生 sage 20(student) 或 4 20(student) 结果:,2. 投影(projection),1)投影运算符的含义 从r中选择出若干属性列组成新的关系 a(r) = ta | t r 其中: 是投影运算符 r是关系名 a是被投影的属性或属性组 t.a表示t这个元组中相应于属性(集)a的分量,也可以表示为ta。 例如,选择sname,sdept两个列构成新关系: sname, sdept(student),投影(续),2)投影操作主要是从列的角度进行运算 但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行),投影(续),(a),student,例4,例3,next,投影(续),3) 举例 例3 查询学生的姓名和所在系 即求student关系上学生姓名和所在系两个属性上的投影 sname,sdept(student) 或 2,5(student) 结果:,投影(续),例4 查询学生关系student中都有哪些系 sdept(student) 结果:,3. 连接(join),1)连接也称为连接 2)连接运算的含义 从两个关系的笛卡尔积中选取属性间满足一定条件的元组 r s = | tr rts stratsb a和b:分别为r和s上度数相等且可比的属性组 :比较运算符 连接运算从r和s的广义笛卡尔积rs中选取(r关系)在a属性组上的值与(s关系)在b属性组上值满足比较关系的元组。,连接(续),3)两类常用连接运算 等值连接(equijoin) 什么是等值连接 为“”的连接运算称为等值连接 等值连接的含义 从关系r与s的广义笛卡尔积中选取a、b属性值相等的那些元组,即等值连接为: r s = | tr rts stra = tsb ,a=b,连接(续),自然连接(natural join) 什么是自然连接 自然连接是一种特殊的等值连接 两个关系中进行比较的分量必须是相同的属性组 在结果中把重复的属性列去掉 自然连接的含义 r和s具有相同的属性组b r s = | tr rts strb = tsb ,连接(续),4)一般的连接操作是从行的角度进行运算。 自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。,连接(续),5)举例 例5,r,s,r s,连接(续),r s,连接(续),r,s,r s,连接(续),等值连接 r s,连接(续),r,s,r s,连接(续),自然连接 r s,自然连接与等值连接的差别,自然连接与等值连接的差别为: 自然连接要求相等的分量必须有共同的属性名,等值连接则不要求; 自然连接要求把重复的属性名去掉,等值连接却不这样做。,象集z,给定一个关系r(x,z),x和z为属性组。当tx=x时,x在r中的象集(images set)为: zx=tz|t r,tx=x 它表示r中属性组x上值为x的诸元组在z上分量的集合。,象集举例,在关系r中,a可以取四个值a1,a2,a3,a4 a1的象集为 (b1,c2),(b2,c3),(b2,c1) a2的象集为 (b3,c7),(b2,c3) a3的象集为 (b4,c6) a4的象集为 (b6,c6),r,4. 除(division),给定关系r (x,y) 和s (y,z),其中x,y,z为属性组。r中的y与s中的y可以有不同的属性名,但必须出自相同的域集。r与s的除运算得到一个新的关系p(x),p是r中满足下列条件的元组在x属性列上的投影:元组在x上分量值x的象集yx包含s在y上投影的集合。 rs = tr x | tr ry (s) yx yx:x在r中的象集,x = trx,除(续),r,s,分析,在关系r中,a可以取四个值a1,a2,a3,a4 a1的象集为 (b1,c2),(b2,c3),(b2,c1) a2的象集为 (b3,c7),(b2,c3) a3的象集为 (b4,c6) a4的象集为 (b6,c6),r,分析(续),s在(b,c)上的投影为 (b1,c2),(b2,c1),(b2,c3) 只有a1的象集包含了s在(b,c)属性组上的投影 所以 rs =a1,s,除(续),除操作是同时从行和列角度进行运算,五 综合举例,(c),sc,综合举例(续),查询至少选修1号课程和3号课程的学生号码 首先建立一个临时关系k: 然后求:sno,cno(sc)k,综合举例(续),sno,cno(sc) 95001象集1,2,3 95002象集2,3 cno(k)=1,3 于是:sno,cno(sc)k=95001,综合举例(续),(a),student,综合举例(续),(b),course,综合举例(续),(c),sc,next,查询修2号课程的学生的学号。 sno(cno=2(sc)= 95001,95002 查询计算机(cs)系修2号课程的学生的姓名和成绩。 sname, grade(cno=2(sc) sdept=cs(student)= (李勇,85),综合举例(续),综合举例(续),查询至少选修了一门其直接先行课为5号课程的学生姓名。 sname(cpno=5(course sc student) 或 sname(cpno=5(course) sc sno,sname(student) 或 sname(sno(cpno=5(course) sc) sno,sname (student),关系代数,l 关系代数 关系代数运算 并、差、交、笛卡尔积、投影、选择、连接、除 基本运算 并、差、笛卡尔积、投影、选择 交、连接、除 可以用5种基本运算来表达 引进它们并不增加语言的能力,但可以简化表达,关系代数表达式与语言,l 关系代数表达式 关系代数运算经有限次复合后形成的式子 典型关系代数语言 isbl(information system base language) 由ibm united kingdom研究中心研制 用于prtv(peterlee relational test vehicle)实验系统,小结,关系代数 传统的关系运算: 并(union) 交(intersection) 差(difference) 广义笛卡尔乘积(extended cartesian product) 专门的关系运算: 选择(select) 投影(project) 连接(join) 除(divide) 比较运算符和逻辑运算符,二 关系数据库规范化理论,为了满足用户对业务和系统性能等的需求,需要对数据库进行设计。关系数据库规范化理论就是数据库设计的理论基础,在数据库应用中具有重要的作用。 1 函数依赖 1.1为什么要讨论函数依赖 1.2函数依赖基本概念 2 关系规范化 范式的概念以及如何进行模式分解,1.1 为什么要讨论函数依赖?,假设有描述学生选课及住宿情况的关系模式: s-l-c(sno,sdept,sloc,cno,grade) 其中各属性分别为:学号、学生所在学院、学生所住宿舍楼、课程号和分数 假设每个学院的学生都住在一栋宿舍楼里,刚入学时确定的每个学生的学号第三位代表所在学院 (sno,cno)为主码,s-l-c关系模式的数据示例,假设每个院系的学生都住在同一栋宿舍楼,(sno,cno)为主码,数据冗余:学生所在学院与对应的宿舍楼信息,0513101同学转到光电学院(更新),计算机学院新来了一名学号为0513103同学(插入),0532102同学不选os课了(删除),问题,上面例子中的数据冗余以及在对其进行数据更新、插入、删除时存在的问题统称为操作异常。,为什么会产生操作异常?,因为关系模式没有设计好,某些属性 之间存在着“不良”的函数依赖。,1.2 函数依赖基本概念,对函数y=f(x),给定一个x的值,都会有一个y值和它对应。也可以说x函数决定y,或y函数依赖于x。表示为: xy 学生所在院系=f(学号):只要给出一个具体的学号,就会有唯一一个学生所在院系和学号对应。可以说“学号”函数决定“学生所在院系”,或“学生所在院系”函数依赖于“学号”。表示为: 学号学生所在院系,学号0532101,第3位代表学生所在学院,“3”为光电学院,函数依赖分类,s-l-c表,sno和cno 共同决定grade(完全函数依赖),主码中的sno决定sdept(部分函数依赖),sno决定sdept,sdept决定sloc,从而sno决定sloc(传递函数依赖),将s-l-c关系模式分解,将s-l-c拆分为s-l表和s-c表,s-l表,s-c表,主码:sno,主码:(sno,cno),“好”的表,“不好”的表,0513101号同学在s-l-c中有两行数据,而对于一个学生来说,他的所在学院和所住公寓是唯一的,2 关系规范化,如何正确改造复杂关系模式,克服种种操作异常?,按照一定的规范进行模式分解,把一个关 系模式分解成两个或多个关系模式,在分 解过程中消除“不良”的函数依赖,关系规范化,范式,关系数据库中的关系要满足一定的要求,若关系满足不同程度的要求就称其为不同的范式(normal form)。 范式的种类: 第一范式(1nf)、第二范式(2nf)、第三范式(3nf)等 r是第二范式的可以写成r2nf,以此类推,还有3nf、4nf、5nf等。,第一范式,第一范式(1nf):不包含重复组的关系,即不包含非原子项的属性。,关系模式中的码,设用u表示关系模式r的属性全集,f表示关系模式r上的函数依赖集。 候选码:设k为r(u,f)中的属性或属性组,若k完全决定u,则k为r的候选码。 主码:关系r(u,f)中可能有多个候选码,则选其中一个作为主码。 全码:候选码为整个属性组。 包含在任一候选码中的属性称为主属性,不包含在任一候选码中的属性称为非主属性。,主属性与非主属性的示例,假设每个院系的学生都住在同一栋宿舍楼,(sno,cno)为主码,第二范式,第二范式(2nf) :如果r(u,f)1nf,并且r中的每个非主属性都完全函数依赖于主码,则r(u,f)2nf。,右表s-l是2nf 1.是1nf 2.非主属性sdept,sloc都完 全函数依赖于主码sno,s-l表,将1nf的关系模式分解为2nf的方法,首先,对于组成主码的属性集合的每一个子集,用它作为主码构成一个表。 然后,将依赖于这些主码的属性放置到相应的表中。 最后,去掉只由主码的子集构成的表。,分解s-l-c表,对s-l-c(sno,sdept,sloc,cno,grade) 对于组成主码的属性集合的每一个子集,用它作为主码构成一个表。分解为如下形式的三张表: s-l(sno,) c(cno,) s-c(sno, cno,),分解s-l-c表(续),然后,将依赖于这些主码的属性放置到相应的表中,形成如下三张表: s-l(sno,sdept, sloc) c(cno) s-c(sno, cno, grade),分解s-l-c表(续),最后,去掉只由主码的子集构成的表。 c(cno,) s-l-c关系模式最终分解的形式为: s-l(sno,sdept, sloc) s-c(sno, cno, grade),分解后的关系模式满足的范式,s-l表,s-c表,主码:sno,s-l是2nf,主码:(sno,cno),s-c是2nf,sloc传递函数依赖于sno,第三范式,第三范式(3nf):如果r(u,f )2nf,并且所有非主属性都不传递依赖于主码,则r(u,f )3nf。,s-c表,右表s-c是3nf 1.是2nf 2.非主属性grade不传递依赖 于主码(sno,cno),将2nf的关系模式分解为3nf的方法,首先,对于不是候选码的每个决定因子,从表中删去依赖于它的所有属性 然后,新建一个表,新表中包含在原表中所有依赖于该决定因子的属性 最后,将决定因子作为新表的主码,分解s-l表,对s-l(sno,sdept,sloc) 首先,对于不是候选码的每个决定因子,从表中删去依赖于它的所有属性 s-l(sno,sdept,sloc)变为s-l(sno,sdept) 然后,新建一个表,新表中包含在原表中所有依赖于该决定因子的属性 s-d(sloc) 最后,将决定因子作为新表的主码 s-d(sdept,sloc),分解s-l表(续),s-l分解后的关系模式为: s-l(sno, sdept) s-d(sdept, sloc),分解s-l-c最后得到的关系模式,s-l(sno, sdept)(sdept为外码) s-d(sdept, sloc) s-c(sno, cno, grade)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地下管材安装施工方案
- 普洱学院《管理学概论》2023-2024学年第二学期期末试卷
- 宁夏大学《朝鲜语会话一》2023-2024学年第二学期期末试卷
- 新疆现代职业技术学院《钢笔书法训练》2023-2024学年第二学期期末试卷
- 《2025聘请技术人才合同协议书》
- 高尔夫知识全面解析
- 《花朵的成长》课件
- 延边职业技术学院《制图基础》2023-2024学年第二学期期末试卷
- sbs防水的施工方案
- 2025至2031年中国尾窗饰板行业投资前景及策略咨询研究报告
- GB/T 30819-2024机器人用谐波齿轮减速器
- 气管插管脱管的应急预案演练脚本
- 中国特种兵课件
- 2024版合同及信息管理方案
- 梁板结构:双向板
- DG-TJ 08-2451-2024 电动自行车集中充电和停放场所设计标准
- 吊篮高处作业安全交底
- 彩票物流配送服务投标方案(技术方案)
- 电磁感应:“棒-导轨”模型4:单棒-有外力发电式
- 2025年公务员考试江西省(面试)试题及答案指导
- 江苏省期无锡市天一实验校2025届初三下学期第一次模拟考试英语试题含答案
评论
0/150
提交评论