《数据库原理》ppt.ppt
1,数据库系统原理,主讲人:彭一明 教材:数据库系统原理教程王珊等、清华大学出版社,2,前言,1.学习该课程的目的2.学习内容3.学习方法与要求4.参考书,3,1.学习该课程 的目的,数据库技术是数据管理的最新技术。(20世纪60年代中期)它的出现极大地促进了计算机应用向各行各业渗透。目前基于数据库技术的计算机应用已成为计算机应用的主流(占 60%)电子政务与管理信息系统(MIS)-政府、企业、银行、饭店、旅游、医疗、远程教育 网络应用(计费系统、目录服务)人工智能系统、专家系统、地理信息系统、工程、科学统计以及图形、图象、CAD、多媒体等领域有广泛的应用,其数据库技术起着关键作用。数据库系统原理是从事数据库应用系统开发、维护和数据库管理系统的建立及相关理论研究必备的基础知识。,4,2.学习内容,本课以关系数据库为重点比较全面讲解数据库的基本概念和基本技术。第一章 绪论 概述 数据管理的进展、数据模型、数据库、数据库系统、数据库管理系统、数据库工程的基本概念。第二章第四章 讲解关系数据库 关系数据库数据模型、数据语言、关系数据库语言SQL、关系数据库设计理论第五章 数据库保护 安全性、完整性、并发控制、恢复第六章 数据库设计第七章 关系数据库管理系统产品实例第八章 数据库技术新进展,5,3.学习方法与要求,该课的特点:以学习数据库的基本概念、基本技术和数据库设计为主。不象学习sql server,oracle,学习语言,编程为主。有些概念和语句的语法不仅要熟记,还要了解用在何处?作用是什么?怎么使用?认真看书、听讲、复习、思考、讨论先修课有操作系统、离散数学、数据结构认真完成作业及每章同步练习题上机(通过MS Sql Serevr 2000 学习sql 语言),6,两次面授课程两次语音答疑期末复习串讲课程论坛,7,4.参考书,(1)萨师煊,王珊 数据库系统概论(第四版)高等教育出版社(2)徐洁磐,王银银数据库系统引论1996 南京大学出版社(3)王能斌 数据库系统 1995 电子工业出版社(4)李昭原主编,罗晓沛主审 数据库技术新进展1997 清华大学出版社(5)余晨,李文炬 编著 SQL Server 2000 培训教程2001年7月第1版 2003年9月第7次印刷,清华大学出版社(6)上机内容+sql概要语法(随课件光盘一起发布),8,第一章 绪论,理解数据、数据库、数据库管理系统和数据库系统的概念。掌握数据库系统的特点,数据库系统的三级模式结构,数据库系统的组成。掌握数据模型的相关概念。熟练掌握E-R模型的表示方法。,9,1数据:实际上是描述事物的符号记录。2数据管理是指对数据的分类,组织,编码,储存,检索和维护。经历了三个阶段:(1)人工管理阶段(2)文件系统阶段(3)数据库系统阶段3数据库(database,简称DB)数据库是长期储存在计算机内、有组织的、可共享的数据集合。4数据库管理系统(简称DBMS)是数据管理软件。功能:数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制。5数据库系统(简称DBS)指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。,10,数据库系统特点(4页)5点(1)数据的结构化面向全组织复杂的数据结构(2)数据的共享性好,冗余度小(3)具有较高的数据与程序独立性(4)数据由DBMS统一管理和控制(安全性控制,完整性控制,并发控制,数据库恢复)(5)数据的最小存取单位是数据项。7 数据的逻辑独立性 当数据的总体逻辑结构改变时,通过数据的总体逻辑结构与某类应用所涉及的局部逻辑结构之间的映象或转换功能保持数据的局部逻辑结构不变,由于应用程序是依据数据的局部逻辑结构编写的,所以应用程序不必修改。这就是数据与程序的逻辑独立性,简称数据的逻辑独立性。,11,8.数据的物理独立性 当数据的存储结构(或物理结构)改变时,通过数据的存储结构与逻辑结构之间的映象或转换功能保持数据的逻辑结构不变,从而应用程序也不必改变。这就是数据与程序的物理独立性,简称数据的物理独立性。9数据模型的重要性及组成 数据模型是数据库系统的核心与基础。各种机器上实现的DBMS软件都基于某种数据模型,数据库发展阶段的划分也是以数据模型的发展作为主要的依据和标志。10.数据模型由三部分组成:数据结构、数据操作、完整性约束,12,数据模型概述,在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。数据模型就是现实世界的 模拟。数据模型应满足三方面要求:一是能比较真实地模拟观实世界;二是容易为人所理解;三是便于在计算机上实现。模型划分为两类:它们分属于两个不同的层次。第一类模型是概念模型,也称信息模型,它是按用户的观点对数据和信息建模。另一类模型是数据模型,它是按计算机系统的观点对数据建模。主要包括网状模型、层次模型、关系模型等。,13,数据模型是数据库系统的核心和基础。各种机器上实现的DBMS软件都是基于某种数据模型的。为了把现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型。通常分二步:首先把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统,不是某个DBMS支持的数据模型,而是概念级的模型概念模型;然后再把概念模型转换为计算机上某一DBMS支持的数据模型。概念模型实际上是现实世界到机器世界的一个中间层次。用于信息世界的建模,是现实世界到信息世界的第一层抽象,是用户与数据库设计人员之间进行交流的语言。,概念模型,14,图110 对象的抽象模型,15,1 信息世界的基本概念,信息世界(概念模型)涉及的概念主要有:(1)实体(entity)客观存在并可相互区别的事物称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系,例如,一个职工、一个学生、一个部门、一门课、学生的一次选课、部门的一次订货,老师与系的工作关系(即某位老师在某系工作)等。(2)属性(attribute)实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。例如,学生实体可以由学号、姓名、性别、出生年份、系、入学时间等属性组成(94002268,张山,男,1976,计算机系,1994)。这些属性组合起来表征了一个学生。,16,(3)码(key)唯一标识实体的属性集称为码。例如,学号是学生实体的码。(4)域(domain)属性的取值范围称为该属性的域。例如,学号的域为8位整数,姓名的域为字符串集合年龄的域为小于35的整数,性别的域为(男,女)。(5)实体型(entity type)用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。例如,学生(学号,姓名,性别,出生年份,系,入学时间)就是一个实体型。(6)实体集(entity set)同型实体的集合称为实体集。例如,全体学生就是一个实体集。,17,(7)联系(relationship)在现实世界中,事务内部以及事务之间是有联系的,在信息世界中,这些联系反映为实体内部的联系和实体之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系。两个实体型之间的联系可以分为三类:一对一联系(1:1)如果对于实体集A中的每一个实体,实体集B中至多有一个实体与之联系,反之亦然。称实体集A与实体集B具有一对一联系。记为1:1。例如:班级与班长。,18,一对多联系(1:n),如果对于实体集A中的每一个实体,实体集B中有n个实体(n=0)与之联系,反之对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,称实体集A与实体集B具有一对多联系。记为1:n。例如,班级与学生。,19,多对多联系(m:n),如果对于实体集A中的每一个实体,实体集B中有n个实体(n=0)与之联系,反之对于实体集B中的每一个实体,实体集A中有m个实体(m=0)与之联系,称实体集A与实体集B具有多对多联系。记为m:n。例如,课程与学生。,20,概念模型应该能够方便、准确地表示出信息世界中的常用概念。表示方法很多,其中最为常用的是于1976年提出的实体联系方法(entity-relationship approach)。该方法用ER图来描述现实世界的概念。ER图提供了表示实体型、属性和联系的方法是:实体型:用矩形表示,矩形框内写明实体名。属性:用椭圆形表示,并用无向边将其与相应的实体连接。联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。,概念模型的表示方法,21,11概念模型常用表示方法:实体联系法(E-R图描述)E-R图成分(实体、属性、联系),会画E-R图。,22,完整的E-R图有属性实体的属性表示,23,E-R图实例(选修与组成的属性标在联系中),24,25,数据模型,在机器世界中不同的数据模型具有不同的数据结构形式。目前最常用的数据模型有层次模型(hierarchical model)、网状模型(network model)、关系模型(relational model)、面向对象的模型。其中层次模型和网状模型统称为非关系模型。非关系模型的数据库系统在20世纪70年代与80年代初非常流行。关系模型的数据库系统80年代初到现在非常流行。面向对象模型是在20世纪80年代以来,面向对象的方法和技术在计算机各个领域的应用发展起来的。,26,关系模型是目前最重要的一种模型。美国IBM公司的研究员EFcodd于1970年发表题为“大型共享系统的关系数据库的关系模型”的论文,文中首次提出了数据库系统的关系模型。20世纪80年代以来,计算机厂商新推出的数据库管理系统(DBMS)几乎都支持关系模型。数据库领域当前的研究工作都是以关系方法为基础。1关系数据模型的数据结构 在用户看来,一个关系模型的逻辑结构是一张二维表,它由行和列组成。例如,图l23中的学生人事记录就是一个关系模型,它涉及下列概念。,关系数据模型,27,12关系模型中几个主要术语 关系、元组、属性、域、分量、码、关系模式,关系:定义2.3 D1D2Dn的子集叫作在域D1,D2,Dn上的关系,用 R(D1,D2,Dn)表示。关系是笛卡尔积的子集,所以关系也是一个二维表。元组:表的每行为一个元组。属性:对每列起一个名字,称为属性(表中的一列即为一个属性)。域(domain):属性的取值范围。分量:元组中的一个属性值。码(候选码):若关系中的某一属性组的值能唯一地标识一个元组,而其真子集不行,则称该属性组为候选码。主码:若一个关系有多个候选码,则选定其中一个为主码关系模式:对关系的描述,一般表示为:R(U)关系名(属性1,属性2,.,属性n)三元组表示法:R(U,F),28,29,关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,.,属性n)例如:学生(学号,姓名,性别,系别,年龄,籍贯)课程(课程号,课程名,学分)在关系模型中,实体以及实体间的联系都是用关系来表示。例如学生与课程之间的多对多联系(选修)在关系模型中可以表示如下:选修(学号,课程号,成绩),30,关系数据模型的操纵主要包括查询、插入、删除和更新数据。这些操作必须满足关系的完整性约束条件。关系的完整性约束条件包括三大类:实体完整性、参照完整性和用户定义的完整性。其具体含义将在后面介绍。关系模型中的数据操作是集合操作,操作对象和操作结果都是关系、即若干元组的集合。而不像非关系模型中那样是单记录的操作方式。另一方面,关系模型把存取路径向用户隐蔽起来,用户只要指出“干什么”或“找什么”,不必详细说明“怎么干”或“怎么找”从而大大地提高了数据的独立性,提高了用户的生产率。Select*from student,2关系数据模型的操纵与完整性约束,31,13集中式数据库系统的三级模式结构及二级映象。数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成。两级映象功能是:外模式/模式映象,模式/内模式映象。,32,掌握关系模型、关系、关系模式、关系数据库、关系数据库系统和关系数据库管理系统的概念。正确理解关系的码、外码理解关系的完整性内容及规则会用关系代数表示查询。一、基本概念:1.关系模型:由关系数据结构、关系操作集合和完整性约束三部分组成。关系的数据结构 关系模型的数据结构非常单一,是一张扁平的二维表。现实世界的实体以及实体间的各种联系都用关系二维表表示。关系操作特点:采用集合操作方式,即操作的对象和结果都是集合。完整性约束实体完整性、参照完整性和用户定义的完整性,第二章关系数据库,33,2关系模式(41页)定义2.4:关系的描述称为关系模式,形式化表示R(U,D,DOM,F)。R为关系名,U为组成关系的诸属性名,D为属性的域,DOM表示属性向域的映象,F是属性间的数据依赖关系。通常简记为R(U)或记为R(A1,A2,An)。3关系数据库关系数据库的型与值(42页)关系模式是型,关系是值。关系数据库模式与关系数据库通常统称为关系数据库4.关系数据库系统:支持关系模型的数据库系统.5.关系数据库管理系统简称为关系系统,34,二、关系模型三类完整性(42),实体完整性,参照完整性,用户定义完整性 实体完整性规则,参照完整性规则,主、外码概念及用途。候选码:若关系中的某一属性组的值能唯一地标识一个元组,而其真子集不行,则称该属性组为候选码(candidate key)。主码:若一个关系有多个候选码,则选定其中一个为主码(primary key)。主属性:候选码中的属性称主属性。非主属性:不包含在任何候选码中的属性称为非码属性也称为非主属性。规则21 实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。,35,外码:定义2.5 设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(foreign key),并称基本关系R为参照关系(referencing relation),基本关系S为被参照关系(referenced relation)或目标关系(target relatton)。关系R和S不一定是不同的关系。规则2.2 参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。,36,选择又称为限制(restriction),它是在关系R中选择满足给定条件的诸元组,记作:,其中F表示选择条件。,(1)选择(selection),三、关系操作1关系模型的操作:8种:传统的集合运算4种(并、交、差、广义笛卡尔积)专门的关系运算4种(选择,投影,连接,除)操作方式的特点:集合操作2用关系代数表示关系运算选择,投影,连接,除,37,关系R上的投影是从R中选择出若干属性列组成新的关系。A(R)tA|t R 其中A为R中的属性列。投影操作是从列的角度进行的运算。()连接(join)它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组,记作:,(2)投影(projection),自然连接:两个关系中进行比较的分量必须是相同的属性组,取值相同,并且要在结果中把重复的属性去掉。即若R和S具有相同的属性组B,则自然连接可记作:,38,例1 查询信息系(IS系)全体学生Sdept=IS(Student)或 5=IS(Student)例2 查询学生关系student 在学生姓名和所在系两个属性上的投影 Sname,Sdept(student)或,(student)例3 查询至少选修了一门其直接先行课为6号课程的学生姓名(52页),Sname(Cpno=6(Course,SC,Student),关系代数例题,例4 检索信息系(IS系)学生的姓名Sname Sdept=IS(Student)Select Sname from student where Sdept=IS,39,1SQL语言SQL的数据定义功能、SQL的数据操纵功能SQL的数据查询功能、SQL的数据控制功能2嵌入式SQL语句与主语言之间的通信,第三章关系数据库标准语言-SQL,40,SQL语言支持关系数据库三级模式结构,如图31所示。其中外模式对应于视图(view)和部分基本表(base table)、模式对应于基本表,内模式对应于存储文件。,SQL语言支持三级模式结构,41,基本表是本身独立存在的表,在SQL中一个关系对应一个表,一些基本表对应一个存储文件,一个表可以带若干索引,索引存放在存储文件中。存储文件的逻辑结构组成了关系数据库的内模式。存储文件的物理文件结构是任意的。视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。用户可以用SQL语言对视图和基本表进行查询。在用户眼中,视图和基本表都是关系,而存储文件对用户是透明的。,基本表、存储文件与视图,42,修改视图和索引怎么办?,数据定义,43,CREATE TABLE表名(列名数据类型列级完整件约束条件,列名数据类型列级完整性约束条件.,表级完整性约束条件);其中表名是基本表的名字,它由一个或多个属性(列)组成。属性要说明类型与长度,建表的同时还可定义与该表有关的完整性约束条件。如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上。,1定义基本表SQL语言使用CREATE TABLE语句定义基本表,其一般格式如下:,44,例1 建立一个“学生”表Student,它由学号sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept 5个属性组成,其中学号属性不能为空,并且其值是唯一的。CREATE TABLE Student(Sno CHAR(5)NOT NULL UNIQUE,Sname CHAR(20),Ssex char(2),Sage int,Sdept CHAR(15);系统执行上面的语句后,就在数据库中建立一个新的空的“学生”表,并将有关“学生”表的定义及有关约束条件存放在数据字典中。,45,2删除基本表,DROP TABLE表名;例5 删除Student表DROP TABLE Student;,46,3建立与删除索引,通过索引可以大大加快表的查询。在基本表上建立一个或多个索引,系统在存取数据时会自动选择合适的索引作为存取路径,用户不必也不能选择索引。1建立索引建立索引使用CREATE INDEX语句,其一般格式为:CREATE UNIQUE CLUSTER INDEX ON(,);其中,表名指定要建索引的基本表的名字。索引可以建在该表的一列或多列上,各列名之间用逗号分隔。每个列名后面还可以用次序指定索引值的排列次序,包括ASC和DESC。,47,例6 为学生课程数据库中的Student,Course,SC 3个表建立索引。其中Student表按学号升序建立唯一索引,course表按课程号升序建立唯一索引,sc表按学号升序和课程号降序建唯一索引。CREATE UNIQUE INDEX Stusno ON Student(Sno);CREATE UNIQUE INDEX Coucno ON Course(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);2删除索引删除索引使用DROP INDEX语句,其一般格式为 DROP INDEX索引名;例7 删除Student表的Stusname索引。(stusno)DROP INDEX Stusname;DROP INDEX Stusno;,48,CREATE VIEW视图名(列名,列名.)AS子查询 WITH CHECK OPTION;其中子查询可以是任意复杂的SELECT语句,但通常不允许含有ORDER BY子句和DISTINCT短语。WITH CHECK OPTION表示对视图进行UPDATE,INSERT和DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)。如果CREATE VIEW语句仅指定了视图名,省略了组成视图的各个属性列名,则隐含该视图由子查询中SELECT子句目标列中的诸字段组成。,4.建立与删除视图 1.建立视图,49,视图建好后,若导出此视图的基本表被删除了,该视图将失效,但一般不会被自动删除。DROP VIEW;,.删除视图,50,数据操纵,51,SQL中数据更新包括插入数据、修改数据和删除数据:,341 插入数据,SQL的数据插入语句INSERT通常有两种形式。1.插入单个元组,52,例1 将一个新学生记录(学号:95020;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入Student表中。,例2 插入一条选课记录(95020,1),342 修改数据,修改操作又称为更新操作,其语句的一般格式为:,新插入的记录grade列上取空值。,(a),(b),53,其功能是修改指定表中满足WHERE子句条件的元组。其中SET子句用于指定修改方法,即用表达式的值取代相应的属性列值。如果省略WHERE子句,则表示要修改表中的所有元组.,1.修改某一个元组的值例4 将学生95001的年龄改为22岁。2修改多个元组的值例5 将所有学生的年龄增加1岁,UPDATE 表名 SET 列名表达式,列名表达式.WHERE条件;,54,DELETEFROM表名WHERE条件;DELETE语句的功能是从指定表中删除满足WHERE子句条件的所有元组。如果省略WHERE子句,表示删除表中全部元组,但表的定义仍在字典中。也就是说,DELETE语句删除的是表中的数据,而不是关于表的定义。删除某一个(或某些)元组的值 例7 删除学号为95019的学生记录。DELETE FROM Student WHERE Sno95019;,343 删除数据,55,2删除多个元组的值,例8 删除所有学生的选课记录。DELETE FROM SC;,56,整个SELECT语句的含义是,根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组再按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。,。如果有GROUP子句,则将结果按列名1的值进行分组统计,如果GROUP子句带HAVING短语,则只有满足指定条件的组才予输出。如果有ORDER子句,则结果表还要按列名2的值的升序或降序排序。SELECT语句既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。最基本的用法是:select 列1,列2,列3.from 表名where 条件,57,1目标列表达式有以下可选格式,数据查询,58,其中属性列名表达式可以是由属性列、作用于属性列的聚集函数和常量的任意算术运算(十、一、)组成的运算公式。集函数的一般格式为:,59,.WHERE子句的条件表达式有以下可选格式:,60,数据查询,61,(2)连接查询,自然连接,自身连接(例34查询每一门课的间接先修课),外连接(例33:Student表为主体列出每个学生的基本情况及其选课情况)SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeFROM Student LEFT OUTER JOIN SC ON Student.Sno=SC.Sno;,62,(3)嵌套查询(where 语句中可包含另个查询块),嵌套查询分为不相关子查询(in,比较运算符,any,all谓词)和相关子查询(exists)两类。不相关子查询是指子查询的查询条件不依赖于父查询。它的求解方法是由里向外处理。相关子查询是指子查询的查询条件依赖于外层父查询的某个属性值。它的求解方法是由外向里处理。,IN(ANY,ALL)构造的子查询:Where 数据项 IN(子查询)子查询输出中有 相应数据项相关子查询:Where exists(子查询)子查询的where条件中依赖于外层父查询的某个属性值用IN构造的相关子查询:Where 数据项 IN(子查询)子查询输出中有 相应数据项且条件中依赖于外层父查询的某个属性值,63,选修了2号课程的学生姓名,解一,解二,解三,64,(4)使用集函数,GROUP BY子句可以将查询结果表的各行按一列或多列取值相等的原则进行分组。与集函数一起使用,即每一组都有一个函数值。例30 查询各个课程号与相应的选课人数。SELECT Cno,COUNT(Sno)FROM SC GROUP BY Cno;查询平均分80分的课程号。Select cno from sc group by cnoHaving avg(grade)80,(5)对查询结果分组,SELECT COUNT(*)FROM Student;,65,(6)匹配符检索(_),(7)空值检索,谓词IS NULL和IS NOT NULL可用来查询空值和非空值。SELECT Sno,CnoFROM SC WHERE Grade IS NUIL;,(8)对查询结果排序,ORDER BY子句指定按照一个或多个属性列的为升序(ASC)或降序(DESC)重新排列查询结果,其中升序ASC为缺省值。SELECT*FROM Student ORDER BY Sdept,Sage DESC;,66,六、数据控制语言,GRANT语句的一般格式为:GRANT 权限,权限.ON 对象类型对象名 TO 用户,用户 WITH GRANT OPTION;REVOKE权限权限 ON对象类型对象名 FROM用户,用户;,67,2 嵌入式SQL语句与主语言之间的通信数据库工作单元与源程序工作单元之间通信主要包括:向主语言传递SQL语句的执行状态信息,使主语言能够据此控制程序流程。通过SQL通讯区(SQLCA)解决 主语言向SQL语句提供参数。通过主变量解决 将SQL语句查询数据库的结果交主语言进一步处理。通过主变量和游标(CURSOR)实现。,数据控制,