数据库系统概述

四个基本概念

数据data

数据种类:字符、数字、文本、音频、视频……

数据 :描述事物的符号记录

数据的含义:就是语义(semantic)。简单的说,数据就是符号。数据本身没有任何意义,只有被赋予含义的数据才能够被使用,这时候数据就转化为了信息,而数据的含义就是语义。语义可以简单地看作是数据所对应的现实世界中的事物所代表的概念的含义,以及这些含义之间的关系,是数据在某个领域上的解释和逻辑表示。

数据库database,DB

  • 数据库:是长期储存在计算机内、有组织的、可共享的大量数据的集合(无序、无重复、同类型)

  • 数据库基本特征

    • 数据按一定的数据模型组织、描述和储存

    • 可为各种用户共享

    • 冗余度较小

    • 数据独立性较高

    • 易扩展

数据库管理系统database management system,DBMS

什么是数据库管理系统(DBMS)

  • 位于用户与操作系统之间的一层数据管理软件

  • 是基础软件,是一个大型复杂的软件系统

数据库管理系统DBMS的作用:

数据定义功能

  1. ​ 提供数据定义语言(DDL
  2. ​ 定义数据库中的数据对象

数据组织,存储和管理

  1. 分类组织、存储和管理各种数据
  2. 确定组织数据的文件结构和存取方式
  3. 实现数据之间的联系
  4. 提供多种存取方法提高存取效率

数据操纵功能

  1. 提供数据操纵语言(DML)
  2. 实现对数据库的基本操作

数据库的事务管理和运行管理

  1. 数据库在建立、运行和维护时由数据库管理系统统一管理和控制
  2. 保证数据的安全性、完整性、多用户对数据的并发使用
  3. 发生故障后的系统恢复

数据库的建立和维护功能

  1. 数据库初始数据的装载和转换
  2. 数据库转储、恢复功能
  3. 数据库的重组织
  4. 性能监视、分析等

其他功能

  1. 数据库管理系统与网络中其它软件系统的通信
  2. 数据库管理系统系统之间的数据转换
  3. 异构数据库之间的互访和互操作

image-20211216193032313

数据库系统database system,DBS

  1. 数据库
  2. 数据库管理系统(及其应用开发工具)
  3. 应用程序
  4. 数据库管理员

数据库的发展史

image-20211216195546813

文件系统与数据库系统

文件系统与数据库系统的区别是:文件系统面向某一应用程序,共享性差,冗余度大,数据独立性差,记录内有结构,整体无结构,由应用程序自己控制。数据库系统面向现实世界,共享性高,冗余度小,具有较高的物理独立性和一定的逻辑独立性,整体结构化,用数据模型描述,由数据库管理系统提供数据的安全性、完整性、并发控制和恢复能力。
文件系统与数据库系统的联系是:文件系统与数据库系统都是计算机系统中管理数据的软件。解析文件系统是操作系统的重要组成部分;而 DBMS 是独立于操作系统的软件。但是 DBMS 是在操作系统的基础上实现的;数据库中数据的组织和存储是通过操作系统中的文件系统来实现的。

  1. 文件系统把数据组织成相互独立的数据文件,实现了记录内的结构性,但整体无结构;而数据库系统实现整体数据的结构化,也是数据库系统与文件系统的本质区
  2. 文件系统中的文件是为某一特定应用服务的,当要修改数据的逻辑结构时,必须修改应用程序,修改文件结构的定义,数据和程序之间缺乏独立性;数据库系统中,通过DBMS的两级映象实现了数据的物理独立性和逻辑独立性,把数据的定义从程序中分离出去,减少了应用程序的维护和修改
  3. 数据库系统的共享度高。系统现有用户和程序可以共享数据库中的数据;当系统扩充时还可以开发出新的用户和程序来共享原有数据库资源;多用户或或程序可以在同一时刻共享同一数据
  4. 在文件系统中,数据冗余度大,浪费存储空间,容易造成数据的不一致;数据库系统中,数据是面向整个系统,数据可以被多个用户、多个应用共享使用,减少了数据冗余。

数据库系统的特点

  1. 数据结构化

    数据库系统实现整体数据的结构化, 这是数据库的主要特征之一, 也是数据库系统文件系统的本质区别. 。所谓“ 整体” 结构化是指数据库中的数据不再仅仅针对某一个应用, 而是面向整组织或企业: 不仅数据内部是结构化的, 而且整体是结构化的, 数据之间是具有联系的。

  2. 数据的共享性高、 冗余度低且易扩充
    数据库系统从整体角度看待和描述数据, 数据不再面向某个应用而是面向整个系统,因此数据可以被多个用户、 多个应用共享使用。 数据共享可以大大减少数据冗余, 节约存储空间。 数据共享还能够避免数据之间的不相容性与不一致性。

  3. 数据独立性高
    数据独立性是借助数据库管理数据的一个显著优点, 它已成为数据库领域中一个常用术语和重要概念, 包括数据的物理独立性和逻辑独立性。
    物理独立性是指用户的应用程序与数据库中数据的物理存储是相互独立的。 也就是说, 数据在数据库中怎样存储是由数据库管理系统管理的, 用户程序不需要了解, 应用程序要处理的只是数据的逻辑结构, 这样当数据的物理存储改变时应用程序不用改变。
    逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。 也就是说, 数据的逻辑结构改变时用户程序也可以不变。

  4. 数据由数据库管理系统统一管理和控制

    (1) 数据的安全性(security) 保护
    数据的安全性是指保护数据以防止不合法使用造成的数据泄密和破坏。 每个用户只能按规定对某些数据以某些方式进行使用和处理。
    (2) 数据的完整性( integrity) 检查
    数据的完整性指数据的正确性、 有效性和相容性。 完整性检査将数据控制在有效的范围内, 并保证数据之间满足一定的关系。
    (3) 并发 (concurrency) 控制
    当多个用户的并发进程同时存取、 修改数据库时, 可能会发生相互干扰而得到错误的结果或使得数据库的完整性遭到破坏, 因此必须对多用户的并发操作加以控制和协调。
    (4) 数据库恢复(recovery)
    计算机系统的硬件故障、 软件故障、 操作员的失误以及故意破坏也会影响数据库中数据的正确性, 甚至造成数据库部分或全部数据的丢失。 数据库管理系统必须具有将数据库从错误状态恢复到某一已知的正确状态(亦称为完整状态或一致状态) 的功能, 这就是数据库的恢复功能。

综上所述, 数据库是长期存储在计算机内有组织、 大量、 共享的数据集合。 它可以供各种用户共享, 具有最小冗余度和较高的数据独立性。 数据库管理系统在数据库建立、 运用和维护时对数据库进行统一控制, 以保证数据的完整性和安全性, 并在多用户同时使用数据库时进行并发控制, 在发生故障后对数据库进行恢复。

数据模型

数据模型( datamodel)也是一种模型, 它是对现实世界数据特征的抽象。 也就是说数据模型是用来描述数据、 组织数据和对数据进行操作的。

现有的数据库系统均是基于某种数据模型的。 数据模型是数据库系统的核心和基础。因此, 了解数据模型的基本概念是学习数据库的基础。

两类数据模型

数据模型应满足三方面要求: 一是能比较真实地模拟现实世界, 二是容易为人所理解,三是便于在计算机上实现。

第一类概念模型(conceptual model ), 也称信息模型, 它是按用户的观点来对数据和信息建模, 主要用于数据库设计。

第二类中的逻辑模型主要包括层次模型 ( hierarchical model)> 网状模型(network model)、关系模型 (relational model ),面向对象数据模型(object oriented data model) 和对象关系数据模型(object relational data model )、 半结构化数据模型(semistructured data model ) 等。 它是按计算机系统的观点对数据建模, 主要用于数据库管理系统的实现。

第二类中的物理模型是对数据最底层的抽象, 它描述数据在系统内部的表示方式和存取方法, 或在磁盘或磁带上的存储方式和存取方法, 是面向计算机系统的。 物理模型的具体实现是数据库管理系统的任务, 数据库设计人员要了解和选择物理模型, 最终用户则不必考虑物理级的细节。

概念模型

信息世界中的基本概念

信息世界主要涉及以下一些概念。
(1) 实体 (entity)
客观存在并可相互区别的事物称为实体。 实体可以是具体的人、 事、 物, 也可以是抽象的概念或联系, 例如, 一个职工、 一个学生、 一个部门、 一门课、 学生的一次选课、 部门的一次订货、 教师与院系的工作关系( 即某位教师在某院系工作) 等都是实体。
(2) 属性(attribute)
实体所具有的某一特性称为属性。 一个实体可以由若干个属性来刻画。 例如, 学生实体可以由学号、 姓名、 性别、 出生年月、 所在院系、 入学时间等属性组成, 属性组合(201315121, 张山, 男, 199505, 计算机系, 2013) 即表征了一个学生。
(3) 码(key)
唯一标识实体的属性集称为码。 例如学号是学生实体的码。
(4) 实体型(entity type)
具有相同属性的实体必然具有共同的特征和性质。 用实体名及其属性名集合来抽象和刻画同类实体, 称为实体型。 例如, 学生( 学号, 姓名, 性别, 出生年月, 所在院系, 入学时间) 就是一个实体型。
(5) 实体集(entity set)
同一类型实体的集合称为实体集。 例如, 全体学生就是一个实体集。
(6) 联系 (relationship)
在现实世界中, 事物内部以及事物之间是有联系的, 这些联系在信息世界中反映为实体( 型) 内部的联系和实体( 型) 之间的联系。 实体内部的联系通常是指组成实体的各属性之间的联系, 实体之间的联系通常是指不同实体集之间的联系。

实体之间的联系有一对一、 一对多和多对多等多种类型

概念模型的一种表示方法: 实体-联系方法

概念模型是对信息世界建模, 所以概念模型应该能够方便、 准确地表示出上述信息世界中的常用概念。 概念模型的表示方法很多, 其中最为常用的是 RP.S.Chen 于 1976 年提出的实体-联系方法 (Entity-Relationship approach )» 该方法用 E-R 图( E-R diagram) 来描述现实世界的概念模型, E-R 方法也称为 E-R 模型。

数据模型的组成要素

数据模型通常由数据结构、数据操作和数据的完整性约束条件三部分组成

1 . 数据结构
数据结构描述数据库的组成对象以及对象之间的联系。 也就是说, 数据结构描述的内容有两类: 一类是与对象的类型、 内容、 性质有关的, 如网状模型中的数据项、 记录, 关系模型中的域、 属性、 关系等; 一类是与数据之间联系有关的对象, 如网状模型中的系型( set type)。
数据结构是刻画一个数据模型性质最重要的方面。 因此在数据库系统中, 人们通常按照其数据结构的类型来命名数据模型。 例如层次结构、 网状结构和关系结构的数据模型分别命名为层次模型、 网状模型和关系模型。
总之, 数据结构是所描述的对象类型的集合, 是对系统静态特性的描述。
\2. 数据操作
数据操作是指对数据库中各种对象( 型) 的实例( 值) 允许执行的操作的集合, 包括操作及有关的操作规则。
数据库主要有查询和更新( 包括插入、 删除、 修改) 两大类操作。 数据模型必须定义这些操作的确切含义、 操作符号、 操作规则( 如优先级) 以及实现操作的语言。
数据操作是对系统动态特性的描述。
\3. 数据的完整性约束条件
数据的完整性约束条件是一组完整性规则。 完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则, 用以限定符合数据模型的数据库状态以及状态的变化, 以保证数据的正确、 有效和相容。

常用的数据模型

• 层次模型( hierarchical model)
• 网状模型 (network model)
• 关系模型(relational model)
• 面向对象数据模型( object oriented data model)
• 对象关系数据模型(object relational data model )
• 半结构化数据模型 ( semistructure data model )

层次模型

层次模型的数据结构

在数据库中定义满足下面两个条件的基本层次联系的集合为层次模型:
(1) 有且只有一个结点没有双亲结点, 这个结点称为根结点;

(2)根以外的其他结点有且只有一个双亲结点

每个结点表示一个记录类型, 。记录类型之间的联系用结点之间连线(有向边) 表示, 这种联系是父子之间的对多的联系。 这就使得层次数据库系统只能处理一对多的实体联系。

image-20211217115616300

层次模型像一棵倒立的树, 结点的双亲是唯一的。

层次模型的数据操纵与完整性约束

层次模型的数据操纵主要有査询、 插入、 删除和更新。 进行插入、 删除、 更新操作时要满足层次模型的完整性约束条件。
进行插入操作时, 如果没有相应的双亲结点值就不能插入它的子女结点值。
进行删除操作时, 如果删除双亲结点值, 则相应的子女结点值也将被同时删除。

层次模型的优缺点

层次模型的优点主要有:
(1) 层次模型的数据结构比较简单清晰。
(2) 层次数据库的查询效率高。 因为层次模型中记录之间的联系用有向边表示, 这种联系在 DBMS 中常常用指针来实现。 因此这种联系也就是记录之间的存取路径。 当要存取某个结点的记录值, DBMS 就沿着这一条路径很快找到该记录值, 所以层次数据库的性能优于关系数据库, 不低于网状数据库。
(3) 层次数据模型提供了良好的完整性支持。
层次模型的缺点主要有:
(1) 现实世界中很多联系是非层次性的, 如结点之间具有多对多联系, 不适合用层次模型表示。
(2) 如果一个结点具有多个双亲结点等, 用层次模型表示这类联系就很笨拙, 只能通过引入冗余数据(易产生不一致性) 或创建非自然的数据结构(引入虚拟结点) 来解决。对插入和删除操作的限制比较多, 因此应用程序的编写比较复杂。
(3) 查询子女结点必须通过双亲结点。
(4) 由于结构严密, 层次命令趋于程序化。
可见, 用层次模型对具有一对多的层次联系的部门描述非常自然、 直观, 容易理解。这是层次数据库的突出优点。

网状模型

在现实世界中事物之间的联系更多的是非层次关系的, 用层次模型表示非树形结构是很不直接的, 网状模型则可以克服这一弊病。
网状数据库系统采用网状模型作为数据的组织方式。 网状数据模型的典型代表是DBTG 系统, 亦称 CODASYL 系统。

网状模型的数据结构

在数据库中, 把满足以下两个条件的基本层次联系集合称为网状模型:
(1) 允许一个以上的结点无双亲。
(2) 一个结点可以有多于一个的双亲。

层次模型中子女结点与双亲结点的联系是唯一的, 而在网状模型中这种联系可以不唯一。

image-20211217120158882

image-20211217120241063

网状模型的数据操纵与完整性约束

网状模型一般来说没有层次模型那样严格的完整性约束条件, 但具体的网状数据库系统对数据操纵都加了一些限制, 提供了一定的完整性约束。
例如, DBTG 在模式数据定义语言中提供了定义 DBTG 数据库完整性的若干概念和语句, 主要有:
(1) 支持记录码的概念, 码即唯一标识记录的数据项的集合。 例如, 学生记录( 如图 1.13) 中学号是码, 因此数据库中不允许学生记录中学号出现重复值。
(2) 保证一个联系中双亲记录和子女记录之间是一对多的联系。
(3) 可以支持双亲记录和子女记录之间的某些约束条件。 例如, 有些子女记录要求双亲记录存在才能插入, 双亲记录删除时也连同删除。 例如图 1.13 中选课记录就应该满足这种约束条件, 学生选课记录值必须是数据库中存在的某一学生选修存在的某一门课的记录。DBTG 提供了“ 属籍类别” 的概念来描述这类约束条件。

网状模型的优缺点

网状模型的优点主要有:
(1 ) 能够更为直接地描述现实世界, 如 • 个结点可以有多个双亲, 结点之间可以有多种联系。
(2) 具有良好的性能, 存取效率较高。
网状模型的缺点主要有:
(1) 结构比较复杂, 而且随着应用环境的扩大, 数据库的结构就变得越来越复杂, 不利于最终用户掌握。
(2) 网状模型的 DDL、 DML 复杂, 并且要嵌入某一种高级语言( 如 COBOL、 C)中。用户不容易掌握, 不容易使用。
(3) 由于记录之间的联系是通过存取路径实现的, 应用程序在访问数据时必须选择适当的存取路径, 因此用户必须了解系统结构的细节, 加重了编写应用程序的负担。

关系模型

关系( relation): —个关系对应通常说的一张表, 例如图 1.14 中的这张学生登记表。
• 元组( tuple): 表中的一行即为一个元组。
• 属 性( attribute): 表中的一列即为一个属性, 给每一个属性起一个名称即属性名。如图 1.14 所示的表有 6 列, 对应 6 个属性( 学号, 姓名, 年龄, 性别, 系名和年级)。
• 码( key): 也称为码键。 表中的某个属性组, 它可以唯一确定一个元组, 如图 1.14中的学号可以唯一确定一个学生, 也就成为本关系的码。
• 域( domain ):域是一组具有相同数据类型的值的集合。 属性的取值范围来自某个域。如人的年龄一般在 1 120 岁之间, 大学生年龄属性的域是( 15 45 岁), 性别的域是( 男,女), 系名的域是一个学校所有系名的集合。
• 分量: 元组中的一个属性值。

• 关系模式: 对关系的描述, 一般表示为
关系名( 属性 1, 属 性2,…,属性n)

image-20211217120724666

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

关系模型中的数据操作是集合操作, 操作对象和操作结果都是关系, 即若干元组的集合, 而不像格式化模型中那样是单记录的操作方式。 另一方面, 关系模型把存取路径向用户隐蔽起来, 用户只要指出“ 干什么” 或“ 找什么”, 不必详细说明“ 怎么干” 或“ 怎么找”,从而大大地提高了数据的独立性, 提高了用户生产率。

关系模型的优缺点
关系模型具有下列优点:
(1) 关系模型与格式化模型不同, 它是建立在严格的数学概念的基础上的。
(2) 关系模型的概念单一。 无论实体还是实体之间的联系都用关系来表示。 对数据的检索和更新结果也是关系( 即表) 》 所以其数据结构简单、 清晰, 用户易懂易用。
(3) 关系模型的存取路径对用户透明, 从而具有更高的数据独立性、 更好的安全保密性, 也简化了程序员的工作和数据库开发建立的工作。所以关系模型诞生以后发展迅速, 深受用户的喜爱。
当然, 关系模型也有缺点, 例如, 由于存取路径对用户是隐蔽的, 查询效率往往不如格式化数据模型。 为了提高性能, 数据库管理系统必须对用户的査询请求进行优化, 因此增加了开发数据库管理系统的难度。 不过用户不必考虑这些系内部的优化技术细节。

数据库系统结构

数据库系统三级模式结构外模式,模式,内模式

img

模式:(逻辑模式)数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个模式。

模式的地位:是数据库系统模式结构的中间层,与数据的物理存储细节和硬件环境无关,与具体的应用程序、开发工具及高级程序设计语言无关。

模式定义的内容:数据的逻辑结构(数据项的名字、类型、取值范围等),数据之间的联系,数据有关的安全性、完整性要求

外模式:(子模式/用户模式)数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据库和逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的系统的逻辑表示。一个数据库可以有多个外模式。

外模式的地位:介于模式与应用之间 模式与外模式的关系:一对多。外模式通常是模式的子集。一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求。对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同。 外模式与应用的关系:一对多。同一外模式也可以为某一用户的多个应用系统所使用 但一个应用程序只能使用一个外模式

内模式:存储模式或内视图)是数据物理结构和存储方式的描述,是数据在数据库内部实际存储的表示方式: 记录的存储方式(顺序,B树,hash方法存储),索引的组织方式,数据是否压缩存储,数据是否加密。数据存储记录结构的规定,一个数据库只有一个内模式

二级映像功能

(1) 外模式/模式映像(应用可扩充性)

定义外模式(局部逻辑结构)与模式(全局逻辑结构)之间的对应关系,映象定义通常包含在各自外模式的描述中,每一个外模式,数据库系统都有一个外模式/模式映象。
用途:保证数据的逻辑独立性 当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变 应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。

(2) 模式/内模式映像(空间利用率,存取效率)

模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。数据库中模式/内模式映象是唯一的。该映象定义通常包含在模式描述中。
用途:保证数据的物理独立性 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变。应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。

优点: (1)保证了数据库外模式的稳定性。 (2)从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改。 (3)数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去。

什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性? 为什么数据库系统具有数据与程序的独立性?

1、数据与程序的逻辑独立性:当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变。从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。

2、数据与程序的物理独立性:当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变。应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。 数据库管理系统在三级模式之间错提供的二层影响保证了数据系统中的数据具有较高的逻辑独立性和物理独立性。