计算机技术学习札记

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

数据库系统的基本概念

数据库系统的组成

  • 数据库 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\) 是等于时,称等值连接;当等值连接时使用相同属性组时,称自然连接。