




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库系统基础教程A First Course in Database Systems,2,上海交通大学计算机系 蒋 建 伟 62932358 ,3,教材,Jeffrey D.Ullman,Jennifer Widom.A First Course In Database Systems 或中译本数据库系统基础教程,清华大学出版社,4,参考,/ ullman/fcdb.html C.J.Date.An Introduction to Database System (Ed.7) Raghu Ramakrishnan,Johannes Gehrk
2、e. Database Management Systems (Ed.2) 萨师煊,王珊.数据库系统概论(第三版),5,本课程内容,数据库的建模和设计 ODL及E/R 关系模型及关系代数 范式设计 数据库编程:查询和修改操作 SQL - Structured Query Language 产品与工具,第一章 数据库系统的世界The Worlds of Database Systems,数据库系统的发展 数据库管理系统的结构 未来的数据库系统,7,1.1 数据库系统的发展c,一、术语 1.数据库 是长期储存在计算机内的、有组织的、可共享的数据的集合。,8,2.数据库管理系统 DBMS - Dat
3、aBase Management System 是处理数据库访问的软件。 提供数据库的用户接口。 DBMS的目的: 提供一个可以方便地、有效地存取数据库信息的环境,9,3.数据库系统 是指在计算机系统中引入数据库后的系统,10,数据库系统构成,11,保存信息的两种不同方法: 永久性的系统文件、数据库系统。 文件方式的问题: 数据的冗余和不一致 数据访问困难 数据孤立 完整性问题 原子性问题 并发访问异常 安全性问题,二、文件系统与数据库系统,12,数据库方法能较好地解决以上的问题 数据的独立性 有效地访问数据 减少应用程序的开发时间 数据的一致性和安全性 统一的数据管理 并发的数据访问,三、为
4、什么用数据库,13,几种模型: 基于树的层次模型 基于图的网状模型 物理相关、无高级查询语言 基于表的关系模型 物理无关、支持高级查询语言, 基于对象的面向对象模型 OO OR,四、数据库模型的发展,定长记录,14,关系数据库系统,15,关查询语言 SQL语言 SELECT balance FROM Accounts WHERE accountNO = 67890;,关系数据库系统,16,DBMS的组成 数据、元数据 存储管理程序 事务管理程序 查询处理程序,1.2 数据库管理系统的结构,17,数据、元数据 关于数据结构的信息(关于数据的数据) 索引(INDEX),DBMS的组成,18,存储管
5、理程序 文件管理程序 缓冲区管理查程序,DBMS的组成,19,查询处理程序 查询优化 磁盘访问,是查询的主要代价; 索引是查询优化的利器,DBMS的组成,20,事务管理程序 事务:是用户定义的一个数据库操作序列 事务的四个特性 原子性A 一致性C 隔离性I 持久性D,DBMS的组成,21,客户-服务器程序体系结构 浏览器-服务器体系结构,DBMS的组成,22,客户-服务器程序体系结构 浏览器-服务器体系结构,1.3 未来的数据库系统,第二章 数据库建模Database Modeling,24,数据库的设计步骤,需求收集和分析 设计概念结构 设计逻辑结构 设计物理结构 物理实现,25,数据库的设
6、计步骤,需求收集和分析 用户关心什么 用户要什么结果 设计概念结构 设计逻辑结构 设计物理结构 物理实现,26,数据库的设计步骤,需求收集和分析 设计概念结构 存什么 关系(联系)如何 ODL或E/R图,是各种数据模型的共同基础 设计逻辑结构 设计物理结构 物理实现,27,数据库的设计步骤,需求收集和分析 设计概念结构 设计逻辑结构 用什么数据模型 数据库的模式(database schema) 用户子模式 设计物理结构 物理实现,28,数据库的设计步骤,需求收集和分析 设计概念结构 设计逻辑结构 设计物理结构 数据怎么存 根据DBMS产品、环境特点 物理实现,29,数据库的设计步骤,需求收集
7、和分析 设计概念结构 设计逻辑结构 设计物理结构 物理实现 运行DDL 装入测试数据 应用程序,30,数据库的设计步骤,想法 需求,ODL,E / R,关系,RDBMS,OODBMS,31,2.1 ODL,对象定义语言 Object Definition Language 以面向对象的观点、方法,说明数据库的概念结构 可方便地直接转换成 OODBMS 的说明 经过努力,可以转换成 RDBMS 的说明,32,面向对象的设计,对象标识 OID 对象与对象的区别 类 具有相同特性的对象归为一类 对象的归并必须有意义 属于同一类的对象其特性必须相同,33,面向对象的设计,对象的三个特性 属性:特性 联
8、系:引用 方法:函数 接口说明 interface ,34,属性 对象某方面的特征,属性就是数据 只由基本数据类型构成 属性的类型,不能是类、也不能从类中构造 Interface Movie /Movie Class 的ODL说明 attribute stringtitle; attribute integeryear; attribute integerlength; attribute enum Film color, blackAndWhite filmType; ;,35,Interface Star attribute stringname; attribute StructAddr
9、 string street,string city address; ;,36,联系 对象的引用 对象的关联 对象集合的引用(1:N) Relationship Set stars; 单一对象集合的引用(1:1) Relationship Star starOf;,37,反向联系 ODL要求显式表示存在的反向联系 Interface Movie /Movie Class 的ODL说明 attribute stringtitle; attribute integeryear; attribute integerlength; attribute enum Film color, blackAn
10、dWhite filmType; relationship Set stars inverse Star : starredIn; /Star与Movie的联系 ;,38,联系的多重性 N:N 在联系中,每个C都和D的集合有关,而在反向联系中,每个D都和C的集合有关 N:1 在联系中,每个C都和唯一的D有关,而在反向联系中,每个D都和C的集合有关 1:1 在联系中,每个C都和唯一的D有关,而在反向联系中,每个D都和唯一的C有关,39,Interface Moive relationship Set stars inverse Star : staredIn; relationship Stud
11、io ownedBy inverse Studio : owns; ; Interface Star relationship Set staredIn inverse Moive : stars; ; Interface Studio relationship Set owns inverse Moive : ownedBy; ;,40,ODL中的类型 基本类型 原子类型 接口类型 结构类型,可由以下类型组合而成 集合 无重复,次序无关 包 可重复,次序无关 列表 可重复,次序相关 数组 结构,41,2.2 实体联系图(E/R),用图形的方法,描述实体及实体间的联系 世界由一组称作实体的基本
12、对象及这些对象间的联系组成 元素 实体(Entity) 客观存在并可相互区别的事件或物体 对应于ODL中的对象 实体集(Entity Set) 同类(具有相同类型、相同性质)实体的集合 对应于ODL中的类 用矩形表示,42,2.2 实体联系图(E/R),元素 属性(Attribute) 实体所具有的某一特性 用与实体集相连的椭圆表示 联系(Relationship) 实体集之间的关联 可涉及多个实体集 可表示双向的联系 用与相应的实体集相连的菱形表示,43,Movies,Stars,Stars-in,lenght,filmType,title,year,name,address,44,E/R联
13、系的多重性 N与1的表示,Movies,Stars,Stars-in,Studios,Presidents,Runs,Movies,Studios,Owns,45,联系的多向性 E/R图能方便地描述两个以上实体集间的联系,46,联系中的角色 实体集在联系中的作用 参与联系的实体集互异 只标注联系名 同一实体集在一个联系中多次出现 标注联系名及角色名,47,联系中的属性 联系中可以包含属性 由联系而产生的属性 可为由联系产生的属性建立实体集,Stars,Movies,Contracts,Studios,salary,48,将多向联系转换成二元联系 新增连接实体集 引入连接实体集至原实体集的多对一
14、的联系,49,2.3 设计原则,真实性 设计应当忠于规范 存什么 避免冗余 任何事物只表达一次 避免引入过多的元素 选择合适的元素类型 属性? 类/实体集? 联系集?,50,2.4 子类,特殊化与概括 子类与超类 属性的继承,51,ODL中的子类 子类继承其超类的所有特性 属性 联系 Interface Cartoon : Movie relationship set voices; ,52,ODL中的多重继承 类的层次 一个类可以有多个超类 Interface MurderMystery : Movie attribute string weapon; Interface Cartoon-M
15、urderMystery : Cartoon,MurderMystery ,53,E/R中的子类 Isa E/R中的继承,54,2.5 对约束的建模,建模包含对现实世界的对象及联系的描述,也包含对它们的一些约束 键码 单值约束 参照完整性约束 域的约束 一般约束,55,键码 在类的范围内唯一标识一个对象(或者在实体集的范围内唯一标识一个实体)的属性或属性集 一个类中的两个对象(或一个实体集中的两个实体)在构成键码的属性集上取值不能相同 ODL中键码的表示 interface Movie ( key (title,year) ) ,56,超码 一个或多个属性的集合,能在一个实体集中唯一地标识一个
16、实体 一个类(或实体集)中可能有多个超码 候选码 其任意真子集都不为超码的超码 一个类(或实体集)中可能有多个候选码 主码 从候选码中选取的一个,一个类(实体集)中只有一个主码 E / R图中只能表示主码:主码属性名加上下划线,57,单值约束 要求某个角色的值是唯一的,如键码 当一个属性为单值时 可以要求该属性值存在(not null) 可以允许该属性值任选(null) 构成键码的属性,必须有值存在(not null),58,参照完整性约束 要求由某个对象引用的值在数据库中确实存在 参照与被参照、引用与被引用 参照完整性约束的操作(各产品不同) 禁止删除被引用的对象 级联删除 / 修改 E/R
17、图中参照完整性的表示,59,2.6 弱实体集,弱实体集的属性不足以形成主码 有主码的实体集称为强实体集 弱实体集只有作为一对多联系的一部分(多)才有意义 弱实体集与其拥有者之间的联系是标识性联系,60,2.7 关于联系集,联系集的成份 参加联系的实体集的主码 联系集的属性 联系中属性的决策(二元联系) 1:1 联系集的属性:放到任意一端 1:N 联系集的属性:放到 N 端 N:M联系集的属性:只能留在联系集中,61,联系集的取舍(二元联系) 1:1联系:将一端的主码作为另一端的属性 1:N联系:将一端的主码作为 N 端的属性 N:M联系:必须保留联系集 联系集的键码(二元联系) 1:1联系:任
18、意一端的主码 1:N联系:N端的主码 N:M联系:参加联系的所有实体集的主码,62,ODL、E/R建模 关心:存什么数据、关系如何 不关心:用什么数学模型、DBMS产品 透过E/R图,便于与用户交流,63,作业 思考所有带*的练习,并上网查阅解答 练习2.1.7 / 2.2.8 / 2.3.2 / 2.5.3 / 2.5.4 /2.6.4(a),第三章 关系数据模型The Relational Data Model,65,ODL、E/R到关系模型的转换 关系模型的设计理论,66,3.1 关系模型的基本概念,逻辑数据模型 是用户从数据库所看到的数据模型 与DBMS有关 层次、网状、关系、面向对象
19、,67,关系数据模型 数据结构 两维的扁平表 数据操作 关系代数 关系演算 数据的完整性 实体完整性 参照完整性 用户定义的完整性,68,现实世界的实体以及实体间的各种联系均用关系表示 关系数据库系统是建立在关系模型上的数据库系统 关系数据库是表的集合,69,模型和模式 数据模型是描述数据的手段 数据模式是用给定的数据模型对具体数据的描述 属性 元组 域 型 值 联系 关系的联系是通过关联属性的值连接的,70,元组 (行、记录),Student ( sno, sname, ssex, sage, sdept ),71,关系实例 关系 实体集、类 关系的实例 元组的集合 元组 实体、对象 数据库
20、实例 给定时刻数据库中数据的一个快照,72,3.2 从ODL设计到关系设计,ODL设计是概念设计的产物 ( Using OO ) ODL描述 关系模式 实现,73,ODL属性 关系属性 原子属性 类 关系 属性 属性 非原子属性(复杂数据类型) 必须转换成原子属性 记录结构 结构的每个item对应一个属性 多值集合 针对每个值建立一个元组 会产生冗余 需规范化,74,ODL属性 关系属性 (续) 其他类型属性 (包、数组、列表) 针对每个元素建立一个元组 增加一个记数属性,表示包的成员号 定长数组 扩展为多个属性,75,ODL联系 关系描述 单值联系 联系的类型为一个类 增加一个(组)属性,存
21、放相关类的键码属性(组) 将类之间的联系 关系之间的联系,76,ODL联系 关系描述(续) 多值联系 联系的类型为某个类的集合类型 1 : N、N : M 增加一个键码属性 为集合的每个成员建立一个元组 其他原始属性重复多次(与集合成员的个数相等) 导致大量的冗余,需要规范化,77,键码是必需的 选择合适的属性(组)作为键码 学号、工号、身份证号. 增加计数属性 联系与反向联系 在联系的双方均有联系的描述 冗余 ODL:双向描述 E/R:相关的键码值进行连接,78,3.3 从E/R图到关系的设计,E/R与ODL描述的差异 联系作为独立的概念 联系嵌套在类定义中 结构化数据 允许使用集合、聚集类
22、型 联系可以有属性 联系无属性 E/R 关系模式 实现,79,实体集到关系的转换 非弱实体集 实体集名 关系名 属性 属性 弱实体集 为弱实体集建立关系 属性:弱实体集的属性 + 辅助实体集的键码,80,E/R联系到关系的转换 用关系表示联系 联系名 关系名 属性 属性 + 相关实体集的键码属性(集) 多向联系的转换 注意,属性的命名,81,3.4 子类结构到关系的转换,ODL中的子类 一个对象完全属于一个类 子类继承其超类的特性 E/R中的子类 分层结构通过与ISA联系有关的实体集进行扩展,82,用关系表示ODL子类 每个子类都有自己的关系 包含该子类的所有特性(含继承特性) 在一个关系中含
23、有所有属性 Movie(title,year,length,filmType,studioName,starName) Cartoon (title,year,length,filmType,studioName,starName,voice) MurderMystery (title,year,length,filmType,studioName,starName,weapon) Cartoon- MurderMystery (title,year,length,filmType,studioName,starName,voice, weapon),83,在关系模型中表示 isa 联系 子类
24、的信息被分散到上层的几个关系中 与ISA联系有关的实体集拥有相同的键码 Movie(title,year,length,filmType) Cartoon(title,year) MurderMystery(title,year, weapon) Voice(title,year,name),84,使用NULL值合并关系 将关系描述成一个全集 属性:所有可能的属性 描述:允许Null值 层次越高,取Null值的属性越多 Movie (title,year,length,filmType,studioName,starName,voice, weapon) 只是一种方法而已,85,作业 思考所有
25、带*的练习,并上网查询解答 练习3.2.3 / 3.3.1 / 3.4.1 / 3.5.3 /,86,3.5 函数依赖,数据依赖 函数依赖 多值依赖 数据依赖是针对数据模式,而不是特定的实例,87,函数依赖(FD) 属性之间的联系 假设给定 X 属性的值,就知道 Y的值,那么 X 函数决定 Y 如果R的两个元组在属性A1,A2,An上一致,则它们在另一个属性B上也一致,那么 A1,A2,An函数决定B,记作A1A2AnB if A1A2AnB1then A1A2AnB2A1A2An B1 B2 . Bm A1A2AnBm,88,关系的键码 如果一个或多个属性的集合A1A2An满足如下条件,则该
26、集合为关系R的键码: 1.这些属性函数决定该关系的所有其他属性 2. A1A2An的任何真子集都不能函数决定R的所有其他属性,89,超键码 包含键码的属性集称为超键码,90,寻找关系的键码(来自E/R) 来自实体集的关系的键码就是该实体集的键码属性 对于二元联系R: N:M,相关两个实体的键码都是R的键码属性 N:1,多端实体集的键码是R的加码属性 1:1,任意一端实体集的键码是R的键码 对于多向联系R: 如果多向联系R有一个箭头指向实体集E,则响应的关系中,除了E的键码以外,至少还存在一个键码。,91,寻找关系的键码(来自ODL) 来自ODL的关系的键码不一定就是该类的键码属性 对于单值联系
27、R: 类C有一个指向类D的单值联系,C的关系中包含D的键码。C的键码仍是相应关系的键码 对于多值联系R: 被引用类的键码加入到引用类的键码组合称为键码,92,3.6 函数依赖规则,分解规则 A1A2An B1 B2 . Bm 等价于 A1A2An Bi 合并规则 A1A2An Bi 等价于 A1A2An B1 B2 . Bm,93,平凡的函数依赖 如果对于函数依赖 A1A2An B,B是A中的一个,则该函数依赖就是平凡的函数依赖 平凡依赖是永恒的 title,year title 非平凡 如果B中至少有一个属性不在A中 title,year year,length 完全非平凡 如果B中没有一个
28、属性在A中 title,year length,94,计算属性的闭包 闭包 F的闭包是指F逻辑蕴涵的所有函数依赖的集合,记作F+ 闭包的意义 检验给定的函数依赖是否蕴涵于某个函数依赖集S 从给定的函数依赖,可以推导出蕴涵的函数依赖 求闭包 例:对关系R(A,B,C,D,E,F),给定函数依赖ABC,BCAD,DE,CFB,求 A,B+,95,关系的基与最小基 任何一个能从中导出关系的所有依赖的给定依赖集,称为该关系的一个基 如果一个基的任何真子集都不能推导出该关系的依赖全集,则称此基为最小基 求函数依赖的最小基 例:对关系R(A,B,C,D),有ABC,BC,A B,AB C,AC D,求最小
29、函数依赖集,96,3.7 关系数据库模式设计,什么是好的数据库设计 体现客观世界的信息 无过度的冗余 无插入异常 无更新复杂 无删除异常,97,更新复杂!,删除异常!,98,异常的原因 数据依赖的约束 解决方法 数据库设计的规范化分解,99,范式(Normal Forms) 规范化 一个关系满足某个范式所规定的一系列条件时,它就属于该范式 可以用规范化要求来设计数据库 也可以用来验证设计结果的合理性,用其指导优化过程 1NF2NF3NFBCNF4NF,100,第一范式(1NF) 当且仅当一个关系R中,每一个元组的每一个属性只含有一个值时,该关系属于第一范式。 要求属性是原子的,101,第二范式
30、(2NF) 对于关系R,若R1NF,且每一个非主属性完全函数依赖于码,则R2NF。 不能部分依赖于码 sc(sno,sname,cno,grade) sno,cnograde snosname,完全依赖,非完全依赖,102,第三范式(3NF) 对于关系R,若R2NF,且每个非主属性都不传递依赖于码,则R3NF。 主属性可以传递依赖于码 student(sno,sname,sdept,dept_manager) snosname,sdept sdeptdept_manager 传递依赖:snodept_manager,103,Boyce/Codd范式(BCNF) 对于关系R,若R1NF,且所有非
31、平凡的函数依赖,其决定因素是候选码,则RBCNF。 sct(s,c,t)/学生,课程,教师 tc/每位教师只上一门课 (s,c)t (s,t)c/每门课有若干位教师,104,最高范式 BCNF是基于函数依赖的最高范式 但不是数据库模式设计的最高范式,105,范式优化 分解 A1,A2,An = B1,B2,BnC1,C2,Cn 分解的要求 无损连接 BCB或BCC 保持依赖 范式要求,106,分解到高层范式(基于FD) 找出一个不符合范式要求的FD(XY),并使其右端的属性尽可能地多(求出X+) 创建新的模式,包含上述FD的所有(左右)属性(X+的所有属性) 创建另一模式,包含前述FD中的决定
32、因素及剩余的所有属性(U-X+)X) 反复13,直至符合范式要求,107,3.8 多值依赖,BCNF 仍有异常,108,多值依赖(MVD) 按P.110的定义,109,多值依赖(MVD) 设R(U)是属性集U上的一个关系。X、Y、Z是U的子集,且Z=U-X-Y。关系R(U)中多值依赖XY成立,当且仅当对R(U)的任一元组r,给定一对(x,z)值,有一组y的值,这组值仅仅取决于x值,而与z值无关。 对给定X的值,则Y的取值与Z的取值无关,110,给定一对(x,z)值,有一组y的值,111,nametitle,year,112,平凡的多值依赖 如果X包含Y或 XY=U,则XY是平凡的多值依赖 性质
33、 If XY,and YZ then XZ-Y If XY,and Z=U-X-Y then XZ If XY then XY 无分解/合并规则,113,第四范式(4NF) 对于关系R,若R1NF,且所有非平凡的多值依赖,其决定因素是候选码,则R4NF。 基于数据依赖的最高范式 分解要求 无损连接 保持依赖 4NF,114,nametitle,year namestreet,city All Key is BCNF isnt 4NF,R1(name,title,year) R2(name,street,city) All Key is 4NF,115,范式间的联系 高层范式包含低层范式 分解特
34、性,116,作业 思考所有带*的练习,并上网查询解答 练习3.7.5/3.8.3/,第四章 关系模型中的运算,Operations In The Relational Model,118,概述,数据库的核心应用是数据库的查询 查询语言 用户用来从数据库中请求获取信息的语言 关系代数是过程化的查询语言 关系代数是一种抽象的查询语言,119,4.1 关系代数,运算对象:关系 运算结果:关系,120,关系代数,关系代数的运算 普通的集合运算 并、交、差 删除部分关系的运算 选择、投影 合并两个关系元组的运算 连接、积 改名运算,121,关系代数 并Union (),R和S的并,RS,是在R或S或两者
35、中的元素的集合 一个元素在并集中只出现一次 R和S必须同类型(属性集相同、次序相同,但属性名可以不同),122,关系代数 交Intersect (),R和S的交,RS,是在R和S中都存在的元素的集合 一个元素在交集中只出现一次 R和S必须同类型(属性集相同、次序相同,但属性名可以不同),123,关系代数 差Minus (-),R和S的差,R-S,是在R中而不在S中的元素的集合 R和S必须同类型(属性集相同、次序相同,但属性名可以不同),124,关系代数投影Projection(),从关系R中选择若干属性组成新的关系 A1,A2,An(R),表示从R中选择属性集A1,A2,An组成新的关系 列的
36、运算 投影运算的结果中,也要去除可能的重复元组 例: ssex,sage(student) ?,125,关系代数选择Selection(),从关系R中选择符合条件的元组构成新的关系 C(R),表示从R中选择满足条件(使逻辑表达式C为真)的元组 行的运算 例: sage = 23 AND sdep = CS(student) ? 例:列出CS系的学号及姓名 sno,sname(sdep = CS(student) ),126,关系代数笛卡儿积(),关系R、S的笛卡儿积是两个关系的元组对的集合所组成的新关系 RS: 属性是R和S的组合(有重复) 元组是R和S所有元组的可能组合 是R、S的无条件连接
37、,使任意两个关系的信息能组合在一起 例: student sc (注意sno的命名),127,关系代数自然连接( ),从RS的结果集中,选取在某些公共属性上具有相同值的元组,组成新的关系 R、S的公共属性 属性集的交集(名称及类型相同) 公共属性在结果中只出现一次 等值连接 例: student sc (注意sno的命名),128,关系代数条件连接(),从RS的结果集中,选取在指定的属性集上满足条件的元组,组成新的关系 是一个关于属性集的逻辑表达式 R C S,129,关系代数改名(),对关系R实施改名运算,可显式地改变关系名及属性名 将关系R改名为S:s(R) 将关系R(B1,B2,Bn)改
38、名 S(A1,A2,An): S(A1,A2,An)(R),130,关系代数查询中的复合运算,例:找出比95001年龄大的学生的学号和姓名、年龄 s.sno,s.sname,s.sage(s(student) s.sage stu.sage (stu.sno=95001(stu(student),131,关系代数查询中的复合运算,例:找出比95001年龄大的学生的学号和姓名、年龄(与前例的结果有何差异?) s.sno,s.sname,s.sage(stu.sno=95001 and s.sage stu.sage (s(student)(stu(student),132,关系代数外连接,是连接
39、运算的扩展,可以处理缺失信息 保留非匹配元组 外连接 左外连接 右外连接 全外连接,133,关系代数左外连接,取出左侧关系中所有与右侧关系的任一元组都不匹配的元组,用空值填充所有来自右侧关系的属性,再把产生的元组加到自然连接的结果上 例:列出影星的当官情况(是影星,可能不是官) MovieStar MovieExec,134,关系代数右外连接,与左外连接对称 例:列出行政长官的从影情况(是长官,可能不是影星) MovieStar MovieExec,135,关系代数全外连接,左外连接与右外连接的合成 例:列出所有行政长官和所有影星的关系 MovieStar MovieExec,136,4.5
40、对关系的约束,关系数据模型 数据结构 关系操作 关系的完整性约束 实体完整性 参照完整性 用户定义的完整性,137,用关系代数作为约束语言,用关系代数可以表达约束 R = 0; R 0 R S;R-S = 0,138,参照完整性约束,如果对象(实体)A与对象(实体)B相关,那么B必须存在 如果一个关系R的一个元组有个分量值为v,那么期望v将出现在另一个关系S的某个元组的特定分量中 v(R) v(S),139,参照完整性约束例,Movie关系中,每部电影的制片人必须出现在MovieExec关系中 Movie(title,year,length,incolor,studioName,produce
41、rC#) MoiveExec(name,address,cert#,networth) 每个Movie元组的producerC#分量必须出现在MovieExec元组的cert#分量中 producerC#(Movie) cert#(MovieExec) producerC#(Movie) -cert#(MovieExec)=0,140,参照完整性约束例,影星只能于存在的Movie中出演角色 Movie(title,year,length,incolor,studioName,producerC#) starsIn(movieTitle,movieYear,starName) movieTitl
42、e,movieYear(starsIn) title,year(Movie),141,附加约束函数依赖,对关系student,有snosname stu1.sno = stu2.sno AND stu1.snamestu2.sname(stu1stu2) = 0,142,附加约束用户定义的约束,某些属性的取值有特定的要求 genderFAND gender M(MovieStar) = 0,143,4.6 包的关系运算,集合 无重复 顺序无关 包 可重复 顺序无关 商业数据库系统往往是基于包的 采用包可以获得比集合快的运算速度,144,包的关系运算,并、交、差 投影、选择 乘积、连接 不必去除
43、重复元组!,145,作业,练习4.1.1/4.5.1/4.5.4/4.5.5,第五章 数据库语言SQL,147,概述,SQL的发展 1974年,由Boyce和Chamberlin提出 19751979,IBM San Jose Research Lab的关系数据库管理系统原型System R实施了这种语言 SQL-86是第一个SQL标准 SQL-89、SQL-92(SQL2)、SQL-99(SQL3),148,概述,现状 大部分DBMS产品都支持SQL,成为操作数据库的标准语言 有方言,支持程度不同,149,数据定义(DDL) 定义、删除、修改关系模式(基本表) 定义、删除视图(View) 定
44、义、删除索引(Index) 数据操纵(DML) 数据查询 数据增、删、改 数据控制(DCL) 用户访问权限的授予、收回,概述SQL的功能,150,交互式SQL 一般DBMS都提供联机交互工具 用户可直接键入SQL命令对数据库进行操作 由DBMS来进行解释,概述SQL的形式,151,嵌入式SQL 能将SQL语句嵌入到高级语言(宿主语言) 使应用程序充分利用SQL访问数据库的能力、宿主语言的过程处理能力 一般需要预编译,将嵌入的SQL语句转化为宿主语言编译器能处理的语句,概述SQL的形式,152,数据定义 Create、Drop、Alter 数据操纵 数据查询:Select 数据修改:Insert
45、、Update、Delete 数据控制 Grant、Revoke,概述SQL的动词,153,数据查询是数据库应用的核心功能 基本结构 Select A1, A2, ., AnFrom r1, r2, ., rmWhere P A1, A2, ., An(p(r1r1.rm),数据查询,154,Select语句的含义,对 From 子句中的各关系,作笛卡儿积() 对 Where 子句中的逻辑表达式进行选择()运算,找出符合条件的元组 根据 Select 子句中的属性列表,对上述结果作投影( )操作,155,Select语句的含义,结果集 查询操作的对象是关系,结果还是一个关系,是一个结果集,是一
46、个动态数据集,156,Select子句,对应于关系代数的投影()运算,用以列出查询结果集中的期望属性,157,SQL具有包的特性 Select 子句的缺省情况是保留重复元组( ALL ),可用 Distinct 去除重复元组 Select Distinct sdept From Student Select All sdept From Student 去除重复元组:费时 需要临时表的支持,Select子句重复元组,158,Select子句 *与属性列表,星号 * 表示所有属性 星号 * :按关系模式中属性的顺序排列,并具有一定的逻辑数据独立性 显式列出属性名:按用户顺序排列 Select *
47、 From Student Select Student.*,cno,grade From Student,SC Where Student.sno = SC.sno,159,Select子句更名,为结果集中的某个属性改名 使结果集更具可读性 Select sno as stu_no,cno as course_no, grade From SC Select sno,sname,2001 - sage as birthday From Student,160,Where 子句,where子句对应与关系代数中的选择() 查询满足指定条件的元组可以通过Where子句来实现 使where子句中的逻
48、辑表达式返回True值的元组,是符合要求的元组,将被选择出来,161,Where 子句运算符,比较:、=、=、not + 确定范围: Between A and B、Not Between A and B 确定集合:IN、NOT IN 字符匹配:LIKE,NOT LIKE 空值:IS NULL、IS NOT NULL 多重条件:AND、OR、NOT,162,Where 子句Like,字符匹配:Like、Not Like 通配符 % 匹配任意字符串 _ 匹配任意一个字符 大小写敏感,163,Where 子句Like,例:列出姓张的学生的学号、姓名。 Select sno,sname From S
49、tudent Where sname LIKE 张%,164,Where 子句Like,例:列出张姓且单名的学生的学号、姓名。 Select sno,sname From Student Where sname LIKE 张_ _,165,Where 子句转义符 escape,例:列出课程名称中带有_的课号及课名。 Select cno,cname From Course Where cname LIKE %_% escape ,166,From 子句,From子句对应与关系代数中的笛卡儿积() 列出将被扫描的关系(表) 例:列出所有学生的学号、姓名、课号、成绩。 Select Sudent.
50、sno,sname,SC.cno,grade From Student,SC Where Student.sno = SC.sno,167,From 子句元组变量,为 From 子句中的关系定义元组变量 方便关系名的引用 在同一关系的笛卡儿积中进行辨别 例:列出与95001同岁的同学的学号,姓名,年龄 SelectT.sno,T.sname,T.sage FromStudent as T,Student as S WhereS.sno = 95001 AND T.sage = S.sage,168,Order By子句,指定结果集中元组的排列次序 耗时 ASC(缺省)、DESC、未选中的属性
51、例:列出CS系中的男生的学号、姓名、年龄,并按年龄进行排列(升序) Select sno, sname,sage From Student Where sdept = CS Order By sage ASC,169,SQL的集合操作,SQL的结果集是“包” 多个 Select 语句的结果可以进行集合操作,使结果为“集合”(default) SQL-92支持 参加集合操作的关系(结果集)必须是相容的,170,SQL的集合操作相容,属性个数必须一致 对应的类型必须一致 属性名无关 最终结果集采用第一个结果的属性名 缺省为自动去除重复元组 除非显式说明ALL Order By放在整个语句的最后,1
52、71,SQL的集合操作并,union(并,对应与关系代数的),标准SQL都支持的 采用集合的观点,合成多个查询的结果 select - without - order by . UNION ALL select - without - order by . UNION ALL select - without - order by . . ORDER BY integer ASC | DESC , . ,172,例:查询计算机系的学生或者年龄不大于19岁的学生,并按年龄倒排序。,SQL的集合操作并,173,intersect(交,对应与关系代数的),并不是所有的DBMS都支持 例:查询计算机系
53、的学生并且年龄不大于19岁的学生,并按年龄倒排序。,SQL的集合操作交,174,except(差,对应与关系代数的 -),并不是所有的DBMS都支持 例:查询计算机系的男生。,SQL的集合操作差,175,数据定义语言(Data Definition Language) Create、Drop、Alter 定义一组关系(基本表)、说明各关系的信息 各关系的模式 各属性的值域 完整性约束 索引 安全性和权限,数据定义语言(DDL),176,字符型 char(n) 、varchar(n) 数值型 integer、smallint numeric(p,d) real、double、float(n) 日
54、期/时间型 date time,DDLSQL中的域类型,177,域定义语句(SQL-92支持) 需重复使用的 Create Domain stu_name varchar(20) Create Domain zip_code char(6),DDLSQL中的域类型,178,Create Table r (A1D1, A2D2, AnDn, , ) 其中: r 关系名(表名)、 Ai 关系 r 的一个属性名 Dn 属性Ai域值的域类型 主键声明: primary key (Aj1 ,Aj2 ,Ajvm ),DDLSQL的模式定义,179,Create Domain stu_name varcha
55、r(20) Create Table Student ( sno char(10) primary key(sno) , sname stu_name , sage smallint, ssex char(1), sdept char(2),DDLSQL的模式定义,180,Create Table Course ( cno char(10) primary key (cno) , cname varchar(20) , credit smallint ) Create Table SC ( sno char(10) not null , cno char(10) not null , grad
56、e smallint, primary key (sno, cno),DDLSQL的模式定义,181,用SQL删除关系(表) 将整个关系模式(表结构)彻底删除 表中的数据也将被删除 Drop Table r Drop Table student;,DDL删除表结构 Drop,182,删除表中的某属性 去除属性及相应的数据 Alter Table r Drop A,DDL修改模式 Alter,183,增加表中的属性 向已经存在的表中添加属性 allow null 已有的元组中该属性的值被置为Null Alter Table r Add A D Alter Table student phone
57、char(16);,DDL修改模式 Alter,184,属性的默认值 用户不提供某属性的值时,默认值被使用 初始值 TimeStamp DDL中: ModifyDate char(30) Default TimeStamp; Alter Table student Add ID integer Default AutoIncrement;,DDL Default Value,185,定义一个新的域(用户定义的域) 需要重复使用的域 必须具有相同类型的属性 Create Domain As ; Create Domain datelog As char(30) default timestamp
58、 域的删除 Drop Domain datelog 各DBMS的方法是不同的Restrict/Cascade 使用该域的属性的处理,DDL 域定义,186,索引是一种数据结构,是对照表、指针表 索引是为了加速对表中元组的检索而创建的一种分散存储结构(B树) 索引是对表而建立的,由除存放表的数据页面以外的索引页面组成 索引是把双刃剑,减慢更新的速度 索引不是SQL标准的要求,DDL 索引 Index,187,索引的种类 聚簇索引(Clustered Index) 非聚簇索引(Non-Clustered Index),DDL 索引 Index,188,聚簇索引(Clustered Index) 表
59、中的元组按聚簇索引的顺序物理地存放 根级页面-中间层页面-叶级页面(数据页面) 一个表中只能有一个聚簇索引 更新的复杂性,需要大量的临时空间,DDL 索引 Index,189,非聚簇索引(Non-Clustered Index) 表中元组存储的物理顺序与索引的顺序无关 叶级索引页面是指向数据页面的指针 每个表可有多个非聚簇索引,DDL 索引 Index,190,CREATE UNIQUE CLUSTERED | NONCLUSTERED INDEX index-name On TableName(Column,Column,) Create Index YearIndex On Movie(year); Create Clustered Index SnoIndex On student(sno) ; Drop Index YearIndex;,DDL 索引 Index,191,查询与更新的评估 查询多? 更新多? 索引的覆盖 Where表达式 Where表达式的顺序 索引越多越好吗? 了解优化器,DDL 索引的使用,192,数据添加 用S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度家庭园艺设计及施工服务合同
- 2025年度绿化工程专用苗木购销服务合同
- 二零二五年新型低碳环保地板砖采购合同
- 2025版电子商务平台直播电商运营委托合同
- 2025版房地产项目广告宣传合同参考范本
- 二零二五年度别墅木结构设计与施工合同
- 二零二五年企业职工食堂升级改造项目合同
- 2025版新能源汽车出口业务合同主体与标的权属确认协议
- 2025版报刊发行市场调研及分析合作协议范本
- 二零二五年度股权激励执行标准合同
- 2025年全国高级保育员理论考试笔试试题附答案
- 五升六小学数学(暑假口算每日一练)
- 浙江国企招聘2025宁波慈溪市国有企业公开招聘工作人员130名笔试参考题库附带答案详解
- 护理人文关怀培训课件
- 中国专用车行业发展前景预测及投资战略研究报告
- 烹饪职业道德课件
- 烤烟栽培技术课件
- 2025至2030中国一次性拖鞋行业市场深度研究及发展前景投资可行性分析报告
- 露天矿急救自救互救培训
- 生命体征培训
- 无废城市培训
评论
0/150
提交评论