跳至主要內容
数据管理基础-课程笔记

数据管理基础-课程笔记

Neonscape大约 9 分钟notesdatabase

数据库

数据库概论

四个基本概念

  • 数据
    • 具有一定的语义(对代表数据的符号串的规则解释)含义、可以被记录下来的已知信息被称为数据
    • 信息是数据的内涵,数据是信息的载体。
  • 数据库
    • 长期储存在计算机内、有组织、可共享的大量数据的集合。
    • 按一定的数据模型组织、描述和储存,具有较小的数据冗余,较高的数据独立性和易扩展性。
  • 数据库管理系统
    • 位于用户和数据库之间的一层数据管理软件;
    • 提供数据的定义、组织,存储、管理和操纵。
    • 负责数据库的事务和运行管理、数据库的建立和维护。
  • 数据库系统
    • 由数据库、数据库管理系统、数据库管理员和支撑系统运行的软件和硬件组成。
  • 数据库应用系统
    • 由数据库系统、应用开发工具、应用系统和数据库用户组成的计算机系统。

信息世界中的基本概念

  • 实体
    • 客观存在并可相互区别的事物称为实体;每一类实体具有相同的实体名。
  • 属性
    • 实体具有的某一特性称为属性;每一个属性有一个属性名,在同一个实体内属性名各不相同。
  • 联系
    • 包含某一类实体内部的联系和不同类实体之间的联系;每一个联系具有一个联系名。
  • 实体型(type)
    • 实体名和实体的所有属性名组成的集合,用于抽象和刻画同类型实体。
  • 实体值(value)
    • 某个实体的所有属性值的集合;也被称为实体的实例(instance)。
  • 实体集(set)
    • 同一类型实体的集合。
  • 码 / 键 / 关键字(key)
    • 唯一标识实体的属性集;也称标识符(identifier)。

数据模型的组成

数据模型的组成要素有三

  • 数据结构(静态特性)
    • 描述数据库的组成对象和对象之间的联系;
    • 一般称为数据模式(data schema)。
  • 数据操作(动态特性)
    • 对数据库中各种对象的实例的允许执行的操作(和有关的操作规则)的集合。
    • 一般包含查询和更新(插、删、改)
  • 数据约束
    • 完整性规则的集;描述给定的数据模型中数据和联系具有的制约和依存规则。
    • 用于限定数据库状态(和状态的变化)。

常用的数据模型

关系模型

  • 关系模型再用户视角下是一张由行和列组成的二维表格。
  • 基本概念
    • 关系:一个关系对应一张表格。
    • 元组:表格中的某一行。
    • 属性:表格中的某一列。
    • 主码:表格中的某个属性组,可以用来确定一个唯一的元组。(比如:学号 1919810,性别男,名字 xxx,年级 x,班级 x 就可以确定唯一的一行)
    • 域:一组具有相同数据类型的值的集合。(实数域等)
    • 分量:元组中的某个属性值。
    • 关系模式:对关系的描述。
      • 一般形式为: 关系名(属性 1, 属性 2, 属性 3, 属性 4, ...)
  • 关系必须满足一定的规范条件。
    • 关系的每个分量必须是不可分的最小数据项。(如,“工资”(包含基本工资、提成、xxx 等)就不能算是一个属性。)

数据库的三级模式

模式

数据库中的(逻辑)模式指 数据库中全体数据的逻辑结构和特征的描述。

一个数据库只有一个模式,设计数据库时应该最先确定数据库的逻辑模式。

外模式

也称 子模式 / 用户模式; 是对数据库用户使用的局部数据的逻辑结构和特征的描述。

模式和外模式的关系是 一对多 的。

  • 外模式一般是模式的子集;一个数据库可以有多种外模式,取决于用户需求、数据保密要求等。
  • 模式中的同一数据在不同外模式中的表现都可以不同。

内模式

内模式是对数据的物理结构和存储方式的描述,是数据在数据库内部的表示方式。

一个数据库只有一个内模式

二级映像

数据库中由两级映像实现三个模式层次的联系和转换。

  • 外模式 / 模式映像
    • 保证数据的逻辑独立性(模式改变,外模式不改变)。
  • 模式 / 内模式映像
    • 保证数据的物理独立性(内模式改变,模式不改变)。 :::

关系数据库

笛卡尔积

nn个集合D1,D2,...,DnD_1, D_2, ..., D_n, 它们的笛卡尔积D1×D2×...×DnD_1 \times D_2 \times ... \times D_n定义为{(d1,d2,...,dn)diDi}\{(d_1, d_2, ..., d_n)\mid d_i \in D_i\}.

笛卡尔乘法不满足交换律

分量

笛卡尔积元素(d1,d2,...,dn)(d_1, d_2, ..., d_n)中的每一个值都叫一个分量。

关系

给定一个域的序列D1,D2,...,DnD_1, D_2, ..., D_n(可能重复), 这些域的笛卡尔积的 子集 称为域D1,D2,...,DnD_1, D_2, ..., D_n上的关系, 表示为R(D1,D2,...,Dn)R(D_1, D_2, ..., D_n)RR为关系名)。

一个在域D1,D2,...,DnD_1, D_2,..., D_n上的nn目关系可以表示为R(A1,A2,...,An)R(A_1, A_2, ..., A_n)AiA_i为属性名)。

关系可以有三种类型

  • 基本关系(基本表):实际存储数据的逻辑表示。
  • 查询表:查询结果对应的表。
  • 视图表:由基本表或者其他表导出的虚表(不储存数据)。

在关系数据库中,关系有多种性质

  • 列同质:每一列中的所有分量数据类型相同。
  • 不同的列可以出自同一个域。
  • 列 / 属性无序。 (笛卡尔积的子集满足交换律)
  • 行唯一(任意两个元组在候选码上的取值不能相同)。
  • 行无序。
  • 分量必须取原子值(不可分)。

(候选)码

如果关系中的某一个属性组的指能唯一标识一个元组且其任何的真子集都不能,则称该属性组为该关系的候选码。

当候选码中包含了关系中的所有属性,则称之为全码。

包含在候选码中的属性被称为主属性;不包含在候选码中的属性称为非主属性。

关系模式

关系模式的形式化表示:R(U,D,DOM,F)R(U, D, DOM, F),简记为R(U)R(U) / R(A1,A2,...,An)R(A_1, A_2, ..., A_n).

  • RR:关系名
  • UU:组成该关系的属性名集合
  • DD:属性来自的域
  • DOMDOM:属性 到 域 的映射集合(描述属性对应的域)
  • FF:属性间数据的依赖关系集合(关系的完整性约束条件)。

关系操作

关系操作大致分为几类:

  • 数据查询
  • 数据更新(插、删、改)
  • 集合操作(并、交、差、笛卡尔积)
  • 关系操作(选择、投影、...)

关系的完整性约束

关系模型中有三类完整性约束:

  • 实体完整性(关系中元组的唯一性)
    • 如果属性AA数据基本关系中主码的属性,则AA在任何元组中不能取空值(null, 不知道/不存在/无意义的值).
  • 参照完整性
    • 外码
      • FF 是基本关系 RR 的一个 / 一组属性,但不是 RR 的码;如果FF和基本关系 SS 的主码 KSK_S 相对应,则称FF是关系RR的外码。
      • 此时基本关系RR称为参照关系(主动),SS 称为被参照关系(被动);RRSS 不一定不同。
    • 若属性FF是基本关系RR的外码且对应基本关系 SS 的主码 KSK_S,则RR中每一个元组的FF的取值必须为以下二者之一(不能取不存在的值):
      • 空值(未分配)
      • S 中某个元组的主码值

用户定义的完整性

针对某一具体关系数据库的约束条件;反应某具体应用涉及的数据需要满足的语义要求。

关系代数

常用运算符

常用的关系代数运算符如下:

符号含义
\cup
-
\cap
×\times笛卡尔积
σ\sigma选择
π\pi投影
\bowtie连接
÷\div
:=:=赋值

常用记号

通用

设关系模式为R(A1,A2,...,An)R(A_1, A_2, ..., A_n),其中的某个关系设为RR.

  • tRt \in R : ttRR的一个元组。
  • t[Ai]t[A_i]:元组tt中属性AiA_i的分量。
  • A={Ai1,Ai2,...,Ain}A = \left\{A_{i1}, A_{i2}, ..., A_{in} \right\}, AikA_ikA1,A2,...,AnA_1, A_2, ..., A_n中的某一个,则称AA为属性集。
  • A\overline{A}表示{A1,A2,...,An}\{A_1, A_2, ..., A_n\}中去掉AA后剩余的属性组。

RRnn目关系,SSmm目关系。

  • trRt_r \in R,tsSt_s \in S,则\overarctr,ts\overarc{t_r, t_s}称为元组的连接(一个n+mn + m列的元组)。

给定一个关系R(X,Z)R(X, Z).

  • t[X]=xt[X] = x时,xxRR中的 像集 为 Zx={t[Z]tR,t[X]=x}Z_x = \left\{t[Z] \mid t \in R, t[X] = x\right\}

RRnn目关系,有k1k_1个元组;设SSmm目关系,有k2k_2个元组。

R×S={\overarctr,tstrRtSS}R \times S = \{ \overarc{t_r, t_s} \mid t_r \in R \wedge t_S \in S \}.

选择

在关系 R 中选择满足给定条件的元组

σF(R)={ttRF(t)=/}\sigma _F(R) = \left\{t \mid t \in R \wedge F(t) = '真' / '假' \right\}.

_式中FF为选择条件,取布尔值;基本形式为 X1Y1X_1 \star Y_1, 其中\star可取>,,<,,=,<>> , \ge , < , \le , = , <>(不等比较).

投影

在关系 R 中选择若干属性列组成新的关系(投影)

πA(R)={t[A]tR}\pi_A(R) = \{t[A] \mid t \in R\}.

投影之后不仅消除了一部分列,可能还需要消除某些元组(避免重复。)

连接

在两个关系的笛卡尔积中选择属性满足一定条件的元组并连接

  • 连接(θ\theta连接)
    • RAθBS={\overarctrtstRRtSS(tr[A]θtr[B])}R \bowtie_{A \theta B} S = \{\overarc{t_r t_s} \mid t_R \in R \wedge t_S \in S \wedge (t_r[A] \theta t_r[B])\}.

式中θ\theta比较运算符;根据θ\theta的类型将连接分为不同的连接类型。

  • 自然连接(特殊的等值连接)

    • 两个关系中使用相同的属性组进行比较;
    • 在结果中去掉重复的属性列。
  • 悬浮元组:关系 R 和 S 做自然连接时,R 中的某些元组拥有 S 中不存在相等的属性值的元组;这些元组在操作时被舍弃。

  • 外连接:在自然连接的基础上,将悬浮元组中的空填上空值(null

    • 左 / 右外连接:只保留 R / S 中的悬浮元组

给定关系R(X,Y)R(X, Y)S(Y,Z)S(Y, Z).

R÷S={tr[X]trRπY(S)Yx}R \div S = \{t_r[X] \mid t_r \in R \wedge \pi_Y(S)\subseteq{Y_x}\}.

其中,x=tr[X]x = t_r[X].

// 如何理解:(RR中所有的 (YY属性集的值在 (SS中的 (YY属性集的值) 中出现过的)) 元组)在XX属性集上的投影。

赋值

R(A1,A2,...,An):=<expr>R(A_1, A_2, ..., A_n) := <expr>. 或 R:=<expr>R := <expr>

其中exprexpr是关系代数表达式 / 一个已经存在的关系,用于表示数据的操纵请求。

前者是将表达式的值赋予R,后者是将表达式的值保存成为临时关系R。