一、数据库系统的组成
数据库系统(DataBase System,DBS)的组成:
- 数据库
- 数据库用户
- 计算机硬件系统
- 计算机软件系统
1. 数据库
数据库(DataBase,DB)是存储在计算机内、有组织的、可共享的数据和数据对象(如表、视图、存储过程和触发器等)的集合 这种集合按一定的数据模型(或结构)组织、描述并长期存储,同时能以安全和可靠的方法进行数据的检索和存储
2. 数据库用户
数据库管理员的主要职责
- 决定数据库中的信息内容和结构
- 决定数据库的存储结构和存取策略
- 定义数据的安全性要求和完整性约束条件
- 监控数据库的使用和运行
- 数据库的改进和重组重构
3. 软件系统
软件(Software)系统主要包括操作系统(Operating System,OS)、数据库管理系统(DBMS)及应用开发工具和应用系统等 DBMS是数据库系统的核心软件,可借助操作系统对数据库的数据进行存取、维护和管理。数据库系统的各类人员、应用程序等对数据库的各种操作请求,都必须通过DBMS完成
数据库管理系统(DBMS)的主要功能
- 数据定义功能
- DBMS提供数据定义语言(Data Define Language,DDL),定义数据的模式、外模式和内模式三级模式结构,定义模式/内模式和外模式/模式二级映像,定义有关的约束条件
- 例如,为保证数据库安全而定义用户口令和存取权限,为保证正确语义而定义完整性规则等
- 再如,DBMS提供的结构化查询语言(SQL)提供Create、Drop、Alter等语句可分别用来建立、删除和修改数据库
- 数据操纵功能
- DBMS提供数据操纵语言(Data Manipulation Language,DML)实现对数据库的基本操作,包括检索、更新(包括插入、修改和删除)等
- 例如,DBMS提供的结构化查询语言SQL提供查询语句(SELECT)、插入语句(INSERT)、修改语句(UPDATE)和删除语句(DELETE),可分别实现对数据库中数据记录的查询、插入、修改和删除等操作
- 数据库运行管理功能
- 数据的安全性(Security)控制:防止不合法使用数据库造成数据的泄露和破坏,使每个用户只能按规定对某些数据进行某种或某些操作和处理,保证数据的安全
- 数据的完整性(Integrity)控制:系统通过设置一些完整性规则等约束条件,确保数据的正确性、有效性和相容性
- 并发(Concurrency)控制:多个用户同时存取或修改数据库时,系统可防止由于相互干扰而提供给用户不正确的数据,并防止数据库受到破坏
- 数据恢复(Recovery):由于计算机系统的硬件故障、软件故障、操作员的误操作及其他故意的破坏等原因,造成数据库中的数据不正确或数据丢失时,系统有能力将数据库从错误状态恢复到最近某一时刻的正确状态
- 数据库的建立和维护功能
- 数据库的建立包括数据库的初始数据的装入与数据转换等,数据库的维护包括数据库的转储、恢复、重组织与重构造、系统性能监视与分析等。这些功能分别由DBMS的各个实用程序来完成
- 数据通信接口
- DBMS提供与其他软件系统进行通信的功能
- DBMS提供了与其他DBMS或文件系统的接口,从而使该DBMS能够将数据转换为另一个DBMS或文件系统能够接受的格式,或者可接收其他DBMS或文件系统的数据,实现用户程序与DBMS、DBMS与DBMS、DBMS与文件系统之间的通信
- 数据组织、存储和管理
DBMS负责对数据库中需要存放的各种数据(如数据字典、用户数据、存取路径等)的组织、存储和管理工作,确定以何种文件结构和存取方式物理地组织这些数据,以提高存储空间利用率和对数据库进行增、删、查、改的效率
数据库管理系统(DBMS)的组成
DBMS是由许多程序所组成的一个大型软件系统,每个程序都有自己的功能,共同完成DBMS的一个或几个工作。一个完整的DBMS通常应由语言编译处理程序、系统运行控制程序、系统建立和维护程序、数据字典等部分组成
语言编译处理程序包括数据定义语言DDL和数据操纵语言DML编译程序DDL编写的源模式被编译成各级目标模式,保存在数据字典中,供以后数据操纵或数据控制时使用
- DML语句被转换成可执行程序,实现对数据库的检索、插入、删除和修改等基本操作
系统运行控制程序负责数据库系统运行过程中的控制与管理
- 主要包括:系统总控程序、安全性控制程序、完整性控制程序、并发控制程序、数据存取和更新程序和通信控制程序等
系统建立和维护程序
- 包括:装配程序,用来完成初始数据库的数据装入;重组程序,当数据库系统性能降低时(如查询速度变慢),需要重新组织数据库,重新装入数据;系统恢复程序,当数据库系统受到破坏时,将数据库系统恢复到以前某个正确的状态
数据字典(Data Dictionary,DD)用来描述数据库中有关信息的数据目录
包括数据库的三级模式、数据类型、用户名和用户权限等有关数据库系统的信息,起着系统状态的目录表的作用,帮助用户、DBA和DBMS本身使用和管理数据库
数据库管理系统(DBMS)的DBMS的数据存取过程
(1)用户使用某种特定的数据操作语言向DBMS发出存取请求;
(2)DBMS接受请求并将该请求解释转换成机器代码指令;
(3)DBMS依次检查外模式、外模式 / 模式映象、模式、模式 /内模式映象及存储结构定义;
(4)DBMS对存储数据库执行必要的存取操作;
(5)从对数据库的存取操作中接受结果;
(6)对得到的结果进行必要的处理,如格式转换等;
(7)将处理的结果返回给用户。4.数据模型
层次模型
层次模型的主要优点:
数据结构比较简单清晰
- 查询效率高
- 提供了良好的数据完整性支持
层次模型的主要缺点:
- 现实世界中很多联系是非层次的(如多对多联系),层次模型在表示这类联系时,解决的办法:一是通过引入冗余数据(易产生不一致性),二是创建非自然的数据结构(引入虚拟结点) 。对插入和删除操作的限制比较多,因此应用程序的编写比较复杂
- 查询孩子结点必须通过双亲结点
-
网状模型
典型代表是DBTG系统,亦称为CODASYL系统,它是20世纪70年代由数据系统语言研究会(conference on data system language, CODASYL)下属的数据库任务组(data base task group, DBTG)提出的一个系统方案
满足如下两个条件的基本层次联系的集合称为网状模型
- 允许一个以上的结点无双亲
- 一个结点可以有多个双亲
网状模型是一种比层次模型更具普遍性的结构,它去掉了层次模型的两个限制,还允许两个结点之间有多种联系(称为复合联系)。因此,网状模型可以更直接地去描述现实世界
网状模型的主要优点:
- 能够更为直接地描述现实世界
- 具有良好的性能,存取效率较高
网状模型的主要缺点:
- 结构比较复杂,而且随着应用规模的扩大,数据库的结构会变得越来越复杂,不利于最终用户掌握
- 操作语言比较复杂
关系模型
1970年美国IBM公司San Jose研究室的研究员E. F. Codd首次提出了数据库管理系统的关系模型,开创了数据库关系方法和关系数据理论的研究,为数据库技术奠定了理论基础。 由于E. F. Codd的杰出工作,他于1981年获得ACM图灵奖 20世纪80年代以来,计算机厂商新推出的数据库管理系统几乎都支持关系模型,数据库领域当前的研究工作也都是以关系方法为基础
关系数据模型的数据结构
关系模型中的常用术语:
关系(relation):一个关系对应一张二维表,每一个关系有一个名称,即关系名;
元组(tuple):表中的一行称为一个元组;
属性(attribute):表中的一列称为一个属性,每一个属性有一个名称,即属性名;
码(key):也称为码键或键。表中的某个属性或属性组,它可以唯一地确定关系中的一个元组,如关系Student中的学号,它可以唯一地标识一个学生 ;
域(domain):属性的取值范围;
分量(component):元组中的一个属性值;
- 外码(foreign key):表中的某个属性或属性组,用来描述本关系中的元组(实体)与另一关系中的元组(实体)之间的联系
- 外码的取值范围对应于另一个关系的码的取值范围的子集
- 如关系Score中的学号,它描述了关系Score与关系Student的联系(即哪个学生选修了课程),因此学号是关系Score的外码
- 同理,课程号也是关系Score的外码,它描述了关系Score与关系Course的联系(即哪门课程被学生选修了)
关系模式(relational schema):通过关系名和属性名列表对关系进行描述,即二维表的表头部分(表格的描述部分)
关系模式的一般形式:
-
关系模式Student、Course和Score可分别描述为:
Student(学号,姓名,性别,出生日期,所学专业)
- Course(课程号,课程名称,学时,学分)
- Score(学号,课程号,学期,成绩)
- 说明:带下画线的属性为码属性,斜体的属性为外码属性
关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件。
最基本的规范条件是:
- 关系的每一个元组必须是可分区的,即存在码属性
- 关系的每一个属性(即元组的分量)必须是一个不可分的数据项,即不允许表中有表
关系数据模型的操作
- 关系数据模型的操作主要包括查询和更新(插入、删除和修改)
- 关系:元组的集合,关系模型的数据操作是集合操作,操作对象和操作结果都是关系(元组的集合)——不同于传统的非关系模型的数据操作:单记录操作
- 关系模型:存取路径是透明的,用户只要指出“干什么”或“找什么”,不必说明“怎么干”或“怎么找”,从而大大提高了数据的独立性,提高了软件的开发和维护效率
关系数据模型的完整性约束
-
关系数据模型的优点:
严格的数学基础:有关系代数作为语言模型,有关系数据理论作为理论基础
- 概念单一:无论实体还是实体之间的联系都是用关系来表示,对数据(关系)的操作(查询和更新)结果还是关系。所以其数据结构简单、清晰,用户易懂易用
存取路径透明:具有更高的数据独立性、更好的安全保密性,简化了程序员的工作,提高了软件的开发和维护效率
关系数据模型的缺点:
由于存取路径对用户透明,查询效率往往不如非关系数据模型
- 为了提高性能,DBMS必须对用户的查询请求进行查询优化,这样就增加了DBMS的开发难度
5.数据抽象
数据库系统的内部体系结构
- DBMS:隐藏关于数据存储和维护的某些细节,为用户提供数据在不同层次上的视图,即数据抽象,方便不同的使用者可以从不同的角度去观察和利用数据库中的数据
- 物理层抽象
最低层次的抽象,描述数据实际上是怎样存储的
- 逻辑层抽象
描述数据库中存储什么数据以及这些数据之间存在什么关联
提供给数据库管理员和数据库应用开发人员使用的,必须明确知道数据库中应该保存哪些信息
- 视图层抽象
最高层次的抽象,只描述整个数据库的某个部分,即局部逻辑结构
系统可以为同一数据库提供多个视图,每一个视图对应一个具体的应用,亦称为应用视图
6.数据库的三级模式
- 根据数据抽象的3个不同级别,DBMS也应该提供观察数据库的3个不同角度,以方便不同的用户使用数据库的需要。这就是数据库的三级模式结构
- 模式
- 也称为逻辑模式,对应于逻辑层数据抽象,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
- 模式的一个具体值称为模式的一个实例(instance)
- 它是DBMS模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、所使用的应用开发工具及高级程序设计语言无关
- 外模式
- 也称子模式或用户模式,对应于视图层数据抽象
- 是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一具体应用有关的数据的逻辑表示
- 外模式是保证数据库安全性的一个有力措施,每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的
- 内模式
- 也称存储模式,对应于物理层数据抽象,它是数据的物理结构和存储方式的描述,是数据在数据库内部的表示方式
数据库的两层映像功能与数据独立性
外模式/模式映像
- 对应于一个模式可以有多个外模式。对于每一个外模式,数据库管理系统都有一个模式/外模式映像,它定义了该外模式与模式之间的对应关系
- 在各自的外模式描述中定义外模式/模式映像
-
模式/内模式映像
数据库中只有一个模式,也只有一个内模式,模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系
- 在模式描述中定义模式/内模式映像
- 保证了数据与应用程序的物理独立性,简称为数据的物理独立性
在数据库的三级模式结构中,模式即全局逻辑结构是数据库的核心和关键,它独立于数据库的其他层次。因此,设计数据库模式结构时,应首先确定数据库的逻辑模式
总结:
- 一方面由于数据与应用程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出来
- 另一方面由于数据的存取由DBMS管理,用户不必考虑存取路径等细节
从而大大简化了应用程序的编制,也大大提高了应用程序的维护和修改的效率
7.数据库三级模式与三层模型的联系与区别
数据库三级模式结构是数据库管理系统(DBMS)的体系结构,提供外模式、模式和内模式,通过从不同抽象级别观察数据库中的数据,实现:对用户屏蔽DBMS的复杂性、简化用户与系统的交互的目的。
- 数据库三层数据模型是数据库设计的工具和方法,提供概念模型、逻辑模型和物理模型,通过逐层设计一应用系统的数据库,实现:从现实世界到信息世界、信息世界到逻辑机器世界、逻辑机器世界到物理机器世界的逐步转换(对应模式与内模式要求)。
- 数据库的三级模式与三层模型之间的区别在于: 作用和目的不一样。
三级模式是DBMS的体系结构,目的是:
1.隐藏数据的存储和维护的细节,为用户提供数据在不同层次上的视图,方便不同的使用者可以从不同的角度去观察和利用数据库中的数据。
2.支持数据独立性的实现。
3.提供全局逻辑视图(模式):支持整体结构化,从而实现数据共享度高、冗余度低、易扩充。
4.部分支持安全性的实现。
三层模型是数据库设计的工具和方法(要满足DBMS体系结构的要求),目的是:
1.较真实地模拟现实世界、容易被人理解、便于计算机实现。一个数据模型不可能同时满足这些要求!
2.提供全局逻辑模型:支持整体结构化,从而实现数据共享度高、冗余度低。
3.同时满足DBMS三级模式结构(模式与内模式)要求。