数据库课件(哈工大)
- 格式:pdf
- 大小:1.65 MB
- 文档页数:62
第一章绪论1. 信息与数据信息Information信息是人类对于自然界的感知.物质世界:物质与信息物质存在⇒信息存在物质变化⇒信息变化数据Data数据是信息的符号化表示.在计算机中,数据是描述各种信息的符号记录.数据处理——对数据进入收集、存储、加工和传播等过程.2. 数据库DB(Data Base)长期存放在计算机存储介质中的有组织的、动态的、可共享的数据集合.3. 数据库管理系统DBMS(Data Base Management System)组织、存储、维护和获取数据库中数据的软件系统,是介于数据库用户和操作系统之间的数据管理软件.4. 数据库系统DBS(Data Base System)在计算机系统中引入数据库后的系统,包括:数据库DB, 数据库管理系统DBMS, 各种开发工具数据库应用系统, 计算机硬件及其他软件数据库管理员DBA (Data Base Administrator), 用户5. 数据处理与数据管理数据处理:对各种数据进行收集、存储、加工和传播的一系列活动的总和.数据管理:对数据进行分类、组织、编码、存储、检索和维护的过程.数据管理是数据处理的核心.6. 数据库系统的特点●数据面向整个组织●数据结构化从一个组织全部应用的角度,全面考虑并集成数据的结构;不仅能反映数据本身,而且还能反映数据之间的联系;数据之间的联系通过存取路径实现.●共享性高,冗余度低,可扩充性强●程序与数据具有较高的独立性数据独立性:数据与应用程序之间相互依赖的程度.三级逻辑结构全局逻辑结构:描述数据库的整体结构局部逻辑结构:描述某一用户观点的数据集合物理结构:描述数据的物理存储两种映象全局逻辑结构与局部逻辑结构映象:逻辑独立性✓在全局逻辑结构与局部逻辑结构之间有一种映象.✓当全局逻辑结构发生变化时,通过修改该映象,可以使局部逻辑结构不改变.✓用户程序是根据局部逻辑结构编写的,所以不必修改用户程序.全局逻辑结构与物理结构映象:物理独立性✓在全局逻辑结构与存储结构之间有一种映象.✓当存储结构发生变化时,通过修改该映象,可以使全局逻辑结构不改变.✓由此不必修改局部逻辑结构,所以不必修改用户程序.●数据管理灵活方便●易于被应用程序使用●安全性和保密性好●数据的算法相对较简单,但数据之间的关系复杂(1) 数据结构化(2) 数据共享性好、冗余度低、易扩充、避免不一致性(3) 数据独立性好(4) 数据由DBMS统一管理和控制DBMS提供了一种机制,保证数据的安全性、完整性、并发控制和数据库恢复等.(5) 数据存取最小单位是数据项第二章数据库系统结构模型对客观事务中感兴趣的内容进行模拟和抽象的工具.建立模型有助于加深对问题的理解数据模型对客观世界中的数据特征进行抽象的工具.数据库的数据模型概念层数据模型对数据应用部门的数据进行建模的工具.对数据库既要表示数据本身,又要表示数据之间的联系.组织层数据模型描述数据库系统内部数据组织结构的工具.数据库是某个组织所涉及的数据的集合.数据库不仅仅能表示数据本身,还能反映数据之间的联系.设计数据库的逻辑结构时,首先需要将现实世界中的信息及其相互联系用概念层数据模型(概念模型,信息模型)表示出来,然后将这种其转换成具体数据库的组织层数据模型(数据模型).1. 三个世界●现实世界(客观世界)客观世界研究的是对象; 对象是具体事务或抽象概念;组成客观世界的细胞称为事务;人们对事务的认识是通过事务的特征进行的.●信息世界对客观世界中的事务进行认识,经过选择、命名、分类后进入信息世界.实体Entity: 具有公共性质的客观存在的并可相互区分的事务.实体可以是具体的人、事、物,也可以是抽象的概念.属性Attribute: 实体所具有的某一特征.一个实体由若干个属性描述.键(码)Key:唯一标识实体的属性集.域Domain:属性的取值范围.属性是个变量,属性值是变量的取值,域是变量的取值范围.实体型Entity Type:用实体名和属性名来抽象和描述实体的框架.实体集Entity Set:同一类型实体的集合.联系Relationship:现实世界中的事务不是独立存在的,而是相互联系的.实体内部各属性之间的联系;实体之间的联系.概念层模型的联系: 指实体之间的联系.●机器世界将信息世界中的概念模型转换成计算机内部表示,就进入了机器世界(数据世界).2. 实体之间的联系●一对一联系(1:1)●一对多联系(1:n)●多对多联系(m:n)3. 概念模型的表示方法实体联系方法:ER 图(Entity Relationship Approach) P.P.S Chen于1976年提出来的一种表示客观世界信息模型的方法ER图的表示方法典型的组织层数据模型●层次模型:用树型结构组织数据只有一个结点无双亲结点,称根结点.除根结点外,其他结点有且只有一个双亲结点.●网状模型:用网状结构组织数据可以有一个以上结点无双亲结点.一个结点可以有多个双亲结点.●关系模型:用二维表结构组织数据用二维表(table)组织管理数据.表中数据及表之间的数据要满足一定的条件约束.●面向对象模型:用复杂表格及其他结构组织数据数据库的数据模型由三部分组成●数据结构:描述数据的组织结构(静态结构)描述数据的类型、性质、取值范围等✓在不同的数据模型中,数据结构的表示方法不同.描述数据之间的联系✓一个实体内部各数据项之间的联系.✓不同实体之间数据的联系.●数据操作:描述数据的操作(动态结构)检索(查询)数据更新数据:插入数据;修改数据;删除数据●数据完整性约束:描述对数据的约束条件——正确性、有效性和相容性.实体完整性;参照完整性;用户定义完整性实体完整性和参照完整性是任何数据库都必须满足的.用户定义完整性是根据用户的具体要求定义的.数据库系统应不仅能设置完整性,还能执行完整性约束.数据库的结构●内部结构(从数据库管理系统角度看数据结构)三级模式(外模式、模式和内模式)●外部结构(从最终用户角度看数据结构)集中式结构分布式结构客户/服务器结构(C/S结构-Client/Server)浏览器/服务器结构(B/S结构-Browser/Server)并行结构……●两层结构C/S:客户层/服务器层●三层结构B/A/S:浏览器/应用程序服务器/数据库服务器1. 数据库系统的三级模式结构●模式Schema用于描述数据库的结构;模式不涉及具体数据值.●要特别注意区分“型”和“值”的概念型是指对数据结构和属性的说明.值是型的具体取值,是数据库的一个实例.●三级模式结构是典型的数据库模式结构尽管实际数据库的软件产品是多种多样的,可以使用不同的语言,建立在不同的操作系统上,存储结构不同,但基本上都采用典型的三级模式结构和两种映象.(1) 模式Schema逻辑模式Logical Schema用于描述数据库的全局逻辑结构,是数据库的总体构架.一个数据库只有一个模式,其主要功能有:定义模式名,定义数据项及类型,定义记录,定义记录间的联系,定义安全性控制要求,定义数据完整性约束条件等.模式用模式数据定义语言Schema DDL(Data Definition Language)编写,称源模式.源模式经翻译后产生目标模式,存放在描述数据库中.(2) 外模式External Schema外模式也叫子模式Subschema或用户模式User Schema,用于描述某一用户观点的数据库的局部逻辑结构.●外模式通常是模式的子集,外模式与某一具体应用有关.同一外模式可以为某一用户的多个应用所使用,但一个用户通常只能使用一个外模式.不同用户的外模式可以互相覆盖.●外模式是由模式映象出来的.二者的功能一致,但有区别:数据项定义可以不同;记录的组成可以不同;可以有不同的密码和不同的使用权限.●外模式用外模式数据定义语言Subschema DDL定义.(3) 内模式Internal Schema●内模式也叫存储模式Storage Schema,是数据库数据的内部表示,用于定义数据的存储方式和物理结构.内模式由数据库管理员DBA使用.一个数据库只有一个内模式.●内模式的功能定义每一个数据项的物理表示方式;定义数据的寻址方法和检索技术;定义数据是否压缩存储,数据是否加密存储;定义数据的物理存储块的大小,溢出处理方法.●内模式用内模式数据定义语言Data Storage DDL描述.2. 数据库系统的组成●硬件——要求:大内存,大硬盘,较高的通道能力.●软件支持数据库的操作系统;数据库管理系统;具有与数据库接口的高级语言及其编译系统;以DBMS为核心的开发工具.●数据库: 具体的数据库应用系统.数据库的数据;数据库的描述.●人员: 数据库管理员、系统分析员、应用程序员和用户.第三章关系数据库1. 域Domain是一组具有相同数据类型的值的集合.2. 笛卡儿积Cartesian Product给定一组域D1,D2,…,Dn(这些域中可以有相同的)D1,D2,…,Dn 的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di, i=1,2,…,n}其中:(d1,d2,…,dn)叫一个n元组(n-tuple),简称元组di叫一个分量3. 关系RelationD1×D2×…×Dn 的子集叫作在域D1,D2,…,Dn上的关系,表示为: R(D1, D2,…, Dn)其中:R为关系名,n为关系的度(或目),D1, D2,…, Dn为域名由于域名可以相同,为了加以区分,必须为每一列起一个名,称属性Attribute,故关系常表示为:R (A1,A2,…,An )4. 属性到域的映象●若属性名与域名相同,则用域名作属性名.●若属性名与域名不同,则需要指出属性到域的映象.Ai=Dom(Di) 表明:属性Ai来自于域Di5. 数据库关系与数学中关系的区别●关系模型对其数学定义作了适当的扩充:●笛卡尔积可以是一个无限集合,但关系必须是有限集合.在数学意义上, (d1,d2,…,dn)≠(d2,d1,…,dn)列之间不满足交换律,故通过为关系的每一个列加一个属性名,取消关系中列的有序性限制.6. 关系的性质●列是同质的:每一列中的数据类型相同●列名是唯一的:不同的列(属性)可以来自于同一个域,需要指●出属性到域的映象●行的顺序无关:任何两行可以互换●列的顺序无关:任何两列可以互换●任何两行不能完全相同:由主码区分●分量必须是原子量:每一列不可再分割7. 关系的优点与不足●关系模型的优点理论基础扎实:集合论,关系数据理论.概念单一: 实体用关系表示,联系也用关系表示.存取路径对用户是透明的: 用户不必知道存取路径规范化:最基本的要求是每一个属性不可再分割.表示单一: 数据用表表示,查询结果也用表表示.●关系模型的缺点效率不如非关系模型,因此需要进行查询优化, 增加了DBMS自身的开发难度.计算机处理速度的提高,数据库优化算法的改善,使关系数据库的效率仍远高于其他数据模型 关系模型是通过满足一定条件的二维表来表示实体集合及数据之间联系的一种数据模型.具有坚实的数学基础和较严密的理论,使用灵活方便,得到了迅速发展,80年代以后的数据库系统几乎都支持关系模型.●关系的逻辑数据结构实体和联系都用关系表示.从用户的观点看,关系是一张二维表.●关系的存储结构每个表可对应一个文件.也可以将多个表存储在一个文件中.8. 关系的术语●关系模式Relation Schema:关系的型,是对关系的描述,即关系的框架●关系Relation:关系模式的一组具体取值●关系数据库模式Relation Database Schema:关系模式的集合●关系数据库Relation Database:关系的集合●元组Tuple:关系中的一行●属性Attribute:由于域可以相同,为了区分,必须为每个列取一个名字,称为属性●域Domain:属性的取值范围●超码(键)Super Key:能唯一标识一个元组的属性组●候选码(键)Candidate Key:能唯一标识一个元组的最小属性组●主码(键)Primary Key:若候选码有多个,选择其中的一个作主码例:学号,身份证号●主属性Primary Attribute:候选码中的属性●非主属性Non-primary Attribute:不包含在任何候选码中的属性●全码All Key: 全部属性都是主属性9. 关系操作分类●关系代数:通过对关系的运算表示查询方式●关系演算:用谓词表示查询方式元组关系演算:谓词变元的基本对象是元组域关系演算:谓词变元的基本对象是域●结构化查询语言SQL10. 关系代数运算包括两大类●传统的集合运算:从行的角度进行运算.并∪, 交∩,差—,广义笛卡儿积×●专门的关系运算:从行和列两种角度进行运算.选择σ,投影π,连接⋈,除÷●在各种运算中,使用下列运算符比较运算符: <, ≤, =, >, ≥, ≠逻辑运算符:¬(非),∧(与),∨(或)11. 关系的完整性约束:关系中的所有数据必须满足的约束条件三类完整性——实体完整性、参照完整性、用户定义完整性●实体完整性规则——若属性A是基本关系R的主属性,则A不能取空值. 主健必须唯一. 关系模型的表分为基本表(基本关系),查询表和视图.基本表:实际存在的表查询表:查询结果表视图:定义的虚表空值与零值不同——空值:没有值,但不是0——零值:其值为0●参照完整性实体之间的联系是通过外健(外部码)进行的.定义: 外键Foreign Key设F是基本关系R的一个或一组属性,但F不是R的主健.若F与基本关系S的主健Ks相对应,则称F是基本关系R的外健(R可以与S是同一关系).称R 为参照关系,S为被参照关系或目标关系.例如:在学生(学号,姓名,性别,专业,班长学号)中班长学号是也是一个学号,必须与学号出自同一个域,故班长学号也是外健.●参照完整性规则——若属性或属性组F是基本关系R的外健,则: F在R中取空值;若F在R中非空则其在S中必须存在.●用户定义完整性:根据用户的具体要求定义的完整性.第四章SQL Server 数据库系统基础●SQL Server数据库的特点●SQL Server数据库的版本:企业版,标准版,个人版,开发版●SQL Server 的安装:软硬件环境、安装过程●SQL Server 数据库服务管理器的启动与登录:启动服务器管理器、登录企业管理器、登录查询分析器●SQL Server 的工具与实用程序●SQL Server 的系统数据库●SQL Server 的主要数据类型●数据库及基本表的创建第五章结构化查询语言SQL 0.1. SQL的特点(1) 一体化(2) 高度非过程化(3) 面向集合的操作方式(4) 两种使用方式、统一的语法结构自含式语言能独立地在联机方式下使用(命令方式),用户可以在终端键盘上直接输入SQL命令对DB进行操作.嵌入式语言嵌入到高级语言(VB、PB、Java等)程序中,利用主语言(高级语言)进行计算处理、利用DB语言进行数据管理.同一条命令在两种操作方式中的语法结构基本一致. (5) 语言简捷、易学易用0.2. SQL支持三级模式结构外模式●外模式对应于视图View和部分基本表Base Table ●用户可以用SQL语言对基本表和视图进行操作●从用户的观点看基本表和视图是一样的模式●模式对应于基本表●基本表是独立存在的表●每个基本表对应一个关系内模式●内模式对应于存储文件●存储文件是在计算机存储介质中存放的文件形式●一个或若干个基本表对应一个存储文件视图●视图是从一个或几个基本表或其他视图导出的表●视图并不存放实际的数据,仅保存视图的定义●使用视图时,根据视图定义,从基本表中取数据●因此,视图实际上是一个虚表1.3. 删除基本表2.1. 插入数据(3) 插入应注意的问题对于表Student和SC若在SC 中插入的记录的Sno 在Student 不存在,则系统不允许插入. 2.2. 修改数据对满足条件的元组中的指定列用相应的表达式的值修改.(4)修改应注意的问题对于表Student 和SC 若修改Student 中的Sno,而未修改SC 中对应记录的Sno.若修改SC 中的Sno,而未修改Student 中对应的Sno. 2.3. 删除数据一个学生的各种数据可能存放在多个表中,但一个删除语句只能对一个表进行删除,这样可能会引起数据不一致问题.3. 查询功能是数据库系统的核心.其中:● SELECT :表示查询● ALL :显示所有满足条件的元组 ● DISTINCT :消除重复元组 ● *:所有列● 目标列表达式:查询结果,可以有函数运算 ● FROM :从哪些表或视图中查询 ● WHERE :查询条件 ● GROUP BY:按指定的列分组,例如,计算每个学生平均成绩时,要按学号分组● HA VING :GROUP BY 分组的条件 ● ORDER BY :输出时按指定列排序 ● ASC :升序(缺省值) ● DESC :降序3.1. 单表查询 (1)查询指定列(2) 按用户要求的顺序查询指定列 (3) 查询全部列(6) 查询满足条件的元组(7) 对查询结果排序● 统计元组个数:COUNT([DISTINCT|ALL]|*)● 统计一列中值的个数:COUNT([DISTINCT|ALL]<列名>)● 对一列求和:SUM([DISTINCT|ALL]<列名>) ● 对一列求平均值:A VG([DISTINCT|ALL]<列名>) ● 求一列中最大值:MAX([DISTINCT|ALL]<列名>) ● 求一列中最小值:MIN([DISTINCT|ALL]<列名>) DISTINCT: 消除重复元组 ALL: 所有元组,缺省值 (9) 对查询结果分组分组方法——用GROUP BY 子句将查询结果按某一列或多列值分组,值相等的为一组.若分组后还要按一定条件进行筛选, 可以用HA VING 短注意WHERE 与HAVING 语句的区别● WHERE :作用于基本表或视图,选择满足条件的元组● HA VING :作用于GROUP 分成的子组,选择满足条件的组3.2. 连接查询——若一个查询同时涉及两上或两个以上的表,则称为连接查询. 连接查询的种类连接条件中各属性的值应是可比的. 字段名可以相同,也可以不同.3.3子查询一个SELECT-FROM-WHERE 结构是一个查询块.将一个查询块嵌套在一个WHERE 或HA VING 子句的条件中,称为嵌套查询.● 当内查询返回的值为多个值时,可以通过集合进行. ● 当内查询返回的值为一个值时,可以通过等号比较符进行.● 当内查询返回的值与外查询具有某种比较关系时,可●>ANY 大于某一个值●>ALL 大于所有值●<ANY 小于某一个值●<ALL 小于所有值●>=ANY 大于等于某一个值●>=ALL 大于等于所有值●<=ANY 小于等于某一个值●<=ALL 小于等于所有值●=ANY 等于某一个值●=ALL 等于所有值●!=ANY 不等于某一个值3.5.交运算3.6. 差运算4.1. 索引的概念●索引的意义改善系统性能,加快查询速度.更新基本表时自动修改索引●索引的数量一个基本表可以按需要建立多个索引例如:对Student表对主码要建立索引若经常按姓名查询,则可按姓名建立索引若经常按系名查询,则可按系名建立索引●索引的代价维护索引需要花费时间4.2. 索引的分类●聚簇索引Clustered对数据记录进行物理排序一个基本表只有一个聚簇索引一般对主码建立聚簇索引●非聚簇索引NonClustered对于需经常查询、计算、更新的属性可建立非聚会簇索引索引信息单独存放在另一个索引名中●惟一索引也是一种非聚簇索引索引的属性不包含重复值4.4. 删除索引索引建立后,由系统进行维护,不需用户干预.频繁增、删、改数据,将花费系统的时间维护索引,因此,●T-SQL的概念T-SQL是Microsoft对标准SQL的扩展.T-SQL语言是一种交互式查询语言.直接使用SQL语句将SQL语句嵌入到高级语言中T-SQL有自己的数据类型、表达式、关键字和语句结构.SQL语句在查询分析器中执行.●常量,变量,数据类型,运算符与表达式(2) 变量变量名变量的分类全局变量——系统提供的变量,作为函数引用——格式: @@变量名局部变量——用户定义的变量,存放单个值——格式:@变量名●流程控制语句——条件、case、循环、注释●函数聚合函数:聚合函数用于对一组值执行计算并返回一个值.数学函数:三角函数、幂函数、符号函数、其他数学函数●SQL语句简介。
数据库系统语言基础教研室:侯俊英第一章数据库引论1.1 数据库系统概述1.1.1 基本概念1. 数据:是描述事物的符号记录。
2. 数据库:是长期存在计算机内的,有组织的、可共享的数据集合。
3. 数据库管理系统(DataBase Management System DBMS)::数据库管理系统是位于用户和操作系统之间的一层数据管理软件。
科学组织、存储数据完成此任务的软件DBMS 高效获取和维护数据数据库管理系统的功能:•数据定义功能;•数据操纵功能;•数据库的运行管理;•数据库的建立和维护功能。
1.1.2 数据库管理技术的产生和发展(了解)1.人工阶段;2.文件管理阶段;3.数据库系统阶段。
1.1.3 数据库系统的特点:1.数据结构化;数据不再针对某一应用,而是面向全组织、具有整体的结构化。
2. 数据的共享性高、冗余度低、易扩充;3. 数据的独立性高;物理独立性数据的独立性逻辑独立性物理独立性:用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的。
逻辑独立性:用户的应用程序与数据库的逻辑结构是相互独立的。
4. 数据由DBMS统一管理和控制。
数据库的共享是并发的共享,DBMS还必须提供以下几方面的数据控制功能:(1) 数据的安全性保护;(2) 数据的完整性检查;(3) 并发控制;( 4) 数据库恢复。
1.2数据模型数据模型就是现实世界的模拟。
概念模型:是按用户的观点对数据和信息建模;数据模型:是数据库系统的核心和基础。
现实世界机器世界信息世界1.2.1 数据模型的组成要素1. 数据结构——系统的静态特性的描述;2. 数据操作——系统的动态特性的描述;3. 完整性约束——一组完整性规则的集合。
1.2.2 概念模型一、信息世界中的基本概念:1. 实体:客观存在并可相互区别的事物。
2. 实体集:同型实体集合称为实体集。
3. 属性:实体所具有的某一方面的特性。
4. 码:唯一标识实体的属性集合。
5. 域:属性的取值范围。
第3章 关系数据库数据库系统应用Data Base System Application张建国哈工大计算机科学与技术学院2008-9-21哈工大计算机学院 张建国 Slide 3-1第3章 关系数据库2008-9-212第3章 关系数据库本章主要内容关系的理论基础(掌握) 关系的定义 关系模型的基本概念(掌握) 关系数据结构 关系操作 关系完整性 关系代数(掌握) 关系的完整性约束(掌握) 现在的数据库 大多是关系数 据库.2008-9-21哈工大计算机学院 张建国Slide 3-3第3章 关系数据库3.1 关系的理论基础关系模型是IBM公司的San Jose研究所 的研究员E.F.Codd提出来的. 1970年,Codd发表了一篇文章,讨论了关系 数据库的基本概念 A Relational Model of Data for A large Shared Data Banks(一种大型共 享数据库数据的关系模型). 后来,他发表了一系列文章,开创了关系 方法和关系数据理论研究,1981年获 ACM图灵奖.2008-9-21哈工大计算机学院 张建国Slide 3-4第3章 关系数据库3.1 关系的理论基础(Cont.)关系建立在集合代数基础之上,因此从集合论角度给出关系的 定义. 1. 域Domain 定义 域是一组具有相同数据类型的值的集合. 例:自然数、整数、星期、{0,1}、{男,女}、… 域可以是有 限集,也可 以是无限集2008-9-21哈工大计算机学院 张建国Slide 3-5第3章 关系数据库3.1 关系的理论基础(Cont.)2. 笛卡儿积Cartesian Product 定义 给定一组域D1,D2,…,Dn(这些域中可以有相同的) D1,D2,…,Dn 的笛卡尔积为: D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di, i=1,2,…,n} 其中:(d1,d2,…,dn)叫一个n元组(n-tuple),简称元组 di叫一个分量 笛卡尔积的基数 设D1,D2,…,Dn 为有限集,基数分别为mi(i=1,2,…,n),则 D1×D2×…×Dn的基数M=m1×m2×…×mn2008-9-21哈工大计算机学院 张建国Slide 3-6第3章 关系数据库3.1 关系的理论基础(Cont.)例: 设D1为男士的集合,D2为女士的集合, D3为儿童的集合 D1={张伟,李强,王刚}; D2={赵梅,朱兰};D3={张小伟,张小 梅,李小兰}D1×D2×D3={(张伟,赵梅,张小伟),(张伟,赵梅,张小梅), (张伟,赵梅,李小兰),(张伟,朱兰,张小伟),该笛卡儿积 的基数 M=3×2×3=18(张伟,朱兰,张小梅),(张伟,朱兰,李小兰), (李强,赵梅,张小伟),(李强,赵梅,张小梅), (李强,赵梅,李小兰),(李强,朱兰,张小伟), (李强,朱兰,张小梅),(李强,朱兰,李小兰), (王刚,赵梅,张小伟),(王刚,赵梅,张小梅), (王刚,赵梅,李小兰),(王刚,朱兰,张小伟), (王刚,朱兰,张小梅),(王刚,朱兰,李小兰)}2008-9-21哈工大计算机学院 张建国Slide 3-7第3章 关系数据库3.1 关系的理论基础(Cont.)(3) 关系Relation 定义 D1×D2×…×Dn 的子集叫作在域D1,D2,…,Dn上的关系, 表示为: R(D1, D2,…, Dn) 其中:R为关系名,n为关系的度(或目),D1, D2,…, Dn为域名 由于域名可以相同,为了加以区分,必须为每一列起一个名, 称属性Attribute,故关系常表示为: R(A1,A2,…,An ) 例:从D1×D2×D3中取一 个家庭关系 家庭(丈夫,妻子,孩子)2008-9-21家庭丈夫 张伟 张伟 李强妻子 赵梅 赵梅 朱兰孩子张小伟 张小梅 李小兰哈工大计算机学院 张建国Slide 3-8第3章 关系数据库3.1 关系的理论基础(Cont.)(4) 属性到域的映象 若属性名与域名相同,则用域名作属性名. 若属性名与域名不同,则需要指出属性到域的映象. Ai=Dom(Di) 表明:属性Ai来自于域Di 例:课程(课号,课名,学时数,性质,先修课号) 域名: 课号,课名,学时数,性质 先修课号来自域课号,用先修课号=Dom(课号)表示2008-9-21哈工大计算机学院 张建国Slide 3-9第3章 关系数据库3.1 关系的理论基础(Cont.)(5) 数据库关系与数学中关系的区别 关系模型对其数学定义作了适当的扩充: 笛卡尔积可以是一个无限集合,但关系必须是有限集合. 在数学意义上, (d1,d2,…,dn)≠ (d2,d1,…,dn) 列之间不满足交换律,故通过为关系的每一个列加一个属性 名,取消关系中列的有序性的限制. 这是要注意的 !2008-9-21哈工大计算机学院 张建国Slide 3-103.2 关系模型的基本概念(Cont.)(6) 关系的性质列是同质的:每一列中的数据类型相同列名是唯一的:不同的列(属性)可以来自于同一个域, 需要指出属性到域的映象行的顺序无关:任何两行可以互换列的顺序无关:任何两列可以互换任何两行不能完全相同:由主码区分分量必须是原子量:每一列不可再分割3.1 关系的理论基础(Cont.) (7) 关系的优点与不足关系模型的优点理论基础扎实:集合论,关系数据理论.概念单一:实体用关系表示,联系也用关系表示.存取路径对用户是透明的:用户不必知道存取路径规范化:最基本的要求是每一个属性不可再分割.数据用表表示,查询结果也用表表示.关系模型的缺点效率不如非关系模型,因此需要进行查询优化,这样增加了DBMS自身的开发难度.但由于计算机处理速度的提高,数据库优化算法的改善,使关系数据库的效率仍远高于其他数据模型3.2 关系的数据结构关系模型是通过满足一定条件的二维表来表示实体集合及数据之间联系的一种数据模型.具有坚实的数学基础和较严密的理论,使用灵活方便,得到了迅速发展,80年代以后的数据库系统几乎都支持关系模型.关系的逻辑数据结构实体和联系都用关系表示.从用户的观点看,关系是一张二维表.关系的存储结构实体和联系都用关系(表)来表示.每个表可对应一个文件,也可以将多个表存储在一个文件中.3.2 关系的数据结构(Cont.)课程学生选课分数mn学生(学号,姓名,性别,出生日期,专业)课程(课号,课名,学时,学分,性质)选课(学号,课号,分数)关系的数据结构(关系模式)注意:在关系数据库理论中,关系Relation 就是表Table ;有些资料将联系Relationship 称为关系Relation.例:一个学生关系学生(学号,姓名,性别,出生日期,专业)计算机1982-12-03男张伟1022211103计算机1983-05-23女李小莉1022211102…………………………计算机1982-02-18男王小明1022211101专业出生日期性别姓名学号关系名属性名记录(元组)数据项,分量码学生理论研究时称“关系”,在具体数据库中称“表”3.2 关系的数据结构(Cont.)3.2 关系的数据结构(Cont.)关系的术语关系模式Relation Schema:关系的型,是对关系的描述,即关系的框架关系Relation:关系模式的一组具体取值关系数据库模式Relation Database Schema:关系模式的集合关系数据库Relation Database:关系的集合元组Tuple:关系中的一行属性Attribute:由于域可以相同,为了区分,必须为每个列取一个名字,称为属性域Domain:属性的取值范围3.2 关系的数据结构(Cont.)超码(键)Super Key:能唯一标识一个元组的属性组候选码(键)Candidate Key:能唯一标识一个元组的最小属性组主码(键)Primary Key:若候选码有多个,选择其中的一个作主码例:学号,身份证号主属性Primary Attribute:候选码中的属性非主属性Non-primary Attribute:不包含在任何候选码中的属性全码All Key:全部属性都是主属性关系操作是集合操作,只需指出要干什么,不必指出怎么干,不必指出存取路径.查询(检索)操作从数据库中查找数据更新操作插入数据记录修改数据记录删除数据记录所有关系操作都必须满足完整性约束条件.保证数据是正确的3.3关系代数3.3关系代数(Cont.)关系操作分类关系代数通过对关系的运算表示查询方式关系演算用谓词表示查询方式元组关系演算:谓词变元的基本对象是元组域关系演算:谓词变元的基本对象是域结构化查询语言SQL一种可实际使用的语言具有关系代数和关系演算双重特点,集DDL、DML、DCL于一体,已成为关系数据库的标准语言3.3关系代数(Cont.)关系代数运算包括两大类传统的集合运算:从行的角度进行运算.并∪, 交∩,差—,广义向卡尔积×专门的关系运算:从行和列两种角度进行运算.选择σ,投影π,连接⋈,除÷在各种运算中,使用下列运算符比较运算符: <, ≤, =, >, ≥, ≠逻辑运算符:¬(非),∧(与),∨(或)1.传统的集合运算前提条件二目运算,关系R 和S 具有相同的目n;相应的属性来自同一个域.R SR S交运算R ∩SR ∩S={t |t ∈R ∧t ∈S}结果仍由n 目关系组成,由既属于R 又属于S 的元组组成,用于检索操作.并运算R ∪SR ∪S={t |t ∈R ∨t ∈S}结果仍由n 目关系组成,由属于R 或属于S 的元组组成,用于插入操作.3.3 关系代数(Cont.)差运算R-S={t |t ∈R ∧t ∉S}结果仍由n 目关系组成,由属于R ,但不属于S 的元组组成,用于删除操作.RSR S广义笛卡尔积R ×S={ t r ^t s |t ∈R ∧t ∈S}设R 的目为n ,S 的目为m ,结果为n+m 目关系,其中前n 列是关系R 的一个元组,后m 列是关系S 的一个元组.设R 有k1个元组,S 有k2个元组,则R ×S 有k1 ×k2个元组.3.3关系代数(Cont.)c1c2c1c2b1b2b2b3a1a1a2a1C B A R ∪Sc2c2c1c2c2c2c2c2c1S.C b2b3b2b2b2b3b2b3b2a1a1a2a1a1a1a1a1a2c1c1c1c2c2c2c1c1c1b1b1b1b2b2b2b2b2b2a1a1a1a1a1a1a2a2a2S.B S.A R.C R.B R.A R ×SR ∩Sc2c1b2b2a1a2C B A c2b2a1C B A R-Sc2c2c1b2b3b2a1a1a2C B A Sc1c2c1b1b2b2a1a1a2C B A R3.3 关系代数(Cont.)一个学生-课程系统S-C 有三个关系:计算机信息数学信息Sdept 20191819男女女男李勇刘晨王敏张立221101231101232101231102Sage Ssex Sname Sno 928588908010011002100310021003221101221101221101231101231102Grade Cno Sno4243424Credit 10051001100610071006数据库高等数学信息系统操作系统数据结构数据处理C 语言1001100210031004100510061007PCno Cname Cno StudentCourseSCGradem n StudentCourseSC 2.专门的关系运算3.3 关系代数(Cont.)选择运算SelectionσF (R)={r |r ∈R ∧F(r )=’True ’}F 是一个逻辑表达式;结果取在关系R 中选择满足条件F 的元组.信息信息Sdept 1919女男刘晨张立231101231102Sage Ssex Sname Sno 例:在S-C 系统中,查询"信息"系全体学生.σSdept =‘信息’(Student)或σ5=‘信息’(Student)3.3 关系代数(Cont.)投影运算ProjectionΠA(R)={r[A]|r∈R}A是若干个属性结果取关系R中指定的列,并去掉重复元组,组成新关系.例:查询全体学生的学号,姓名和系名.ΠSno,Sname,Sdept(Student)由于学号是唯一的,查询结果的记录个数与表中的记录个数相同.例:查询所有系名.ΠSdept(Student)去掉重复的元组后,查询结果仅与系的个数相同.计算机信息数学信息Dept李勇刘晨王敏张立221101231101232101231102SnameSno计算机数学信息Dept3.3 关系代数(Cont.)连接JoinR ⋈S= {t r ^t s |t r ∈R ∧t s ∈S ∧t r [A]=t s [B]}A θBA 和B 分别是R 和S 中度数相同且可比的属性或属性组.结果为R ×S 中满足条件A θB 的元组,其前n 个属性取自于R ,后m 个属性取自于S.56812b1b2b3b4a1a1a2a2C B A R371022b1b2b3b3b5E B S71071010E b2b3b2b3b3S.B 55668b1b1b2b2b3a1a1a1a2a2C R.B A R ⋈S C<E 例:R ⋈SC<E3.3 关系代数(Cont.)等值连接R ⋈S={t r ^t s |t r ∈R ∧t s ∈S ∧t r [A]=t s [B]}A=B 例R ⋈SR.B=S.B 56812b1b2b3b4a1a1a2a2C B A R 371022b1b2b3b3b5E B SR ⋈SR.B=S.B 37102E b1b2b3b3S.B 5688b1b2b3b3a1a1a2a2C R.B A 3.3 关系代数(Cont.)自然连接Nature JoinR ⋈S={t r ^t s |t r ∈R ∧t s ∈S ∧t r [B]=t s [B]}等值连接与自然连接的区别:自然连接要求两个关系中具有相同的属性列B ,所以运结果仅保留一列B.等值连接保留两个关系的A 和B 列(即使R.B=S.B ).例:R ⋈S56812b1b2b3b4a1a1a2a2C B A R371022b1b2b3b3b5E B S37102E 5688b1b2b3b3a1a1a2a2C B A R⋈S3.3 关系代数(Cont.)各种连接的例子56812b1b2b3b4a1a1a2a2C B A R371022b1b2b3b3b5E B SR ⋈SR.B=S.B37102E b1b2b3b3S.B 5688b1b2b3b3a1a1a2a2C R.B A 71071010Eb2b3b2b3b3S.B 55668b1b1b2b2b3a1a1a1a2a2C R.B A R ⋈SC<E37102E 5688b1b2b3b3a1a1a2a2C B A R ⋈S3.3 关系代数(Cont.)查找全体同学的学号,姓名,课名和成绩计算机信息数学信息Sdept 20191819男女女男李勇刘晨王敏张立221101231101232101231102Sage Ssex Sname Sno 928588908010011002100310021003221101221101221101231101231102Grade Cno Sno42434Credit 1005100110061007数据库高等数学信息系统操作系统数据结构10011002100310041005PCno Cname Cno StudentCourseSC 3.3 关系代数(Cont.)ΠSno,Sname,Cname, Grade (Student ⋈SC ⋈Course )自然连接的例子1111111212部门号财务部财务部财务部人力资源部人力资源部名称62130236213023621302362450386245038男女女女男李军赵萍董辉常萍张伟11011102110312011202电话性别姓名职工号职工⋈部门1111111212男女女女男李军赵萍董辉常萍张伟11011102110312011202部门号性别姓名职工号62130236245038财务部人力资源部1112电话名称部门号部门职工3.3 关系代数(Cont.)例:(R)L ⋈(S)R.B=S.B ∨R左连接Left Join(R)L ⋈(S)={(t r ^t s |t r ∈R ∧t s ∈S ∧t r [B]=t s [B])∨(t r |t r ∈R)}R.B=S.B ∨R56812b1b2b3b4a1a1a2a2C B A R371022b1b2b3b3b5E B SR ⋈SR.B=S.B ∨R 37102E b1b2b3b3S.B 568812b1b2b3b3b4a1a1a2a2a2C R.B A 3.3 关系代数(Cont.)左连接的例子11111212职工.部门号11111212部门.部门号财务部财务部人力资源部人力资源部名称6213023621302362450386245038男女女女男李军赵萍董辉常萍张伟11011102110312011202电话性别姓名职工号职工L ⋈部门11111212男女女女男李军赵萍董辉常萍张伟11011102110312011202部门号性别姓名职工号62130236245038财务部人力资源部1112电话名称部门号部门职工3.3 关系代数(Cont.)右连接Right Join(R)R ⋈(S)={(t r ^t s |t r ∈R ∧t s ∈S ∧t r .A=t s .B)∨(t s |t s ∈S )}R.B=S.B ∨S例:(R)R ⋈(S)R.B=S.B ∨S56812b1b2b3b4a1a1a2a2C B A R371022b1b2b3b3b5E B SR ⋈SR.B=S.B ∨S371022Eb1b2b3b3b5S.B5688b1b2b3b3a1a1a2a2CR.BA3.3 关系代数(Cont.)右连接的例子1111111212男女女女男李军赵萍董辉常萍张伟11011102110312011202部门号性别姓名职工号621302362450386310320财务部人力资源部生产部111213电话名称部门号1111111212职工.部门号111111121213部门.部门号财务部财务部财务部人力资源部人力资源部生产部名称621302362130236213023624503862450386310320男女女女男李军赵萍董辉常萍张伟11011102110312011202电话性别姓名职工号职工R ⋈部门部门职工 3.3 关系代数(Cont.)除Division给定两个关系R(X,Y)和S(Y,Z),其中X,Y,Z 为属性组.R 中的Y 与S 中的Y 可以有不同的属性名,但必须出自同一个域.R 与S 的除运算得到一个新关系P(X),P 是在R 中满足下列条件的元组在X 列上的投影:在R 中分量值X 的象集Y x 包含S 中Y 上投影的集合.记作:R ÷S={t r [X]|t r ∈R ∧πy (S) ⊆Y x }其中Y x 为X 在R 中的象集.例:求至少选修了1001号和1003号课程的学生号码.πSno,Cno (SC)÷K3.3 关系代数(Cont.)10011003Cno关系代数综合练习的例子计算机信息数学信息Dept 20191819男女女男李勇刘晨王敏张立221101231101232101231102Age Sex Sname Sno 928588908010011002100310021003221101221101221101231101231102Grade CnoSno4243424Credit 10051001100610071006数据库高等数学信息系统操作系统数据结构数据处理C 语言1001100210031004100510061007PCno Cname Cno StudentCourseSCGradem n StudentCourseSC3.3 关系代数(Cont.)3.3 关系代数(Cont.)关系代数综合练习求"计算机"系全体学生的学号和姓名.求全部学生的学号,姓名,课程,成绩.求学号为"221101"的学生的全部成绩,包括学号,姓名,课名,成绩.求课程"高等数学"的成绩单,包括学号,姓名,系名,成绩.求选修了课程的学生的学号和姓名.求学生的年龄分布情况.求"信息"系全体学生所选修的课程名称.3.4 关系的完整性关系的完整性约束关系中的所有数据必须满足的约束条件三类完整性实体完整性参照完整性用户定义完整性3.4 关系的完整性(Cont.)1. 实体完整性规则若属性A是基本关系R的主属性,则A不能取空值.关系模型的表分为基本表(基本关系),查询表和视图.基本表:实际存在的表查询表:查询结果表视图:定义的虚表空值与零值不同空值:没有值,但不是0零值:其值为0注意空值与零值的区别3.4 关系的完整性(Cont.)例: 学生(学号,姓名,年龄,系名)学号是主码中的属性,则学号不能为空.自动化张莉0636101010322刘云06361010102管理工程21李伟06361010101系名年龄姓名学号主属性不能取空值非主属性可以取空值3.4 关系的完整性(Cont.)2. 参照完整性实体之间的联系是通过外部码进行的.例:学生(学号,姓名,性别,系号)系(系号,系名,电话)定义:外键Foreign Key设F是基本关系R的一个或一组属性,但F不是R的主码.若F 与基本关系S的主码Ks相对应,则称F是基本关系R的外码(R 可以与S是同一关系).称R为参照关系,S为被参照关系或目标关系.在学生(学号,姓名,性别,专业,班长学号)中班长学号是也是一个学号,必须与学号出自同一个域,故班长学号也是外码.参照完整性规则若属性或属性组F 是基本关系R 的外码,则:F 在R 中取空值;若F 在R 中非空则其在S 中必须存在.3.4 关系的完整性(Cont.)02张莉063610101030221王刚0636101010422刘云063610101020121李伟06361010101系号年龄姓名学号R:学生86282208自动化0286282135计算机01电话系名系号S:系3.4 关系的完整性(Cont.)3. 用户定义完整性根据用户的具体要求定义的完整性.例:考试成绩在0~100分之间.姓名最多为4个汉字.性别必须取"男"或"女".规定职务越高则工资就越高.哈尔滨市汽车牌号为"黑AXXXXX".修改工资时,新工资值不能小于旧工资值.职工的月奖金不能高于全体职工平均奖金的3倍.……本章小结关系数据库的产生与发展E.F.Codd关系模型的三个组成部分数据结构、关系操作、完整性约束关系的数学思想域、笛卡尔积、关系、关系模式、属性到域的映象关系的基本概念关系、关系模式、关系数据库、关系数据库模式、属性、超码、候选码、主码、主属性、非主属性本章小结(Cont.)关系代数传统的集合运算:并、交、差、广义笛卡尔积专门的关系运算:选择、投影、连接关系的三类完整性实体完整性参照完整性用户定义完整性本章作业与任务提交部分用关系代数表示下列查询查询全体学生的全部数据.查询全体学生的学号,姓名和性别.查询全体”女”同学的全部信息.查询所有系的名字.查询”计算机系”全体同学的学号和姓名.查询学号为”053610201”的学生各门课程的成绩查询”数据库系统”课程的成绩单.查询全体同学的学号,姓名,课名和分数.本章作业与任务(Cont.)复习部分复习本章内容复习本章概念阅读教材中相关内容。