计算机技术学习札记

数据库 1:基本概念与关系代数


2023 年 2 月 7 日

数据库系统的基本概念 #

数据库系统的组成 #

  • 数据库 Database (DB)
  • 数据库管理系统 Database Management System (DBMS)
  • 数据库应用 Database Application (DBAP)
  • 数据库管理员 Database Administrator (DBA)

DBA 通过 DBMS 管理 DB,DBMS 利用 DB 中的数据提供 DBAP。DBMS 提供

  • 数据定义语言 Data Definition Language (DDL) 供 DBAP 创建数据库,定义数据结构。
  • 数据操纵语言 Data Manipulation Language (DML) 供 DBAP 进行 CRUD 操作。
  • 数据控制语言 Data Control Language (DCL) 供 DBAP 对 DB 进行控制。

DDL, DML 和 DCL 构成结构化查询语言 Structured Query Language (SQL)。除了 SQL 这样的交互式语言外、还有嵌入式的数据库语言,如 C/C++ 中的 mysql.h

数据库的结构 #

定义「模式」为对数据结构的描述(表头),「视图」为某一种模式下表现的数据(表的内容)。数据库系统有三级模式,对应三级视图。

  • 外部模式 / 外部视图 External:用户能看到与处理的结构。
  • 概念模式 / 概念视图 Conceptional:逻辑化的数据结构(即 E-R 图所能表现的)。
  • 内部模式 / 内部视图 Internal:存储在介质上的结构。

E-C 和 C-I 两层中间存在映像,实现层间转换。I 层变化可以不改变 C 层——物理数据独立性,而 C 层改变也可以不影响 E 层——逻辑数据独立性。

数据模型 #

三要素:数据结构、数据操作和完整性约束。

  • 关系模型:以「表」为载体。

  • 层次模型:以「树」为载体。

    • 数据结构简单清晰
    • 性能优于关系数据库,不低于网状数据库。
    • 局限性:不是所有关系都是层次的。
  • 网状模型:以「图」为载体。

    • 结构复杂、语言复杂、难用
    • 能更直接地表示现实世界。

关系模型 #

关系的定义 #

简单来说就是「表」。

游戏名 Name运营公司 Company游戏类型 Type
원신
Mihoyo开放世界冒险
王者荣耀TencentMOBA
明日方舟HyperGraph塔防策略RPG
塞尔达传说:旷野之息Nintendo动作冒险
  • 域 Domain:表中的一列,一组相同数据类型的值的集合。比如 $D_\text{Name}={\text{원신}, \text{王者荣耀}, \cdots}$。在关系中称为「属性」。
  • 元组 Tuple:表中的一行。
  • 笛卡儿积 Cartesian Product:多个域取一个元素拼接。笛卡儿积中的每个元素都是一个元组。
  • 关系 Relation:笛卡儿积中有意义的部分,即一组域 $D_1\times D_2\times\cdots\times D_n$ 的子集,记为 $R(A_1, A_2, \cdots, A_n)$。

定义

  • 候选码 Candidate Key:关系中的一个属性集合,能最小唯一标识一个元组。
  • 主码 Primary Key:CK 中选定一个。
  • 主属性、非主属性:在任意一个 CK 中的属性都是主属性,反之为非主属性。
  • 外码 Foreign Key:关系中的一个属性组,不是此关系的 CK,但是另一个关系的 CK。
  • 超码:CK 的超集,能唯一标识一个元组,不一定是最小的。

关系完整性 #

  • 实体完整性(PK 约束):PK 非空。
  • 参照完整性(FK 约束):FK 要么存在要么空。
  • 用户自定义的完整性。

关系代数 #

关系代数的基本操作分为集合操作和纯关系操作,集合操作有交、并、差以及笛卡儿积,纯关系操作有:

  • 选择 Select

    $\sigma_\text{条件}(R)={t|t\in R\wedge \text{条件为真}}$

  • 投影 Project

    $\Pi_{A_{a_1}, A_{a_2}, \cdots, A_{a_n}}(R)=R\text{ 中只有 }A_{a_1}, \cdots, A_{a_n}\text{ 属性的部分}$

  • $\theta$-连接 $\theta$-Join

    $R\underset{A\theta B}\bowtie S=\sigma_{t[A]\theta s[b]}(R\times S)$

    当关系 $\theta$ 是等于时,称等值连接;当等值连接时使用相同属性组时,称自然连接。