




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、陈立军 v数据管理技术的发展经历了哪几个阶段?各 阶段的特点是什么? v数据库的三级模式、两级映象的含义,两级 数据独立性的含义是什么? v什么是概念数据模型和结构数据模型? v了解e-r模型中的主要术语以及e-r图的表示 方法?三种联系的含义是什么? v什么是结构数据的三要素?主要的结构数据 模型有哪些? vdbms的主要功能有哪些? vdml有哪些类型?各自的执行方式有哪些? v什么是数据字典? vdb,dbms,dbs的含义是什么? vdba的职责有哪些? vwhy? 数据管理艺术的必然 vwhat? 数据模型 vhow? 数据库模式 考察要点 v各阶段的技术及应用背景 计算机应用范围
2、外存储设备 数据管理软件 v各个阶段的差别体现 谁管理数据 数据面向谁 数据与应用的独立性 访问 访问 访问 数据1 数据2 数据n 程序1 程序2 程序n 数据1 数据2 数据n 存取方式 程序1 程序2 程序n 补贴系别姓名学号 劳资科 住址系别性别姓名学号 房产科 学位学分系别姓名学号 学籍科 学位 出身年龄系别性别姓名学号 人事科 v数据与程序的独立性差 v数据的共享性差 v数据冗余度大,数据不一致性 v数据查询困难 v数据完整性难于保证 v数据库观点 数据不是依赖于处理过程的附属品,而是现实世 界中独立存在的对象 数据1 统一存取 数据2 数据n 程序2 程序1程序n 学号姓名 性别
3、 系别 年龄 住址 出身 学位 学分 补贴 学籍科 房产科 人事科 劳资科 数据库系统阶段 v数据描述的三个世界,两个层次 v数据模型定义,两层数据模型的特点 ver模型 v结构数据模型的三要素 v结构数据模型示例 现实世界 信息世界 计算机世 界 概念化 形式化 用户 计算机 “computing” 数据模型 是数据库系 统中用于提 供信息表示 和操作手段 的形式构架 应用 概念数据模型 结构数据模型 现实世界 信息世界 计算机世 界 v概念数据模型 按用户的观点来对数据和信息建模 用于组织信息世界的概念,表现从现实世界中抽 象出来的事物以及它们之间的联系 这类模型强调其语义表达能力,概念简
4、单、清晰, 易于用户理解 它是现实世界到信息世界的抽象,是用户与数据 库设计人员之间进行交流的语言 如e-r模型 v结构数据模型 从计算机实现的观点来对数据建模 是信息世界中的概念和联系在计算机世界中的表 示方法 一般有严格的形式化定义,以便于在计算机上实 现 如层次模型、网状模型、关系模型、面向对象模 型 v历史 -模型:entity-relationship model 1976年,p.p.s.chen提出-模型,用-图 来描述概念模型 v观点 世界是由一组称作的基本对象和这些对象之 间的构成的 v基本概念 实体、属性、实体集、键(键)、联系 v联系的种类 一对一 ve1中的一个实体与e2
5、中至多一个实体相联系,并且 e2 中的一个实体与e1中至多一个实体相联系 一对多 多对多 v一个实体集内的二元联系 一对一 vei e,至多存在一个ej e,与之相联系(ji) v如“职工”之间的“配偶”联系 一对多 v如“职工”内部的“领导”联系 多对多 v如“零件”之间的“构成”联系 职工职工领导领导 m 1 职工职工配偶配偶 1 1 构成构成零件零件 m n 例:学生选修课程 学生学生课程课程选修选修 姓名姓名学号学号系别系别 课程名课程名先修课先修课学分学分 成绩成绩 用矩形表示实用矩形表示实 体集,在框内体集,在框内 写上实体名写上实体名 用椭圆表示实用椭圆表示实 体的属性体的属性
6、用无向边用无向边 把实体与把实体与 其属性连其属性连 接起来接起来 用菱形表示实用菱形表示实 体间的联系体间的联系 将参与联系的实将参与联系的实 体用线段连接体用线段连接 mn 联系的联系的 数量数量 v键在e-r图中的表示 实体集属性中作为主键的一部分的属性用下划线 来标明。 学生学生 课程课程 选修选修 姓名姓名学号学号系别系别 课程名课程名先修课先修课学分学分 v结构数据模型的三要素 数据结构 数据操作 数据的完整性约束 v结构数据模型示例 层次模型 网状模型 关系模型 面向对象模型 各模型的数据结构、优缺点、如何表达er图中的 实体和联系 地址系名系号 教研室名教研室号年级姓名学号 职
7、称姓名职工号 系 教研室学生 教员 1 : n联系 实体型 r1101计算机d02 数据库r01g1王明s0012 教授何璧e1101 g2郑直s0020 g3周密s0199 网络r02 人工智能r03 讲师刘新e3721 教授王恩e1234 助教付弈e3721 学生学生课程课程 选课选课 年级姓名学号学分课程名课程号 成绩课程号学号 ac1s1 ac2s1 bc1s2 a-c2s2 cc1s3 s1 s2 s3 c1 c2 v用二维表来表示实体及其相互联系 属性属性 元组元组 男 女 男 性别 19 22 21 年龄 d01李红s02 d02王伟s03 d01张军s01 系号姓名学号 联系联
8、系 v三级模式 v两级映象 v两级数据独立性 vansi/x3/sparc(75,78)提出sparc报告, 其ansi模型将数据库模式分为外部级、概念 级、内部级 存储视图存储视图 概念视图概念视图 用户视图用户视图2 2用户视图用户视图3 3用户视图用户视图1 1 数据库数据库 内模式内模式 模模 式式 外模式外模式2 2外模式外模式3 3外模式外模式1 1 应用应用a a应用应用b b应用应用c c应用应用d d应用应用e e 外模式外模式/ /模式映象模式映象 模式模式/ /内模式映象内模式映象 vdbms功能 数据定义功能ddl、数据字典 数据操纵功能dml 数据保护功能 数据维护功
9、能 数据库存储管理 vdbms的构成 查询处理器、存储管理器 vddl语言(data description language) 描述外模式、模式、内模式、完整性、安全性 vdml语言(data manipulation language) 对数据库进行检索、插入、修改、删除 vdml类型 宿主型:dml不独立使用,嵌入到高级语言(主语言)程 序中使用 自含型:独立使用,交互式命令方式 vdml语句执行方式 宿主型:预编译和增强编译 自含型:解释执行 v过程性dml和非过程性dml v区分几个相关概念 v数据库系统的软硬件层次 v数据库系统的主要成分 v数据库管理系统的层次结构及其功能 v数据
10、库系统结构 v数据库 数据的集合 由dbms统一管理,多用户共享 v数据库管理系统dbms 系统软件,对数据库进行统一管理和控制 v数据库系统 带有数据库的整个计算机系统,包括硬件、软件、 数据、人员 索引数据文件统计数据数据字典 事务管理器 应用程序 目标代键 嵌入式dml 预编译器 dml 编译器 ddl 解释器 查询计算引擎 应用界面应用程序查询数据库模式 初级用户程序设计人员熟练用户数据库管理员 数据库管理系统 查询处理器存储管理器 用户 缓冲区管理器 文件管理器 磁盘存储器 数据库 系统结构 v用户 最终用户 v通过应用系统的用户接口(菜单等)使用数据库 应用程序员 v基于外模式来编
11、写应用程序 系统分析员 v负责应用系统的需求分析和规范定义,确定系统的软硬 件配置,参与数据库模式设计 数据库管理员dba v负责数据库的全面管理和控制 vdba职责 建库方面 v确定模式、外模式、存储结构、存取策略 v负责数据的整理和装入 用库方面 v定义完整性约束条件 v规定数据的保密级别、用户权限 v监督和控制数据库的运行情况 v制定后援和恢复策略,负责故障恢复 改进方面 v监督分析系统的性能(空间利用率,处理效率) v数据库重组织,物理上重组织,以提高性能 v数据库重构造,设计上较大改动,模式和内模式修改 v查询处理器 ddl编译器 dml编译器 嵌入式dml编译器 查询运行核心程序
12、v存储管理器 授权和完整性管理器 事务管理器 文件管理器 缓冲区管理器 v磁盘存储器中的数据结构 数据文件 数据字典 索引文件 统计数据 v关系模型的基本概念 元组、属性、关系模式、键、候选键、主键、外键 关系的性质 v关系模型的完整性 实体完整性 参照完整性 用户定义完整性 v关系代数 基本操作:选择、投影、笛卡儿积、并、差 扩展运算:交、连接、自然连接、外连接、除法 v关系验算 元组关系验算 域关系验算 v候选键(candidate key) 关系中的一个属性组,其值能唯一标识一个元组。若从属 性组中去掉任何一个属性,它就不具有这一性质了,这样 的属性组称作候选键 如dept中的d#,dn
13、都可作为候选键 v主键(primary key) 进行数据库设计时,从一个关系的多个候选键中选定一个 作为主键 如可选定d#作为dept的主键 v外键(foreign key) 关系r中的一个属性组,它不是r的键,但它与另一个关 系s的键相对应,则称这个属性组为r的外部键 如s关系中的d#属性 v实体完整性 关系的主键中的属性值不能为空值 空值:不知道或无意义 v参照完整性 如果关系r2的外键fk与关系r1的主键pk相对应, 则r2中的每一个元组的fk值或者等于r1 中某个元 组的pk 值,或者为空值 意义:如果关系r2的某个元组t2参照了关系r1的 某个元组t1,则t1必须存在 供应商号供应
14、商名所在城市 b01红星北京 s10宇宙上海 t20黎明天津 z01立新重庆 零件号颜色供应商号 010红b01 312白s10 201蓝t20 今要向关系p中插入新行, 新行的值分别列出如下。哪些 行能够插入? a(037,绿, s10) b(null,黄, t20) c(201,红, t20) d(105,蓝, b01) e(205,蓝, null) f(101,黄, t11) 零件关系p(主键是“零件号”,外键是“供应商 号”) 供应商关系s(主键是“供应商号”) v象集(image set) 关系r(x , z), x, z是属性组,x是x上的取值,定 义x在r中的象集为 zx = t
15、z | tr tx= x 从r中选出在x上取值为x的元组,去掉x上的分量, 只留z上的分量 x z 张军同学所选张军同学所选 修的全部课程修的全部课程 如何得到选修如何得到选修 了全部课程的了全部课程的 学生?学生? x=张军张军 z zx x 姓名课程 张军物理 王红数学 张军数学 课程 数学 物理 做法:逐个考虑选课关系中的元组r,求r在姓名 上的分量x,再求x在选课关系中的象集课程x,若 课程x包含了所有的课程,则x是满足条件的一个 元组 v除定义 r s 中每个元组t与s中每个元组s组成的新元组 一定在r中 vt = 1, 2, r-s(r) vw = (t s) r vv = 1,
16、2, r-s(w) vrs = t - v 物理 数学 课程 物理王红 数学张军 数学王红 物理张军 课程姓名 王红 张军 姓名 没有选修全部没有选修全部 课程的学生课程的学生 所有学生选所有学生选 修全部课程修全部课程 数学张军 数学王红 物理张军 课程姓名 物理王红 数学张军 数学王红 物理张军 课程姓名 课程课程 物理物理 姓名姓名 王红王红 张军张军 姓名姓名 王红王红 姓名姓名 张军张军 选修了全部选修了全部 课程的学生课程的学生 姓名姓名 王红王红 abcd abcd abef abde bcef edcd edef cd cd ef ab ab ed ab ab bc ed ab
17、cd abcd abef bccd bcef edcd edef r ab (r)s ab (r) cd (s) ab (r) cd (s)-r abcd bccd r s= ab ab bc ed ab bc -= 查询实例 学生关系s(s#,sname,age,sex) 课程关系c(c#,cname,teacher) 学习关系sc(s#,c#,grade) v示例 找年龄不小于20的男学生 age20 sex=male(s) v示例 找001号学生所选修的课程号 c#( s#=001 (sc) 求选修了001号课程的学生号 s#(c# = 001(sc) v示例 求选修了001号或002号
18、课程的学生号 方案1: s#(c# = 001 c# = 002(sc) 方案2: s#(c# = 001 (sc)s#(c# = 002(sc) v示例 求选修了001号而没有选002号课程的学生号 错误的写法: s#(c# = 001 c# 002(sc) 正确的写法: s#(c# = 001 (sc) s#(c# = 002(sc) v示例 求同时选修了001号和002号课程的学生号 错误的写法: s#(c# = 001 c# = 002(sc) 正确的写法: s#(c# = 001 (sc)s#(c# = 002(sc) v示例 求选修了001号课程的学生号和姓名。 s#,sname(
19、c# = 001 (s sc) 求选修了课程名为maths的学生姓名。 sname(cname = maths (s c sc) v列出所有老师的有关信息,包括姓名、工资、所教 授的课程 p# ,pn , sal , c# , cn(prof) pc c) 500李三p04 600 700 800 sal 孙立p03 钱广p02 赵明p01 pnp# 化学c03 数学c02 物理c01 cnc# p04c02 p02c02 p01c01 p#c# 数学c02500李三p04 数学c02700钱广p02 物理c01800赵明p01 cnc#salpnp# 问题:有关问题:有关p03 号职工的姓名
20、和号职工的姓名和 工资信息没有显工资信息没有显 示出来。示出来。 500李三p04 600 700 800 sal 孙立p03 钱广p02 赵明p01 pnp# 化学c03 数学c02 物理c01 cnc# p04c02 p02c02 p01c01 p#c# 数学c02500李三p04 数学c02700钱广p02 物理c01800赵明p01 cnc#salpnp# 所有老师的信息所有老师的信息 p03 孙立 600nullnull v示例 求同时选修了所有课程的学生号 方案1: s#,c#(sc) c# (c) 方案2: s#(sc c#(c) 哪一个正确? 课程 数学 物理 姓名课程成绩 张
21、军物理93 王红数学86 张军数学93 王红物理92 课程 数学 物理 姓名课程 张军物理 王红数学 张军数学 王红物理 姓名 张军 王红 姓名成绩 张军93 选修了全部课选修了全部课 程并且成绩都程并且成绩都 相同的学生相同的学生 选修了全部选修了全部 课程的学生课程的学生 v求没有选修c1号课程的学生 所有学生 选修了c1号课程学生 s(sc) -s#(c# = c1 (sc) s#(c# c1 (sc) 哪一个正确?哪一个正确? 仅选仅选c1号课程之外的其他学生号课程之外的其他学生 v求仅选修了c1号课程的学生号 选修c1号课程的学生仅选c1号课程之外的学生 s(sc) -s#(c# c
22、1 (sc) s#(c# = c1 (sc)s#(scc# = c1 (sc) s#c# s1c1 s1c2 s2c1 s3c2 s#c# s1c1 s2c1 s#c# s1c2 s3c2 v求选修c1课程比s1学生的该门课程成绩高的 学生 sc sc (s1, c1, g1, ?, c1, g2), g1 2 abc 456 789 r2= t | r(t) s(t) abc 123 346 r3= t | ( u)(s(t) r(u) t3 u1 r.bs.cr.a 534 837 867 897 r5= t | (u)(v) (r(u) s(v) u1v2 t1=u2 t2=v3 t3=
23、u1 v元组关系演算与关系代数的等价性 投影 a( r ) = t | sr ( sa = ta ) 选择 f(a)(r) = t | r(t) f(ta) 广义笛卡儿积 r(a) s(b) = t | urss( ta = ua tb = sb) 并 rs= t | r(t) s(t) 差 rs= t | r(t) s(t) 设r和s都是二元关系,试把关系代数表达式1, 4(2 = 3 (rs)转换为元组表达式 rs = t | (u) (v) (r(u) s(v) t1=u1 t2=u2 t3=v1 t4=v2) 2 = 3 (rs) = t | (u) (v) (r(u) s(v) t1
24、=u1 t2=u2 t3=v1 t4=v2) t2=t3 1,4(2 = 3 (rs) = w | (u) (v) (t) (r(u) s(v) t1=u1 t2=u2 t3=v1 t4=v2) t2=t3 w1=t1 t2=t3 1,4(2 = 3 (rs) = w | (u) (v) (r(u) s(v) u2=v1) w1=u1 w2=v2 v求选修了001号课程的学生号及其成绩 t | (u)(sc(u) u2=001 t1=u1 t2=u3) v求选修了001号课程的学生号及其姓名 t | (u) (v)(s(u) sc(v) v2=001 u1=v1 t1=u1 t2=u2) v求
25、选修了课程名为maths的学生号及其姓名 t | (u) (v) (w)(s(u) sc(v) c(w) v2=w1 w2=maths u1=v1 t1=u1 t2=u2) v求选修了001号或002号课程的学生号 t | (u)(sc(u) (u2=001 u2=001) t1=u1) v求至少选修了001号和002号课程的学生号 t | (u) (v)(sc(u) sc(v) u2 = 001 v2=002 u1=v1 t1=u1) v求没有选修001号课程的学生号和姓名 t | (u) (v)(s(u) sc(v) (u1 = v1 v2 001) t1=u1 t2=u2) v求选修了全
26、部课程的学生姓名 t | (u) (v)(w)(s(u) c(v) sc(w) (u1 = w1) (v1=w2) t1=u2) v求选修了s3所学全部课程的学生号 t | (u) (sc(u) (v)(sc(v) v1=s3 (w)(sc(w) (w1 = u1) (w2=v2) t1=u1) abc 123 456 789 abc 123 346 569 rs abc 456 r1= xyz | r(xyz) x3 abc 123 456 789 346 r2= xyz | r(xyz) (s(xyz) y=4) de 75 48 w bda 574 877 847 r2= xyz | (
27、u) (u) (r(zxu) w(yv) uv) v求选修了001号课程的学生号及其成绩 t1t2 | (u1) (u2) (u3)(sc(u1u2u3) u2=001 t1=u1 t2=u3) v求选修了001号课程的学生号及其姓名 t1t2 | (u1) (u2) (u3) (u4)(v1)(v2)(v3) (s(u1u2u3u4) sc(v1vv2v3) v2=001 t1=u1 t2=u2) t | (u) (v)(s(u) sc(v) v2=001 u1=v1 t1=u1 t2=u2) s(s#, sname, age, sex) c(c#, cname, teacher) sc(s
28、#, c#, grade) 求选修了刘老师课程的女学生的学号及姓名 s#, sname(teacher=liusex=f(s sc c) s#, sname(teacher=liusex=f(l (sc.c#=c.c# sc.s#=s.s#(s sc c) l=s#,sname,age,sex,c#,cname,teacher,grade vsql概述 vsql数据定义功能 vsql数据查询功能 vsql数据修改功能 vsql数据控制功能 v嵌入式sql v历史 1970年,e.f.codd提出关系模型 1974年,由boyce和chamber提出;1975-1979年,在 system r上
29、实现,由ibm的san jose研究室研制 v标准化 sql-86:“数据库语言sql” sql-89:“具有完整性增强的数据库语言sql”,增加了对 完整性约束的支持。 sql-92:“数据库语言sql”,是sql-89的超集,增加了 许多新特性,如新的数据类型,更丰富的数据操作,更强 的完整性、安全性支持等。 sql-3:正在讨论中的新的标准,将增加对面向对象模型的 支持。 v特点 一体化 集ddl,dml,dcl于一体。 单一的结构-关系,带来了数据操作符的统一。 面向集合的操作方式 一次一集合。 高度非过程化 用户只需提出“做什么”,无须告诉“怎么做”,不必了解存取路 径。 两种使用方
30、式,统一的语法结构 sql既是自含式语言(用户使用),又是嵌入式语言(程序员使 用)。 语言简洁,易学易用 sql功能功能操作符操作符 数据查询数据查询select 数据定义数据定义create,drop 数据操纵数据操纵insert,update,delete 数据控制数据控制grant,revoke v模式的定义 v基本表的定义 v索引的定义 v视图的定义 v基本表的定义(create) 格式 create table 表名( 列名 数据类型 not null ,列名 数据类型 not null ,primary key(列名 ,列名 ) ,foreign key (列名 ,列名 ) re
31、ferences 表名 (列名 ,列名 ) ,check(条件) 示例 create table s ( s# char(4), sname char(8) not null, age smallint, sex char(1), primary key (s#), check (sex=0 or sex=1) ) create table c ( c# char(4), cname char(10) not null, teacher char(8), primary key (c#), ) create table sc (s# char(4), c# char(4), grade sam
32、llint, primary key (s#,c#), foreign key (s#) references s(s#), foreign key (c#) references c(s#), check(grade is null) or grade between 0 and 100) v索引的定义 格式 create unique index 索引名 on 表名 (列名 asc | desc, 列名asc | desc ) unique:唯一性索引,不允许表中不同的行在 索引列上取相同值。若已有相同值存在,则系 统给出相关信息,不建此索引。系统并拒绝违 背唯一性的插入、更新。 示例:
33、create index s-index on s(s#) vsql数据查询基本结构 vselect子句 v重复元组的处理 vfrom子句 vwhere子句 v更名运算 v字符串操作 v元组显示顺序 v集合操作 v分组和聚集函数 v空值 v嵌套子查询 v派生关系 v视图 v关系的连接 v基本结构 select a1 , a2 , , an from r1 , r2 , , rm where f a1 , a2 , , an(f(r1 r2 rm) v语法约束 缺省为保留重复元组,也可用关键字all显式指明。 若要去掉重复元组,可用关键字distinct或 unique指明。 v示例 找出所有选
34、修课程的学生。 select distinct sno from sc v说明 from子句列出查询的对象表。当目标列取自多个表时,在 不混淆的情况下可以不用显式指明来自哪个关系。 v示例 找出选修了c2课程的学生号及姓名。 select s.s# , sname from s , sc where s.s# = sc.s# and c# = c2 v格式 old_name as new_name 为关系和属性重新命名,可出现在select和from子句 中。 v示例 属性更名 例:给出所有学生的姓名、年龄 select sname as 姓名,age as 年龄 from s 关系更名 找出
35、年龄比王伟同学大的同学的姓名及年龄。 select s1.sname,s1.age from s as s1,s as s2 where s1.age s2.age and s2.sname = 王伟 找出选修了c1和c2课程的学生号 select x.s# from sc as x,sc as y where x.s# = y.s# and x.c# = c1 and y.c# = c2 v命令格式 like:找出满足给定匹配条件的字符串。 格式:列名 not like “字符串” 匹配规则: “%” :匹配零个或多个字符。 “”:匹配任意单个字符。 列出名称中含有4个字符以上,且倒数第3个
36、字符是d,倒 数第2个字符是_的课程的所有信息。 select * from c where cname like “% d ” v命令 order by 列名 asc | desc v示例 按年龄升序列出学生信息,相同年龄学生按姓名 降序排列。 select * from s order by age asc,sname desc v命令 集合并:union 集合交:intersect 集合差: except v示例 求选修了001或(且)002号课程的学生号。 (select sno from sc where cno = 001) union (intersect) (select sn
37、o from sc where cno = 002) v分组命令 group by 列名 having 条件表达式 group by将表中的元组按指定列上的值相等的原则 分组,然后在每一分组上使用聚集函数,得到单一 值。having则对分组进行选择,只将聚集函数作用 到满足条件的分组上。 v聚集函数 平均值:avg 最小值:min 最大值:max 总和:sum 记数:count count(*):):计算集合中元组个数计算集合中元组个数 列出及格的学生的平均成绩。 select s#,avg(grade) from sc group by s# having min(grade) = 60 s
38、elect sno,avg(score) from sc (where score =60 group by sno 列出每一年龄组中男学生(超过50人)的人数 select age,count(s#) from s where sex = m group by age having count(*) 50 v空值测试 is not null 测试指定列的值是否为空值。 v示例 找出年龄值为空的学生姓名。 select sname from s where age is null 不可写为where age = null v注意事项 除is not null之外,空值不满足任何查找条件。 如果
39、null参与算术运算,则该算术表达式的值为 null。 如果null参与比较运算,则结果可视为false。在 sql-92中可看成unknown。 如果null参与聚集运算,则除count(*)之外其它聚 集函数都忽略null。 vin 子查询 表达式表达式 not in (子查询)子查询) 判断表达式的值是否在子查询的结果中。 v示例 列出张军和王红同学的所有信息。 select * from s where sname in (“张军”,“王红”) v示例 选修了001号课程的学生的学号及姓名。 select s#,sname from s where s# in (select s# f
40、rom sc where c# = 001) 列出选修了001号和002号课程的学生的学号。 select s# from sc where sc.c# = 001 and s# in (select s# from sc where c# = 002) vsome/all子查询 表达式表达式 比较运算符比较运算符 some (子查询)子查询) 表达式的值至少与子查询结果中的一个值相比满 足比较运算符 。 表达式表达式 比较运算符比较运算符 all (子查询)子查询) 表达式的值与子查询结果中的所有的值相比都满 足比较运算符。 0 5 6 (5 some) = true 0 5(5 some)
41、 = true 0 5 ) = false(5 some 0 5 ) = true(5 = some 0 5 6 (5 all) = false 4 6(5 all) = true 6 10 ) = true(5= all (select avg(grade) from sc group by s#) v测试集合是否为空 not exists (子查询) 判断子查询的结果集合中是否有任何元组存在。 列出选修了01号课程的学生的学号及姓名。 select s#,sname from s where exists (select * from sc where c# = 01 and s# = s
42、.sno) 列出选修了001号和002号课程的学生的学号。 select s# from sc sc1 where sc1.c# = 001 and exists (select s# from sc sc2 where sc2. c# = 002 and sc2.s# = sc1.s#) 注:in后的子查询与外层查询无关,每个子查询 执行一次,而exists后的子查询与外层查询有关, 需要执行多次,称之为相关子查询。 列出选修了全部课程的学生姓名。 select sname from s where not exists (select c# from c where not exists
43、(select * from sc where sc.c# = c.c# and sc.s# = s.s# ) ) 任意课程,所求学生 选之。 不存在任何一门课程, 所求学生没有选之。 v测试集合是否存在重复元组 unique (子查询) 如果子查询结果中没有重复元组,则返回如果子查询结果中没有重复元组,则返回true。 v示例 找出所有只教授一门课程的老师姓名。 select pname from prof where unique (select pno from pc where pc.pno = prof.pno) 找出至少选修了两门课程的学生姓名。 select sname from
44、 s where not unique (select sno from sc where sc.sno = s.sno) v思考 unique (a , b , null) , (a , b , null) ? v定义视图 create view view_name(列名,列 名 ) as (查询表达式) with check option 视图的属性名缺省为子查询结果中的属性名,也可视图的属性名缺省为子查询结果中的属性名,也可 以显式指明。以显式指明。 with check option指明当对视图进行指明当对视图进行insert, update时,要检查是否满足视图定义中的条件。时,要检
45、查是否满足视图定义中的条件。 v撤消视图 drop view view_name 自然连接:自然连接:出现在结果关系中的两个连接关系的 元组在公共属性上取值相等,且公共属性只出现 一次。 内连接:内连接:舍弃不匹配的元组。 左外连接:左外连接:内连接 + 左边关系中失配的元组(缺 少的右边关系属性值用null表示)。 求选修了c2课程的学生名 select sname from s, sc where s.s# = sc.s# and sc.c# = c2 select sname from (s nature inner join sc) where c# = c2 列出老师的教工号、姓名、
46、工资、所教课程号 select pno,pname,sal,cno from (prof nature left outer join pc) selectpno,pname,sal,cno fromprof, pc whereprof.pno = pc.pno union selectpno,pname,sal,null fromprof wherepno not in (select pno from pc) v命令 insert into 表名 (列名,列名 values (值 ,值) 插入一条指定好值的元组插入一条指定好值的元组 insert into 表名 (列名,列名 (子查询)
47、插入子查询结果中的若干条元组插入子查询结果中的若干条元组 v示例 insert into s values ( s123, “王明”, 21, m) insert into s (s#, sname) values ( s123, “王 明”) 思考:age,sex取何值?如何防止插入带有空值的元组? 将平均成绩大于90的学生加入到excellent中。 insert into excellent ( sno, grade) select sno , avg(score) from sc group by (sno) having avg(score) 90 v命令 delete from 表
48、名 where 条件表达式 从表中删除符合条件的元组,如果没有 where语句,则删除所有元组。 v示例 清除所有选课记录 delete from sc 删除王明同学所有的选课记录。 delete from sc where s# in (select s# from s where sname = “王明”) 删除低于平均成绩的学生选课记录。 delete from sc where grade (select avg(grade) from sc) v命令 update 表名 set 列名 = 表达式 | 子查询 列名 = ,表达式 | 子查询 where 条件表达式 指定对哪些列进行更新
49、,以及更新后的值是什么。 v示例 学生年龄增加一岁。 update s set age = age + 1 将女学生的成绩提高5% update sc set grade = grade * 1.05 where s# in (select s# from s where sex = f) 当c1课程的成绩小于该课程的平均成绩时,将该 成绩提高5% update sc set grade = grade * 1.05 where c# = c1 and grade 1 ) ) 思考:一个关系模式有n个属性,那么在 它上面成立的所有可能的函数依赖有多 少个?非平凡的函数依赖又有多少个? 如果x
50、y,但y x,则称其为非平凡的 函数依赖,否则称为平凡的函数依赖 如(s#,sn) sn是平凡的函数依赖 f (s#,c#) sn p f 在r(u)中,如果xy,且对于任意x的真子集x, 都有 ,则称y对x完全函数依赖,记作 p 否则称为y对x部分函数依赖,记作 s# sd,sd dean 在r(u)中,如果: 则称z对x传递函数依赖 f p p (s#,c#) g s# sn,(s#,c#) sn s# sd,(s#,c#) sd sd dean 关系模式s(s#, sn, sd, dean, c#, g) 函数依赖 v定义 关系中每一分量不可再分。即不能以集合、序列 等作为属性值 s#c
51、# s1c1,c2,c3 s#c# s1c1 s1c2 s1c3 1nf s#snsddea n c#g s#snsddeanc#g s01杨明d01思齐c0190 s02李婉d01思齐c0187 s01杨明d01思齐c0292 s03刘海d02述圣c0195 s04安然d02述圣c0278 s05乐天d03省身c0182 v定义 若r1nf,且每个非主属性完全依赖于码,则 称r2nf 消除非主属性对码的部分依赖 如s2nf,因为 p p (s#,c#) sn (s#,c#) sd v改造 非主属性有两种,一种完全依赖于码,一种部分 依赖于码。 将s分解为: sc(s# , c# , g) s
52、_sd(s# , sn , sd , dean) v快速热身 关系模式r(a,b,c,d),码为ab,给出它 的一个函数依赖集,使得r属于1nf而不属于2nf s#snsddean s01杨明d01思齐 s02李婉d01思齐 s03刘海d02述圣 s04安然d02述圣 s05乐天d03省身 s#c#g s01c0190 s02c0187 s01c0292 s03c0195 s04c0278 s05c0182 s#snsddea n s#c#g v定义 关系模式r中,若不存在这样的码x,属 性组y及非主属性z(z y),使得下式成立, xy , yz , yx 则称r3nf 消除非主属性对码的传
53、递依赖 如s_sd 3nf,因为有s#sd,sddean v改造 将s分解为 student(s# , sn , sd) dept(sd , dean) v快速热身 关系模式r(a,b,c,d),码为ab,给出它 的一个函数依赖集,使得r属于2nf而不属于3nf s#snsd s01杨明d01 s02李婉d01 s03刘海d02 s04安然d02 s05乐天d03 sddean d01思齐 d02述圣 d03省身 c#t#s# stc 3nf ? s#t#c# s1t1c1 s2t2c2 s3t3c2 s3t1c1 v定义 关系模式r中,对于属性组x,y,若 xy且y x时x必含有码,则r b
54、cnf 如spc bcnf,因为t# c#,而t不含有码 v改造 将s分解为(s#,t#),(t#,c#) s#t# s1t1 s2t2 s3t3 s3t1 t#c# t1c1 t2c2 t3c2 关系模式teach(c#,t#,b#),一门课程由多 个教员担任,一门课程使用相同的一套参考书。 它的码是(c#,t#,b#),所以属于bcnf c#t#b# c1t1b1 c1t1b2 c1t2b1 c1t2b2 c2t1b3 c2t1b4 c2t3b3 c2t3b4 c#t#b# c1t1,t2b1,b2 c2t1,t3b3,b4 形式化形式化:关系模式r(u),x、y、zu, z=ux y,对
55、于r(u)的任一关系r,若存在元组 t1,t2,使得t1x = t2x,那么就必然存在元组 t3,t4,使得: t3 = (t1x, t1y, t2z) t4 = (t2x, t2y, t1z) 则称y多值依赖于x,记作x y 若(c#, t#, b#)满足c#t#,含有元组t1=(c1, t1, b1),t2=(c1, t2, b2),则也一定含有元组 t3=(c1, t1, b2),t2=(c1, t2, b1)。 v找出关系上所满足的多值依赖 abc a1b1c1 a1b1c2 a2b1c1 a2b1c3 cb?若使bc成立,需加入哪些元组? abc a1b1c3 a2b1c2 v性质
56、多值依赖具有对称性,即 若xy,则xz,其中z=uxy 函数依赖是多值依赖的特例,即 若xy,则xy 若xy,uxy=,则称xy为平凡的多 值依赖 v区别 函数依赖规定某些元组不能出现在关系中,也称 为相等产生依赖 多值依赖要求某种形式的其它元组必须在关系中, 称为元组产生依赖 v有效性范围 xy的有效性仅决定于x、y属性集上的值,它 在任何属性集w(xy w u)上都成立 若xy在r(u)上成立,则对于任何y y,均有 xy 成立 xy的有效性与属性集范围有关 xy在属性集w(xy w u)上成立,但 在u上不一定成立 xy在u上成立 xy在属性集w(xy w u)上成立 若在r(u)上,x
57、y在属性集w(xy w u)上 成立,则称xy为r(u) 的嵌入式多值依赖 若xy在r(u)上成立,则不能断言对于y y, 是否有xy 成立 a b c d a1 b1 c1 d1 a1 b1 c2 d1 a1 b2 c1 d2 a1 b2 c2 d2 ab在在 abc上成上成 立,而在立,而在 abcd上不上不 成立成立 abc 成立成立 ab不不 成立成立 abcd a1b1c1d1 a1b1c1d2 a1b2c2d1 a1b2c2d2 v任何一个二目关系模式任何一个二目关系模式r(a,b)一定属于一定属于 bcnf吗?一定属于吗?一定属于4nf吗?吗? v一个所有候选键都是单属性的关系模
58、式最高一个所有候选键都是单属性的关系模式最高 一定可以达到第几范式一定可以达到第几范式? v一个全是主属性的关系模式最高一定可以达一个全是主属性的关系模式最高一定可以达 到第几范式?到第几范式? v一个全码的关系模式最高一定可以达到第几一个全码的关系模式最高一定可以达到第几 范式?范式? v3nf 2nf 反证:若r3nf, 但r2nf,则按2nf定义, 一定有非主属性部分依赖于码 设x为r的码,则存在x的真子集x,以及非主属 性z(z x),使得xz 于是在r中存在码x,属性组x,以及非主属性z (z x) ,使得xx, xz,xx成立,这 与r3nf矛盾。 所以r2nf vbcnf 3nf
59、 反证:若rbcnf, 但r3nf,则按3nf定义, 一定有非主属性对码的传递依赖,于是存在: r的码x ,属性组y,以及非主属性z(z y), 使得xy, y z,yx成立 由yz,按bcnf定义,y含有码,于是yx成 立,这与yx矛盾。 所以r3nf v如何判断关系模式的范式级别? v如何求关系模式的候选码? v问题 给定一组函数依赖,是否能导出另外一些函数依 赖,或另外的函数依赖是否成立? 如fd=a b,b c,a c是否成立? v逻辑蕴涵 varmstrong公理系统 v闭包的计算 v函数依赖的等价和覆盖 v定义 关系模式r,f是其函数依赖,x,y是其属性子 集,如果从f的函数依赖能
60、够推出xy,则称f xy,记作f xy 被f所逻辑蕴涵的函数依赖的全体所构成的集合 称作f的,记作f+ = xy | f xy v示例 r(x, y), f = xy f+ = x, xx, xy, xxy, y, yy xy ,xyx,xyy,xyxy v推理规则系统 正确的、完备的推理规则集 公理、定理、推论(如欧几里德集合) varmstrong公理 x,y,z是属性集, 自反律(reflexivity):若y x, 则x y 增广律(augmentation):若x y ,则xz yz 传递律(transitivity):若x y,y z,则x z v由armstrong公理导出的推理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国金属包装容器制造行业现状调研及未来建设发展趋势预判研究报告
- 2025-2030中国速溶豆奶粉行业发展分析及发展前景与投资研究报告
- 2025-2030中国运动鞋行业市场深度调研及发展策略研究报告
- 2025-2030中国软胶囊包装机行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国车辆子午线轮胎行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国西餐行业市场发展前瞻及投资战略研究报告
- 2025-2030中国被褥行业市场发展趋势与前景展望战略分析研究报告
- 2025-2030中国蒸汽灭菌指示带行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国营养品行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030中国节拍器行业市场发展趋势与前景展望战略研究报告
- 《道德与法治》六年级下《我们爱和平》课件
- 卫生法(教学讲解课件)
- 高三冲刺100天励志主题班会课件
- 全国工业产品生产许可证申请书
- 德能勤绩廉个人总结的
- 中层干部岗位竞聘报名表格评分表格评分标准
- 思想道德与法治课件:第六章 第一节 社会主义法律的特征和运行
- 有限空间作业及应急物资清单
- 《个人信息保护法》解读
- 新疆高速公路建设工程季节性施工方案
- 新版(七步法案例)PFMEA
评论
0/150
提交评论