1、数据库系统概论崔文华S第1章 数据库系统概述1.1 数据管理技术的发展1.2 有关数据库的基本术语1.3 关系数据库系统1.4 数据库系统的体系结构1.5 DBMS的体系结构1.6 数据库系统运行过程1.1 数据管理技术的发展 数据管理:如何对数据进行分类组织储存检索及维护。 数据管理的三个阶段: 人工管理阶段 文件系统阶段 数据库系统阶段1.1.1 人工管理阶段 时间:20世纪50年代中期以前 背景: 硬件:外存只有卡片纸带磁带 软件:汇编语言 数据批处理 特点: 数据不进行保存 没有专门的数据管理软件 数据面向应用 只有程序的概念1.1.2 文件系统阶段 时间:20世纪50年代末到60年代
2、中期 背景: 硬件:磁盘磁鼓等直接存取的外存设备 软件:操作系统高级语言操作系统中的文件系统是专门用于数据管理的软件 文件批处理联机实时处理 特点: 数据可以长期保存在磁盘上 文件系统提供了数据与程序之间的存取方法1.1.2 文件系统阶段 数据冗余度大 文件之间缺乏联系,相互孤立1.1.3 数据库系统阶段 时间:20世纪60年代末 背景: 硬件:大容量的磁盘 联机实时处理 特点: 数据的结构化 数据共享性好 数据独立性好1.1.3 数据库系统阶段 数据存取粒度小 数据库管理系统(DBMS,database management system) 数据的完整性 数据的安全性 并发控制 数据库的恢复
3、 为用户提供了友好的接口1.2 有关数据库的基本术语 数据:计算机用来描述事物的记录(文字图形图像声音) 数据模型:是人们对现实世界的数据特征的抽象。(真实性易理解易实现) 数据模型三要素:数据结构数据操作和完整性约束 数据模型类型:层资模型网状模型关系模型1.2 有关数据库的基本术语 数据库:由DBMS管理的数据的聚集 数据库管理系统DBMS:是数据库系统核心,用户开发的数据库系统是建立在特定的DBMS之上 数据库系统DBS(database system):包括和数据库有关的整个系统:数据库DBMS应用程序数据库管理员和用户等。1.2 有关数据库的基本术语 数据库系统应该是: 允许用户用一
4、种叫做“数据定义语言“的专用语言建立新的数据库。 允许用户用一种叫做“数据操作语言“或者“查询语言“的专用语言来对数据库中的数据进行查询和更新 支持存储大量的数据,保证对数据的正确及安全使用 控制多用户的并发访问,保证并发方问不相互影响,不损坏数据1.3 关系数据库系统1.3.1 什么是关系?就是一张表 表名表名 属性(域)属性(域) 元组元组 键码键码:根据关系中的某个属性或属性集 能唯一确定一个元组,由把这个属性(集)称为关系的键码。 关系不仅可以用来表示某个实体,也可以用来表示实体和实体之间的联系1.3 关系数据库系统1.3.2 关系模型 数据以“关系”的形式,也就是二维表的形式来表示,
5、其数据模型就是关系模型。1.3.3 关系数据库系统 以关系模型为基础的数据库系统就是关系数据库系统,是当前数据库系统的主流。1.4 数据库系统的体系结构 三层模式:外模式、模式、内模式 二层映象功能:外模式/模式映象和模式/内模式映象1.4.1 三层模式结构 外模式外模式:又称为用户模式,是数据库用户和数据库系统的接口,是数据库用户的数据视图,是数据库用户可以看见和使用的局部数据的逻辑结构和特征的描描述。 一个数据库通常都有多个外模式。一个应用程序只能使用一个外模式,但同一外模式可为多个应用程序所用。 模式模式:可细分为概念模式和逻辑模式,是所有数据库用户的公共数据视而不见衅,是数据库中全部数
6、据的逻辑结构和特征的描述。 一个数据库只有一个模式。模式不但要描友谊赛数据的逻辑结构,还要描述数据之音的联系、数据的完整性、安全性要求。 内模式:内模式:又称为存储模式,是数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。 一个数据库只有一个内模式。内模式并不涉及物理记录,也不涉及硬件设备。 三层模式关系:数据库模式是数据库的核心和关键,外模式通常是模式的了集。数据按外模式的描述提供用户,按内模式的描述存储在硬盘上,而模式介于外、内模式之间,既不涉及外部的访问,也不涉及内部的存储,从而起到隔离作用,有利于保持数据的独立性,内模式依赖于全局逻辑结构,但可以独立于具体的存储设备。1.4
7、.2 两层映象功能 映象:是一种对应规则,说明映象双方如何进行转换。 外模式/模式映象 作用:把描述局部逻辑结构的外模式与描述全局逻辑结构的模式联系趣来。 当模式改变时,只要对外模式/模式映象做相应的改变,使外模式保持不变,则以外模式为依据的应用程序不受影响,从而保证了数据与程序之间的逻辑独立性,也就是数据的逻辑独立性 模式/内模式映象 作用:把描述全局逻辑结构的模式与描述物理结构的内模式联系起来。 当内模式改变时,比如存储设备或存储方式有所改变,只要模式/内模式映象做相应的改变,使模式保持不变,则应用程序就不受影响,从而保证了数据与程序之的物理独立性。1.5 DBMS的体系结构1.5.1 D
8、BMS的组成概述的组成概述 DBMS的主要组成部分如图示(P10图1.8) 三种类型的DBMS输入:查询、更新、模式更新 查询: 两种生成方式:(1)通过通用的查询接口 (2)通过应用程序的接口 更新:对数据的插入、修改和删除等操作统称为更新(如上的两种生成方式) 模式更新:数据库的模式是指数据的逻辑结构。模式更新命令一般只能由数据库管理员使用。1.5.2 查询处理程序 任务任务是把用较高级的语言所表示的数据库操作转换成一系列对数据库的请求。它的一个重要任务是“优化”查询,即为给予定的查询找出好的解答算法。1.5.3 存储管理程序 包括两部分:文件管理程序和缓冲区管理程序。它既管理磁盘存储器上
9、的数据文件,又管理存放数据文件部分内容的内存缓冲区。1.5.4 事务管理程序 事务是数据库的基本工作单元。典型的DBMS允许用户把一个或多个数据库操作组成“事务”。数据库系统常常允许多个事务并发地执行,事务管理程序的任务任务就是保证这些事务全都能正确执行。 事务的特性: 原子性 一致性 隔离性 持久性 如何实现上述特性: 加锁 日志文件 事务提交1.5.5 客户程序/服务程序体系结构 数据库管理系统通常支持客户程序/服务程序体系结构,DBMS的核心部分都属于服务程序,而客户程序则负责用户接口。1.6 数据库系统运行过程 数据库系统运行过程示意图应用程序A用户工作区DB系统缓冲区数据库数据库管理
10、系统操作系统运行日志应用程序A对应的外模式模式内模式数据字典第2章 数据库建模2.1 对象定义语言ODL2.2 实体联系模型(E/R图)2.3 设计原则2.4 子类2.5 对约束的建模 数据库建模:在设计数据库时,对现实世界进行分析、抽象、并从中找出内在联系,进而确定数据库的结构,这一过程就称为数据库建军模。它主权包括两部分内容:确定最基本的数据结构;对约束建模。 数据库模式的两种表示法:实体联系模型(E/R);对象定义语言(ODL)本章导读数据库设计的过程(建模和实现):想法ODLE/R图面向对象DBMS关系DBMS关系2.1 对象定义语言ODL 对象定义语言对象定义语言:通过给出类的属性、
11、联系和方法来描述面向对象的模型。属性用数据类型来描友谊赛。常用的数据类型包括整型、字符串、枚举型以及结构、集合、数组、包和列表等形式的结构类型。其中集合、数组、包和列表又统称为聚集类型。联系用与之相连的类来描述。联系有单值联系和多值联系之分。2.1.1 面向对象的设计 对象:指某种可观察、可研究的实体。 类:具有相似特性的对象归为一类。 三种特性: 属性(attribute):类型是由基本的数据类型构成的。只有有限的几种。 联系(relationship):类型是对某类对象的引用或是这种引用的集合。 方法(method):是能用于该类对象的函数。2.1.2 类的说明 说明一个类的最简单形式:
12、关键字interface(接口) 类的名字 用花括号括起来的类的特性表 Example: interface 2.1.3 ODL的属性 属性:它用某个简单类型的什来描述对象的某个方面。 属性的类型:整型、浮点型、字符类型、字符串类型、布尔类型、枚举类型、结构、集合、数组等类型。 例1:学生选课数据库(Course)CourseNoCourseNameTeachera1C+Mr BrownInterface Course attribute integer CourseNo; /课程号 attribute string CourseName; /课程名 Attribute string Teac
13、her; /任课老师1. 若增加一个结构类型的Date属性,用年月是表示:Attribute Sturct Date integer Year,interger Month,interger DayCourseDate; /开课日期 例2:电影类MovieInterface Movie attribute string Title; /电影名 attribute integer Year; /电影制作年 attribute integer Length; /电影长度 attribute enum Filmcolor,blackwhiteType;电影类型;注意:type的类型是枚举类型,属性t
14、ype有两种可能的取值(color,blackwhite)。2.1.4 ODL中的联系和反向联系 注意: 描述一个对象需把属性和对象间的联系都描述出来才更完整 。 例1:course 和student类间建立联系 在course添加代码:Relationship Set students ; /选课学生集合(注意有无set的区别:Relationship student represent; /课代表 ) 在student类的说明中添加:Relationship Set courses; /所选课程集合 一个完整的课程类定义:Interface course attribute integer
15、 courseno; attribute string coursename; attribut string Teacher;Relationship Set students inverse student: :courses; 例2:movie 和 actor 在movie中添加: relationship set actor; /演员集合 在actor中添加: relationship set movie; /出演电影集合 反向联系 例1:students和course并不是两个毫不相干的联系,如果某个学生出现在某门课程的选课学生集合中,那么这门课程就应该在这个学生的所选课程集合中;反
16、之亦然。 相应代语句修改如下: 在course中: relationship set students inverse Student : : course; /选课学生集合及其反向联系 在student中: relationship set courses inverse course: :students; 例2:movie和actor类中的语句修改如下: relationship Setactors inverse Actor: :movies; relationship Set movies inverse Movie: :actors; 2.1.5 联系的三种类型:多对多,多对一或一
17、对多,一对一。 P21-P23(举例讲)2.2 实体联系模型(E/R图) 三个主要部分: 实体集 属性 联系: 与ODL区别:ODL中一对反向的联系在E/R图中用单一的联系来表示,而且ODL中的联系最多只能涉及两个类,而E/R图中的联系可以涉及两个以上的实体集。 学生选课数据库结构的设计(P23 图2.2) 电影资料数据库(P24图2.3) 实体和实体集、联系与联系集2.2.1 E/R图中联系的三种类型 一对一、一对多或多对一、多对多2.2.2联系中的角色 P25图2.52.2.3 联系的多向性(P2526) 多元联系转换为二元的联系 2.3 设计原则2.3.1 真实性 最基本的设计原则:类(
18、实体集)和属性应当是真实的,应当反映客观现实。2.3.2 避免冗余 设计过程中注意:任何事物都只表达一次,否则既浪费空间,又容易造成不必要的麻烦。2.3.3 简单性 设计过程中,要设法避免引入过多的元素,要应该尽量简单明了。2.3.4 合理选择元素类型 思想:假如某个事物具有比名称更多的信息(属性),那么作为类/实体集来实现更加合适;然而,如果它除了名称之外不具有其他信息,那么作为属性可能更合适。2.4 子类 子类(subclass):从一个类中取出具有某些附加特性的对象组成一个附属的类,称为子类。子类除了具有原有类的特性以外,还具有自己附加的特性属性和/或联系。用这种类与子类的层次关系往往能
19、更好地反映现实世界的层次结构。ODL和E/R都支持这种层次结构。2.4.1 ODL中的子类例1:为研究生定义一个类Student的子类:PostgraduateInterface Postgraduate:Student attribute string Tutor; ; 注意:子类能自动继承其超类的所有特性(属性和联系) 例2:为动画片定义一个Movie的子类cartoon interface Cartoon:Movie relationship Set voices; ;2.4.2 ODL中的多重继承:一个类可以有多个子类,而子类本身又可以具有子类。一个类还可能有多个超类。 一个类有多个子
20、类:例:在movie中定义了cartoon的子类,假设再定义谋杀片子类Murder: interface Murder:Movie attribute string Weapon; 子类又可有子类,一个类可有多个超类 interface Cartoon-Murder:Cartoon,Murder; 注意:如此复杂,易造成混淆,如不同类中不同属性域的相同属性名。 避免由于多重继承而产生的冲突的机制: 指出特性(属性或者联系)的两个定义中哪一个适用于子类。 重新命名有相同名字的另一个特性。 为子类重新定义在它的一个或多个超大型类中已经定义过的某些特性。2.4.3 E/R图中的子类(isa) P30
21、 图2.102.4.4 E/R图中的继承 P30-31图2.112.5 对约束的建模 对约束建模:反映客观世界的各种数据,一般都不是孤立的,往往有着错综复杂的内在联系,而且对其取什也有一定的限制和要求,要使所建立的数据库准确、全面地反映现实世界,就要对这些内容进行说明、加以规范,这就是对约束建模。对约束建模是数据库建模的重要组成部分。对约束建模最重要的两部分是:说明某个属性或属性集构成键码;说明实体集(或类、关系)之间的引用完整性约束。 常见的约束信息: 键码:是在ODL中类的范围内唯一标识一个对象,或者在E/R图中实体集的范围内唯一标识一个实体的属性或属性集。 单值约束要求某个属性的值是唯一
22、的,键码是单值约束的主要来源。 引用完整性约束要求某个对象所引用的值在数据库中确实存在。 域约束要求某个属性的值必须处于特定的范围内或者取自特性值的集合。 一般约束是要求在数据库中保存的任意断言。2.5.1 键码 ODL: 一个键码(由一个属性组成)interface studio(key name) ; 一个键码(由属性集组成) interface Movie(key(title,year) ; 多个键码 interface Studio(key name,studioNo) ; E/R(用下划线表示): 一个键码(由一个属性组成) 一个键码(由属性集组成) 多个键码:把主键码看成实体集唯一的键码。 2.5.2 单值约束: 2.5.3 引用完整性:一个实体中某个特定属性(集)(通常称为外键码)的取值,如果不是空值,则只能引用另一个实体确实存在的键码属性(集)的值,而不能引用该键码属性取值以外的任何值,两个实体之音的这种联系就称为引用完整性。 2.5.4 其他类型的约束