数据库系统概论

数据库系统介绍

数据库系统(Database System,简称DBS)是由数据库及其管理软件组成的系统,它是为适应数据处理的需要而发展起来的一种较为理想的数据处理系统。

数据库系统通常由数据库、数据库管理系统(DBMS)、应用程序、数据库管理员(DBA)和用户组成。其中,数据库是长期存储在计算机内的、有组织、可共享的数据集合;数据库管理系统是数据库系统的核心软件,负责科学地组织和存储数据,高效地获取和维护数据。

数据库是【按照数据结构来组织、存储和管理数据的仓库】。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

数据对于公司来说是最宝贵的财富之一,而程序员的工作就是对数据的管理,包括运算、流转、存储、展示等,数据库的最重要的功能就是【存储数据】,绝大部分的数据需要进行持久化,长期保存,而数据库就可以很好的帮助我们完成这个工作。

系统模式

数据库系统的模式是指数据库中全体数据的逻辑结构和特征的描述。在数据库设计中,模式是一个核心概念,它涉及到数据的组织、存储和访问。

三级模式结构

数据库系统的三级模式结构由:外模式、模式、内模式的三级构成,是数据库的三层抽象级别,如下图所示:

/image/image_TekHbccwpq.png

  1. 模式(Schema)
    • 也称逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
    • 位于数据库系统模式结构的中间层,及不涉及数据的物理存储,也不涉及应用程序开发的工具和设计语言等。
    • 模式实际上是数据库数据在逻辑级上的视图。一个数据库只有一个模式。
    • 定义模式时不仅要定义数据的逻辑结构,例如:数据记录由哪些数据项构成,数据项的名字、类型、取值范围等,而且要定义数据之间的联系,以及与数据有关的安全性、完整性要求。
  2. 外模式(External Schema)
    • 也称用户模式或子模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述。
    • 是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
    • 外模式通常是模式的子集。一个数据库可以有多个外模式。
    • 应用程序都是和外模式打交道的。外模式是保证数据库安全性的一个有力措施。
  3. 内模式(Internal Schema)
    • 也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。
    • 一个数据库只有一个内模式。
    • 描述记录的存储方式、索引的组织方式、数据是否压缩、是否加密等。例如:数据的存储是按照某属性值的升(降)序存储,或按照属性值聚簇(duster)存储,索引按照什么方式组织,是B+树索引还是hash索引,数据是否压缩存储,是否加密,数据的存储记录结构有何规定,如定长结构或变长结构,一个记录不能跨物理页存储等。

二级映射功能

数据库系统的三级模式是数据的三个抽象级别,把数据的具体组织留给数据库管理系统管理,而用户只能逻辑地、抽象地处理数据,不必关心数据在计算机中的具体存储方式。为了能够在内部三个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映像:

  • 外模式/模式映像:通过外模式与模式之间的映像把描述局部逻辑的外模式与描述全局逻辑结构的模式联系起来。

    当模式改变时(例如增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。

  • 模式/内模式映像:通过模式与内模式之间的映像把描述全局逻辑的模式与描述物理结构的模式联系起来。

    当数据库的存储结构改变时(例如选用了另一种存储引擎),由数据库管理员对模式/内模式映像作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性。

在数据库的三级模式结构中:

  • 模式即全局逻辑结构是数据库的中心与关键,它独立于数据库的其他层次。因此设计数据库模式结构时应首先确定数据库的逻辑模式。
  • 内模式依赖于它的全局逻辑结构,但独立于数据库的用户视图,即外模式,也独立于具体的存储设备。
  • 数据库的外模式面向具体的应用程序,它定义在逻辑模式之上,但独立于存储模式和存储设备。当应用需求发生较大变化,相应的外模式不能满足其视图要求时,该外模式就得做相应改动,所以设计外模式时应充分考虑到应用的扩充性。特定的应用程序是在外模式描述的数据结构上编制的,它依赖于特定的外模式,与数据库的模式和存储结构独立。不同的应用程序有时可以共用同一个外模式。

数据库的二级映像保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改。

关系模型

在数据库中,关系模型(Relational Model)是最常用的数据模型之一。它基于集合论和谓词逻辑,并通过关系(通常称为表)来组织和表示数据。关系模型由IBM的研究员E. F. Codd在1970年代初期提出,并成为了关系型数据库管理系统(RDBMS)的理论基础。以下是关系模型的一些主要特点:

数据结构

关系模型数据结构的术语主要有如下:

  1. 关系(Relation)
    • 定义:一个关系对应着一个二维表,二维表就是关系名。比如:员工表。
    • 描述:关系是数据的集合,通常表示为一个二维表。表中的每一行代表一个元组,每一列代表一个属性。
  2. 元组(Tuple)
    • 定义:在二维表中的一行,称为一个元组。
    • 描述:元组是关系中的一行数据,由多个属性值组成,每个属性值对应于关系中的一个属性。
  3. 属性(Attribute)
    • 定义:在二维表中的列,称为属性。
    • 描述:属性是关系中的一个列,具有名称和数据类型。属性的个数称为关系的元或度。
  4. 码(码键)(Key)
    • 定义:如果在一个关系中存在唯一标识一个实体的一个属性或属性集称为实体的键(也成为码键)。
    • 描述:键是关系中的一个或多个属性的组合,用于唯一标识关系中的元组。
  5. 值域(Domain)
    • 定义:属性值的取值范围为值域。
    • 描述:每个属性都有一个值域,即该属性所有可能取值的集合。比如:人的年轻一般在(1~120)岁之间,大学生年龄属性的域是(15~45)岁,性别的域是(男,女)。
  6. 分量
    • 定义:每一行对应的列的属性值,即元组中的一个属性值。
    • 描述:分量是元组中的一个具体值,对应于关系中的一个属性和一个元组。
  7. 关系模式(Relation Schema)
    • 定义:在二维表中的行定义,即对关系的描述称为关系模式。
    • 描述:关系模式描述了关系的结构,包括关系的名称、属性的名称和数据类型等。比如:关系名(属性1,属性2,属性3,…)。例如:学生表可描述为:学生(学号,姓名,年龄,性别,年纪,班级)。

关系键

  • 每个关系都有一个或多个属性,这些属性的组合可以唯一标识关系中的每个元组,并且满足候选键的不可再分解。这样的属性组合被称为候选键(Candidate Key)。
  • 在一个关系中,通常选择一个候选键作为主键(Primary Key),用于唯一标识关系中的每一行。
  • 关系之间可以通过外键(Foreign Key)建立联系,外键是另一个关系的主键。

完整性约束

  • 实体完整性:主键不能包含空值(NULL)。
  • 参照完整性:外键的值必须是对应关系中已存在的主键的值,或者为空(如果外键列允许空值)。
  • 用户定义的完整性:用户可以定义其他类型的完整性约束,如检查约束(Check Constraints),用于确保数据满足特定的条件。

关系操作

关系模型支持一组标准的操作。

比如:选择(Selection)、投影(Projection)、并集(Union)、交集(Intersection)、差集(Difference)、笛卡尔积(Cartesian Product)等。这些操作可以用SQL(结构化查询语言)来表达和执行。

关系代数

关系代数是一种抽象的查询语言,用于描述和操作关系型数据库中的数据。是数据库的关系模型中重要的部分。

任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。所以运算对象、运算符、运算结果是运算的三大要素。关系代数的运算对象是关系,运算结果也是关系。关系代数用到的运算符包括两类:传统的集合运算符和专门的关系运算符。

传统的集合运算符

传统的集合运算是二目运算,包括并、差、交、笛卡儿积4种运算。

  1. 并(Union)
    • 定义:关系R与关系S的并记作R ∪ S,结果关系是由属于R或属于S的元组组成,但结果关系要消除重复元组。
    • 符号:∪(并运算符)。
    • 示例:R ∪ S 表示合并两个关系R和S的元组,并消除重复的元组。
  2. 差(Difference)
    • 定义:从一个关系中删除在另一个关系中出现的元组,结果仍然是一个关系。
    • 符号:-(差运算符)。
    • 示例:R - S 表示从关系R中删除所有在关系S中出现的元组。属于R,不属于S的元组。
  3. 交(Intersection)
    • 定义:两个关系中共同存在的元组集合。
    • 符号:∩(交运算符)
    • 示例:R和S的交可以表示为T = R ∩ S。其中,T是一个新的关系,包含了R和S中共有的元组。
  4. 笛卡尔积(Cartesian Product)
    • 定义:将两个关系的元组(行)进行组合,结果的属性集合是两个关系的属性集合的并集。
    • 符号:×(笛卡尔积运算符)。
    • 示例:如果关系A有n个元组,关系B有m个元组,那么它们的笛卡尔积将有n*m个元组。

专门的集合运算符

专门的关系运算包括选择、投影、连接、除运算等。

  1. 选择(Selection)
    • 定义:从关系中选择满足特定条件的元组,结果仍然是一个关系。
    • 符号:σ(选择运算符),后跟条件表达式。
    • 示例:σAGE>21 ∧ SEX=‘男’(S)表示从关系S中选择年龄大于21且性别为男的元组。
  2. 投影(Projection)
    • 定义:从关系中选择特定的属性列,结果仍然是一个关系。
    • 符号:Π(投影运算符),后跟属性名列表。
    • 示例:ΠSNO, SNAME(S) 表示从关系S中选择学号(SNO)和姓名(SNAME)两列。
  3. 连接(Join)
    • 定义:将两个关系的元组进行匹配,结果的属性集合是两个关系的属性集合的并集。
    • 符号:⨝(连接运算符)。
    • 类型:
      • 等值连接:等值连接是基于明确指定的一个或多个等值条件来连接两个表。这些条件不必涉及所有共有属性,也不会自动合并列。

        例如:

        SELECT * FROM Employees JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;其中,DepartmentID作为Emp.DeptIDDept.DeptID两次出现,分别代表来自Employees表和Departments表的DepartmentID

      • 自然连接:自然连接是一种特殊的等值连接,它要求两个关系表中进行比较的必须是相同的属性列(即列名和数据类型相同),无须添加连接条件,并且在结果中消除重复的属性列。

        例如:

        SELECT * FROM Employees NATURAL JOIN Departments;其中,结果会自动基于DepartmentID进行连接,因为它是两个表中的共有属性,并且只会在结果中显示一次。

    • 示例:R ⨝ S 表示根据某些条件(如等值条件)将关系R和S的元组进行匹配。
  4. 除(Division)
    • 定义:给定关系R(X, Y)和S(Y, Z),其中X, Y, Z为属性组,R/S的结果是一个新的关系P(X),它包含R中满足以下条件的X属性值的所有元组:对于X中的每一个值x,R中属性Y值为x的元组的集合(即x的像集Y(x))必须包含关系S在Y属性上的所有值。

    • 符号:/(除运算符)

    • 示例:

      集合R:

      ABC
      a1b1c2
      a2b3c7
      a3b4c6
      a1b2c3
      a4b6c6
      a2b2c3
      a1b2c1

      集合S:

      BCD
      b1c2d1
      b2c1d1
      b2c3d

      R / S:

      A
      a1
WindSun 支付宝支付宝
WindSun 微信微信
0%