一、数据库系统的组成

数据库系统(DataBase System,DBS)的组成:

  • 数据库
  • 数据库用户
  • 计算机硬件系统
  • 计算机软件系统

image.png

1. 数据库

数据库(DataBase,DB)是存储在计算机内、有组织的、可共享的数据和数据对象(如表、视图、存储过程和触发器等)的集合 这种集合按一定的数据模型(或结构)组织、描述并长期存储,同时能以安全和可靠的方法进行数据的检索和存储

2. 数据库用户

image.png
数据库管理员的主要职责

  • 决定数据库中的信息内容和结构
  • 决定数据库的存储结构和存取策略
  • 定义数据的安全性要求和完整性约束条件
  • 监控数据库的使用和运行
  • 数据库的改进和重组重构

    3. 软件系统

    软件(Software)系统主要包括操作系统(Operating System,OS)、数据库管理系统(DBMS)及应用开发工具和应用系统等 DBMS是数据库系统的核心软件,可借助操作系统对数据库的数据进行存取、维护和管理。数据库系统的各类人员、应用程序等对数据库的各种操作请求,都必须通过DBMS完成


数据库管理系统(DBMS)的主要功能

image.png

  1. 数据定义功能
  • DBMS提供数据定义语言(Data Define Language,DDL),定义数据的模式、外模式和内模式三级模式结构,定义模式/内模式和外模式/模式二级映像,定义有关的约束条件
  • 例如,为保证数据库安全而定义用户口令和存取权限,为保证正确语义而定义完整性规则等
  • 再如,DBMS提供的结构化查询语言(SQL)提供Create、Drop、Alter等语句可分别用来建立、删除和修改数据库
  1. 数据操纵功能
  • DBMS提供数据操纵语言(Data Manipulation Language,DML)实现对数据库的基本操作,包括检索、更新(包括插入、修改和删除)等
  • 例如,DBMS提供的结构化查询语言SQL提供查询语句(SELECT)、插入语句(INSERT)、修改语句(UPDATE)和删除语句(DELETE),可分别实现对数据库中数据记录的查询、插入、修改和删除等操作
  1. 数据库运行管理功能
  • 数据的安全性(Security)控制:防止不合法使用数据库造成数据的泄露和破坏,使每个用户只能按规定对某些数据进行某种或某些操作和处理,保证数据的安全
  • 数据的完整性(Integrity)控制:系统通过设置一些完整性规则等约束条件,确保数据的正确性、有效性和相容性
  • 并发(Concurrency)控制:多个用户同时存取或修改数据库时,系统可防止由于相互干扰而提供给用户不正确的数据,并防止数据库受到破坏
  • 数据恢复(Recovery):由于计算机系统的硬件故障、软件故障、操作员的误操作及其他故意的破坏等原因,造成数据库中的数据不正确或数据丢失时,系统有能力将数据库从错误状态恢复到最近某一时刻的正确状态
  1. 数据库的建立和维护功能
  • 数据库的建立包括数据库的初始数据的装入与数据转换等,数据库的维护包括数据库的转储、恢复、重组织与重构造、系统性能监视与分析等。这些功能分别由DBMS的各个实用程序来完成
  1. 数据通信接口
  • DBMS提供与其他软件系统进行通信的功能
  • DBMS提供了与其他DBMS或文件系统的接口,从而使该DBMS能够将数据转换为另一个DBMS或文件系统能够接受的格式,或者可接收其他DBMS或文件系统的数据,实现用户程序与DBMS、DBMS与DBMS、DBMS与文件系统之间的通信
  1. 数据组织、存储和管理
  • DBMS负责对数据库中需要存放的各种数据(如数据字典、用户数据、存取路径等)的组织、存储和管理工作,确定以何种文件结构和存取方式物理地组织这些数据,以提高存储空间利用率和对数据库进行增、删、查、改的效率

    数据库管理系统(DBMS)的组成

    DBMS是由许多程序所组成的一个大型软件系统,每个程序都有自己的功能,共同完成DBMS的一个或几个工作。一个完整的DBMS通常应由语言编译处理程序、系统运行控制程序、系统建立和维护程序、数据字典等部分组成
    语言编译处理程序包括数据定义语言DDL和数据操纵语言DML编译程序

  • DDL编写的源模式被编译成各级目标模式,保存在数据字典中,供以后数据操纵或数据控制时使用

  • DML语句被转换成可执行程序,实现对数据库的检索、插入、删除和修改等基本操作

系统运行控制程序负责数据库系统运行过程中的控制与管理

  • 主要包括:系统总控程序、安全性控制程序、完整性控制程序、并发控制程序、数据存取和更新程序和通信控制程序等

系统建立和维护程序

  • 包括:装配程序,用来完成初始数据库的数据装入;重组程序,当数据库系统性能降低时(如查询速度变慢),需要重新组织数据库,重新装入数据;系统恢复程序,当数据库系统受到破坏时,将数据库系统恢复到以前某个正确的状态

数据字典(Data Dictionary,DD)用来描述数据库中有关信息的数据目录

  • 包括数据库的三级模式、数据类型、用户名和用户权限等有关数据库系统的信息,起着系统状态的目录表的作用,帮助用户、DBADBMS本身使用和管理数据库

    数据库管理系统(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):通过关系名和属性名列表对关系进行描述,即二维表的表头部分(表格的描述部分)

    关系模式的一般形式:
  • 关系名(属性名1,属性名2,…,属性名n)

    关系模式Student、Course和Score可分别描述为:
  • Student(学号,姓名,性别,出生日期,所学专业)

  • Course(课程号,课程名称,学时,学分)
  • Score(学号,课程号,学期,成绩)
    • 说明:带下画线的属性为码属性,斜体的属性为外码属性

关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件。

最基本的规范条件是:
  • 关系的每一个元组必须是可分区的,即存在码属性
  • 关系的每一个属性(即元组的分量)必须是一个不可分的数据项,即不允许表中有表

image.png
关系数据模型的操作

  • 关系数据模型的操作主要包括查询和更新(插入、删除和修改)
  • 关系:元组的集合,关系模型的数据操作是集合操作,操作对象和操作结果都是关系(元组的集合)——不同于传统的非关系模型的数据操作:单记录操作
  • 关系模型:存取路径是透明的,用户只要指出“干什么”或“找什么”,不必说明“怎么干”或“怎么找”,从而大大提高了数据的独立性,提高了软件的开发和维护效率

关系数据模型的完整性约束

  • 实体完整性、参照完整性和用户自定义完整性

    关系数据模型的优点:

  • 严格的数学基础:有关系代数作为语言模型,有关系数据理论作为理论基础

  • 概念单一:无论实体还是实体之间的联系都是用关系来表示,对数据(关系)的操作(查询和更新)结果还是关系。所以其数据结构简单、清晰,用户易懂易用
  • 存取路径透明:具有更高的数据独立性、更好的安全保密性,简化了程序员的工作,提高了软件的开发和维护效率

    关系数据模型的缺点:

  • 由于存取路径对用户透明,查询效率往往不如非关系数据模型

  • 为了提高性能,DBMS必须对用户的查询请求进行查询优化,这样就增加了DBMS的开发难度

image.png
image.png
image.png
image.png
image.png
image.png

5.数据抽象

数据库系统的内部体系结构

  • DBMS:隐藏关于数据存储和维护的某些细节,为用户提供数据在不同层次上的视图,即数据抽象,方便不同的使用者可以从不同的角度去观察和利用数据库中的数据
  • 物理层抽象

最低层次的抽象,描述数据实际上是怎样存储的

  • 逻辑层抽象

描述数据库中存储什么数据以及这些数据之间存在什么关联
提供给数据库管理员和数据库应用开发人员使用的,必须明确知道数据库中应该保存哪些信息

  • 视图层抽象

最高层次的抽象,只描述整个数据库的某个部分,即局部逻辑结构
系统可以为同一数据库提供多个视图,每一个视图对应一个具体的应用,亦称为应用视图

6.数据库的三级模式

  • 根据数据抽象的3个不同级别,DBMS也应该提供观察数据库的3个不同角度,以方便不同的用户使用数据库的需要。这就是数据库的三级模式结构
  • 模式
    • 也称为逻辑模式,对应于逻辑层数据抽象,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
    • 模式的一个具体值称为模式的一个实例(instance)
    • 它是DBMS模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、所使用的应用开发工具及高级程序设计语言无关
  • 外模式
    • 也称子模式或用户模式,对应于视图层数据抽象
    • 是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一具体应用有关的数据的逻辑表示
    • 外模式是保证数据库安全性的一个有力措施,每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的
  • 内模式
    • 也称存储模式,对应于物理层数据抽象,它是数据的物理结构和存储方式的描述,是数据在数据库内部的表示方式

image.png

数据库的两层映像功能与数据独立性

外模式/模式映像

  • 对应于一个模式可以有多个外模式。对于每一个外模式,数据库管理系统都有一个模式/外模式映像,它定义了该外模式与模式之间的对应关系
  • 在各自的外模式描述中定义外模式/模式映像
  • 保证了数据与应用程序的逻辑独立性,简称为数据的逻辑独立性

    模式/内模式映像

  • 数据库中只有一个模式,也只有一个内模式,模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系

  • 在模式描述中定义模式/内模式映像
  • 保证了数据与应用程序的物理独立性,简称为数据的物理独立性

image.png

在数据库的三级模式结构中,模式即全局逻辑结构是数据库的核心和关键,它独立于数据库的其他层次。因此,设计数据库模式结构时,应首先确定数据库的逻辑模式

总结:

  • 一方面由于数据与应用程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出来
  • 另一方面由于数据的存取由DBMS管理,用户不必考虑存取路径等细节
  • 从而大大简化了应用程序的编制,也大大提高了应用程序的维护和修改的效率

    7.数据库三级模式与三层模型的联系与区别

  • 数据库三级模式结构数据库管理系统(DBMS)体系结构,提供外模式模式内模式,通过从不同抽象级别观察数据库中的数据,实现:对用户屏蔽DBMS的复杂性、简化用户与系统的交互的目的。

  • 数据库三层数据模型是数据库设计的工具和方法,提供概念模型、逻辑模型和物理模型,通过逐层设计一应用系统的数据库,实现:从现实世界到信息世界、信息世界到逻辑机器世界、逻辑机器世界到物理机器世界的逐步转换(对应模式与内模式要求)。
    • 数据库的三级模式与三层模型之间的区别在于: 作用和目的不一样

image.png
三级模式是DBMS的体系结构,目的是
1.隐藏数据的存储和维护的细节,为用户提供数据在不同层次上的视图,方便不同的使用者可以从不同的角度去观察和利用数据库中的数据。
2.支持数据独立性的实现。
3.提供全局逻辑视图(模式):支持整体结构化,从而实现数据共享度高、冗余度低、易扩充。
4.部分支持安全性的实现。
三层模型是数据库设计的工具和方法(要满足DBMS体系结构的要求),目的是:
1.较真实地模拟现实世界、容易被人理解、便于计算机实现。一个数据模型不可能同时满足这些要求!
2.提供全局逻辑模型:支持整体结构化,从而实现数据共享度高、冗余度低。
3.同时满足DBMS三级模式结构(模式与内模式)要求。

数据库系统的外部体系结构

image.png
image.png